package tezos-protocol-008-PtEdo2Zk

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type var_annot =
  1. | Var_annot of string
type type_annot =
  1. | Type_annot of string
type field_annot =
  1. | Field_annot of string
type address = Alpha_context.Contract.t * string
type ('a, 'b) pair = 'a * 'b
type ('a, 'b) union =
  1. | L of 'a
  2. | R of 'b
type never = |
type _ comparable_ty =
  1. | Unit_key : type_annot option -> unit comparable_ty
  2. | Never_key : type_annot option -> never comparable_ty
  3. | Int_key : type_annot option -> Alpha_context.Script_int.z Alpha_context.Script_int.num comparable_ty
  4. | Nat_key : type_annot option -> Alpha_context.Script_int.n Alpha_context.Script_int.num comparable_ty
  5. | Signature_key : type_annot option -> Alpha_context.signature comparable_ty
  6. | String_key : type_annot option -> string comparable_ty
  7. | Bytes_key : type_annot option -> bytes comparable_ty
  8. | Mutez_key : type_annot option -> Alpha_context.Tez.t comparable_ty
  9. | Bool_key : type_annot option -> bool comparable_ty
  10. | Key_hash_key : type_annot option -> Alpha_context.public_key_hash comparable_ty
  11. | Key_key : type_annot option -> Alpha_context.public_key comparable_ty
  12. | Timestamp_key : type_annot option -> Alpha_context.Script_timestamp.t comparable_ty
  13. | Chain_id_key : type_annot option -> Tezos_crypto.Chain_id.t comparable_ty
  14. | Address_key : type_annot option -> address comparable_ty
  15. | Pair_key : ('a comparable_ty * field_annot option) * ('b comparable_ty * field_annot option) * type_annot option -> ('a, 'b) pair comparable_ty
  16. | Union_key : ('a comparable_ty * field_annot option) * ('b comparable_ty * field_annot option) * type_annot option -> ('a, 'b) union comparable_ty
  17. | Option_key : 'v comparable_ty * type_annot option -> 'v option comparable_ty
module type Boxed_set = sig ... end
type 'elt set = (module Boxed_set with type elt = 'elt)
module type Boxed_map = sig ... end
type ('key, 'value) map = (module Boxed_map with type key = 'key and type value = 'value)
type 'a ticket = {
  1. ticketer : address;
  2. contents : 'a;
  3. amount : Alpha_context.Script_int.n Alpha_context.Script_int.num;
}
type ('arg, 'storage) script = {
  1. code : (('arg, 'storage) pair, (operation boxed_list, 'storage) pair) lambda;
  2. arg_type : 'arg ty;
  3. storage : 'storage;
  4. storage_type : 'storage ty;
  5. root_name : field_annot option;
}
and end_of_stack = unit
and ('arg, 'ret) lambda =
  1. | Lam : ('arg * end_of_stack, 'ret * end_of_stack) descr * Alpha_context.Script.node -> ('arg, 'ret) lambda
and 'arg typed_contract = 'arg ty * address
and 'ty ty =
  1. | Unit_t : type_annot option -> unit ty
  2. | Int_t : type_annot option -> Alpha_context.Script_int.z Alpha_context.Script_int.num ty
  3. | Nat_t : type_annot option -> Alpha_context.Script_int.n Alpha_context.Script_int.num ty
  4. | Signature_t : type_annot option -> Alpha_context.signature ty
  5. | String_t : type_annot option -> string ty
  6. | Bytes_t : type_annot option -> bytes ty
  7. | Mutez_t : type_annot option -> Alpha_context.Tez.t ty
  8. | Key_hash_t : type_annot option -> Alpha_context.public_key_hash ty
  9. | Key_t : type_annot option -> Alpha_context.public_key ty
  10. | Timestamp_t : type_annot option -> Alpha_context.Script_timestamp.t ty
  11. | Address_t : type_annot option -> address ty
  12. | Bool_t : type_annot option -> bool ty
  13. | Pair_t : ('a ty * field_annot option * var_annot option) * ('b ty * field_annot option * var_annot option) * type_annot option -> ('a, 'b) pair ty
  14. | Union_t : ('a ty * field_annot option) * ('b ty * field_annot option) * type_annot option -> ('a, 'b) union ty
  15. | Lambda_t : 'arg ty * 'ret ty * type_annot option -> ('arg, 'ret) lambda ty
  16. | Option_t : 'v ty * type_annot option -> 'v option ty
  17. | List_t : 'v ty * type_annot option -> 'v boxed_list ty
  18. | Set_t : 'v comparable_ty * type_annot option -> 'v set ty
  19. | Map_t : 'k comparable_ty * 'v ty * type_annot option -> ('k, 'v) map ty
  20. | Big_map_t : 'k comparable_ty * 'v ty * type_annot option -> ('k, 'v) big_map ty
  21. | Contract_t : 'arg ty * type_annot option -> 'arg typed_contract ty
  22. | Sapling_transaction_t : Alpha_context.Sapling.Memo_size.t * type_annot option -> Alpha_context.Sapling.transaction ty
  23. | Sapling_state_t : Alpha_context.Sapling.Memo_size.t * type_annot option -> Alpha_context.Sapling.state ty
  24. | Operation_t : type_annot option -> operation ty
  25. | Chain_id_t : type_annot option -> Tezos_crypto.Chain_id.t ty
  26. | Never_t : type_annot option -> never ty
  27. | Bls12_381_g1_t : type_annot option -> Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t ty
  28. | Bls12_381_g2_t : type_annot option -> Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t ty
  29. | Bls12_381_fr_t : type_annot option -> Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t ty
  30. | Ticket_t : 'a comparable_ty * type_annot option -> 'a ticket ty
and 'ty stack_ty =
  1. | Item_t : 'ty ty * 'rest stack_ty * var_annot option -> ('ty * 'rest) stack_ty
  2. | Empty_t : end_of_stack stack_ty
and ('key, 'value) big_map = {
  1. id : Alpha_context.Big_map.Id.t option;
  2. diff : ('key, 'value option) map;
  3. key_type : 'key comparable_ty;
  4. value_type : 'value ty;
}
and 'elt boxed_list = {
  1. elements : 'elt list;
  2. length : int;
}
and ('bef, 'aft) instr =
  1. | Drop : (_ * 'rest, 'rest) instr
  2. | Dup : ('top * 'rest, 'top * ('top * 'rest)) instr
  3. | Swap : ('tip * ('top * 'rest), 'top * ('tip * 'rest)) instr
  4. | Const : 'ty -> ('rest, 'ty * 'rest) instr
  5. | Cons_pair : ('car * ('cdr * 'rest), ('car, 'cdr) pair * 'rest) instr
  6. | Car : (('car, _) pair * 'rest, 'car * 'rest) instr
  7. | Cdr : ((_, 'cdr) pair * 'rest, 'cdr * 'rest) instr
  8. | Unpair : (('car, 'cdr) pair * 'rest, 'car * ('cdr * 'rest)) instr
  9. | Cons_some : ('v * 'rest, 'v option * 'rest) instr
  10. | Cons_none : 'a ty -> ('rest, 'a option * 'rest) instr
  11. | If_none : ('bef, 'aft) descr * ('a * 'bef, 'aft) descr -> ('a option * 'bef, 'aft) instr
  12. | Cons_left : ('l * 'rest, ('l, 'r) union * 'rest) instr
  13. | Cons_right : ('r * 'rest, ('l, 'r) union * 'rest) instr
  14. | If_left : ('l * 'bef, 'aft) descr * ('r * 'bef, 'aft) descr -> (('l, 'r) union * 'bef, 'aft) instr
  15. | Cons_list : ('a * ('a boxed_list * 'rest), 'a boxed_list * 'rest) instr
  16. | Nil : ('rest, 'a boxed_list * 'rest) instr
  17. | If_cons : ('a * ('a boxed_list * 'bef), 'aft) descr * ('bef, 'aft) descr -> ('a boxed_list * 'bef, 'aft) instr
  18. | List_map : ('a * 'rest, 'b * 'rest) descr -> ('a boxed_list * 'rest, 'b boxed_list * 'rest) instr
  19. | List_iter : ('a * 'rest, 'rest) descr -> ('a boxed_list * 'rest, 'rest) instr
  20. | List_size : ('a boxed_list * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  21. | Empty_set : 'a comparable_ty -> ('rest, 'a set * 'rest) instr
  22. | Set_iter : ('a * 'rest, 'rest) descr -> ('a set * 'rest, 'rest) instr
  23. | Set_mem : ('elt * ('elt set * 'rest), bool * 'rest) instr
  24. | Set_update : ('elt * (bool * ('elt set * 'rest)), 'elt set * 'rest) instr
  25. | Set_size : ('a set * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  26. | Empty_map : 'a comparable_ty * 'v ty -> ('rest, ('a, 'v) map * 'rest) instr
  27. | Map_map : (('a * 'v) * 'rest, 'r * 'rest) descr -> (('a, 'v) map * 'rest, ('a, 'r) map * 'rest) instr
  28. | Map_iter : (('a * 'v) * 'rest, 'rest) descr -> (('a, 'v) map * 'rest, 'rest) instr
  29. | Map_mem : ('a * (('a, 'v) map * 'rest), bool * 'rest) instr
  30. | Map_get : ('a * (('a, 'v) map * 'rest), 'v option * 'rest) instr
  31. | Map_update : ('a * ('v option * (('a, 'v) map * 'rest)), ('a, 'v) map * 'rest) instr
  32. | Map_get_and_update : ('a * ('v option * (('a, 'v) map * 'rest)), 'v option * (('a, 'v) map * 'rest)) instr
  33. | Map_size : (('a, 'b) map * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  34. | Empty_big_map : 'a comparable_ty * 'v ty -> ('rest, ('a, 'v) big_map * 'rest) instr
  35. | Big_map_mem : ('a * (('a, 'v) big_map * 'rest), bool * 'rest) instr
  36. | Big_map_get : ('a * (('a, 'v) big_map * 'rest), 'v option * 'rest) instr
  37. | Big_map_update : ('key * ('value option * (('key, 'value) big_map * 'rest)), ('key, 'value) big_map * 'rest) instr
  38. | Big_map_get_and_update : ('a * ('v option * (('a, 'v) big_map * 'rest)), 'v option * (('a, 'v) big_map * 'rest)) instr
  39. | Concat_string : (string boxed_list * 'rest, string * 'rest) instr
  40. | Concat_string_pair : (string * (string * 'rest), string * 'rest) instr
  41. | Slice_string : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * (string * 'rest)), string option * 'rest) instr
  42. | String_size : (string * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  43. | Concat_bytes : (bytes boxed_list * 'rest, bytes * 'rest) instr
  44. | Concat_bytes_pair : (bytes * (bytes * 'rest), bytes * 'rest) instr
  45. | Slice_bytes : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * (bytes * 'rest)), bytes option * 'rest) instr
  46. | Bytes_size : (bytes * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  47. | Add_seconds_to_timestamp : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_timestamp.t * 'rest), Alpha_context.Script_timestamp.t * 'rest) instr
  48. | Add_timestamp_to_seconds : (Alpha_context.Script_timestamp.t * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_timestamp.t * 'rest) instr
  49. | Sub_timestamp_seconds : (Alpha_context.Script_timestamp.t * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_timestamp.t * 'rest) instr
  50. | Diff_timestamps : (Alpha_context.Script_timestamp.t * (Alpha_context.Script_timestamp.t * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  51. | Add_tez : (Alpha_context.Tez.t * (Alpha_context.Tez.t * 'rest), Alpha_context.Tez.t * 'rest) instr
  52. | Sub_tez : (Alpha_context.Tez.t * (Alpha_context.Tez.t * 'rest), Alpha_context.Tez.t * 'rest) instr
  53. | Mul_teznat : (Alpha_context.Tez.t * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Tez.t * 'rest) instr
  54. | Mul_nattez : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Tez.t * 'rest), Alpha_context.Tez.t * 'rest) instr
  55. | Ediv_teznat : (Alpha_context.Tez.t * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), (Alpha_context.Tez.t, Alpha_context.Tez.t) pair option * 'rest) instr
  56. | Ediv_tez : (Alpha_context.Tez.t * (Alpha_context.Tez.t * 'rest), (Alpha_context.Script_int.n Alpha_context.Script_int.num, Alpha_context.Tez.t) pair option * 'rest) instr
  57. | Or : (bool * (bool * 'rest), bool * 'rest) instr
  58. | And : (bool * (bool * 'rest), bool * 'rest) instr
  59. | Xor : (bool * (bool * 'rest), bool * 'rest) instr
  60. | Not : (bool * 'rest, bool * 'rest) instr
  61. | Is_nat : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num option * 'rest) instr
  62. | Neg_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  63. | Neg_int : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  64. | Abs_int : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  65. | Int_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  66. | Add_intint : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  67. | Add_intnat : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  68. | Add_natint : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  69. | Add_natnat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  70. | Sub_int : ('s Alpha_context.Script_int.num * ('t Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  71. | Mul_intint : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  72. | Mul_intnat : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  73. | Mul_natint : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  74. | Mul_natnat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  75. | Ediv_intint : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), (Alpha_context.Script_int.z Alpha_context.Script_int.num, Alpha_context.Script_int.n Alpha_context.Script_int.num) pair option * 'rest) instr
  76. | Ediv_intnat : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), (Alpha_context.Script_int.z Alpha_context.Script_int.num, Alpha_context.Script_int.n Alpha_context.Script_int.num) pair option * 'rest) instr
  77. | Ediv_natint : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest), (Alpha_context.Script_int.z Alpha_context.Script_int.num, Alpha_context.Script_int.n Alpha_context.Script_int.num) pair option * 'rest) instr
  78. | Ediv_natnat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), (Alpha_context.Script_int.n Alpha_context.Script_int.num, Alpha_context.Script_int.n Alpha_context.Script_int.num) pair option * 'rest) instr
  79. | Lsl_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  80. | Lsr_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  81. | Or_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  82. | And_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  83. | And_int_nat : (Alpha_context.Script_int.z Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  84. | Xor_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  85. | Not_nat : (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  86. | Not_int : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  87. | Seq : ('bef, 'trans) descr * ('trans, 'aft) descr -> ('bef, 'aft) instr
  88. | If : ('bef, 'aft) descr * ('bef, 'aft) descr -> (bool * 'bef, 'aft) instr
  89. | Loop : ('rest, bool * 'rest) descr -> (bool * 'rest, 'rest) instr
  90. | Loop_left : ('a * 'rest, ('a, 'b) union * 'rest) descr -> (('a, 'b) union * 'rest, 'b * 'rest) instr
  91. | Dip : ('bef, 'aft) descr -> ('top * 'bef, 'top * 'aft) instr
  92. | Exec : ('arg * (('arg, 'ret) lambda * 'rest), 'ret * 'rest) instr
  93. | Apply : 'arg ty -> ('arg * (('arg * 'remaining, 'ret) lambda * 'rest), ('remaining, 'ret) lambda * 'rest) instr
  94. | Lambda : ('arg, 'ret) lambda -> ('rest, ('arg, 'ret) lambda * 'rest) instr
  95. | Failwith : 'a ty -> ('a * 'rest, 'aft) instr
  96. | Nop : ('rest, 'rest) instr
  97. | Compare : 'a comparable_ty -> ('a * ('a * 'rest), Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  98. | Eq : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  99. | Neq : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  100. | Lt : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  101. | Gt : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  102. | Le : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  103. | Ge : (Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest, bool * 'rest) instr
  104. | Address : (_ typed_contract * 'rest, address * 'rest) instr
  105. | Contract : 'p ty * string -> (address * 'rest, 'p typed_contract option * 'rest) instr
  106. | Transfer_tokens : ('arg * (Alpha_context.Tez.t * ('arg typed_contract * 'rest)), operation * 'rest) instr
  107. | Implicit_account : (Alpha_context.public_key_hash * 'rest, unit typed_contract * 'rest) instr
  108. | Create_contract : 'g ty * 'p ty * ('p * 'g, operation boxed_list * 'g) lambda * field_annot option -> (Alpha_context.public_key_hash option * (Alpha_context.Tez.t * ('g * 'rest)), operation * (address * 'rest)) instr
  109. | Set_delegate : (Alpha_context.public_key_hash option * 'rest, operation * 'rest) instr
  110. | Now : ('rest, Alpha_context.Script_timestamp.t * 'rest) instr
  111. | Balance : ('rest, Alpha_context.Tez.t * 'rest) instr
  112. | Level : ('rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  113. | Check_signature : (Alpha_context.public_key * (Alpha_context.signature * (bytes * 'rest)), bool * 'rest) instr
  114. | Hash_key : (Alpha_context.public_key * 'rest, Alpha_context.public_key_hash * 'rest) instr
  115. | Pack : 'a ty -> ('a * 'rest, bytes * 'rest) instr
  116. | Unpack : 'a ty -> (bytes * 'rest, 'a option * 'rest) instr
  117. | Blake2b : (bytes * 'rest, bytes * 'rest) instr
  118. | Sha256 : (bytes * 'rest, bytes * 'rest) instr
  119. | Sha512 : (bytes * 'rest, bytes * 'rest) instr
  120. | Source : ('rest, address * 'rest) instr
  121. | Sender : ('rest, address * 'rest) instr
  122. | Self : 'p ty * string -> ('rest, 'p typed_contract * 'rest) instr
  123. | Self_address : ('rest, address * 'rest) instr
  124. | Amount : ('rest, Alpha_context.Tez.t * 'rest) instr
  125. | Sapling_empty_state : {
    1. memo_size : Alpha_context.Sapling.Memo_size.t;
    } -> ('rest, Alpha_context.Sapling.state * 'rest) instr
  126. | Sapling_verify_update : (Alpha_context.Sapling.transaction * (Alpha_context.Sapling.state * 'rest), (Alpha_context.Script_int.z Alpha_context.Script_int.num, Alpha_context.Sapling.state) pair option * 'rest) instr
  127. | Dig : int * ('x * 'rest, 'rest, 'bef, 'aft) stack_prefix_preservation_witness -> ('bef, 'x * 'aft) instr
  128. | Dug : int * ('rest, 'x * 'rest, 'bef, 'aft) stack_prefix_preservation_witness -> ('x * 'bef, 'aft) instr
  129. | Dipn : int * ('fbef, 'faft, 'bef, 'aft) stack_prefix_preservation_witness * ('fbef, 'faft) descr -> ('bef, 'aft) instr
  130. | Dropn : int * ('rest, 'rest, 'bef, _) stack_prefix_preservation_witness -> ('bef, 'rest) instr
  131. | ChainId : ('rest, Tezos_crypto.Chain_id.t * 'rest) instr
  132. | Never : (never * 'rest, 'aft) instr
  133. | Voting_power : (Alpha_context.public_key_hash * 'rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  134. | Total_voting_power : ('rest, Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest) instr
  135. | Keccak : (bytes * 'rest, bytes * 'rest) instr
  136. | Sha3 : (bytes * 'rest, bytes * 'rest) instr
  137. | Add_bls12_381_g1 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * 'rest) instr
  138. | Add_bls12_381_g2 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * 'rest) instr
  139. | Add_bls12_381_fr : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest) instr
  140. | Mul_bls12_381_g1 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * 'rest) instr
  141. | Mul_bls12_381_g2 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * 'rest) instr
  142. | Mul_bls12_381_fr : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest) instr
  143. | Mul_bls12_381_z_fr : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * (_ Alpha_context.Script_int.num * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest) instr
  144. | Mul_bls12_381_fr_z : (_ Alpha_context.Script_int.num * (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest), Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest) instr
  145. | Int_bls12_381_fr : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest, Alpha_context.Script_int.z Alpha_context.Script_int.num * 'rest) instr
  146. | Neg_bls12_381_g1 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * 'rest, Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t * 'rest) instr
  147. | Neg_bls12_381_g2 : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * 'rest, Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t * 'rest) instr
  148. | Neg_bls12_381_fr : (Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest, Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.Fr.t * 'rest) instr
  149. | Pairing_check_bls12_381 : ((Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G1.t, Tezos_protocol_environment_008_PtEdo2Zk__Environment.Bls12_381.G2.t) pair boxed_list * 'rest, bool * 'rest) instr
  150. | Comb : int * ('before, 'after) comb_gadt_witness -> ('before, 'after) instr
  151. | Uncomb : int * ('before, 'after) uncomb_gadt_witness -> ('before, 'after) instr
  152. | Comb_get : int * ('before, 'after) comb_get_gadt_witness -> ('before * 'rest, 'after * 'rest) instr
  153. | Comb_set : int * ('value, 'before, 'after) comb_set_gadt_witness -> ('value * ('before * 'rest), 'after * 'rest) instr
  154. | Dup_n : int * ('before, 'after) dup_n_gadt_witness -> ('before, 'after * 'before) instr
  155. | Ticket : ('a * (Alpha_context.Script_int.n Alpha_context.Script_int.num * 'rest), 'a ticket * 'rest) instr
  156. | Read_ticket : ('a ticket * 'rest, (address * ('a * Alpha_context.Script_int.n Alpha_context.Script_int.num)) * ('a ticket * 'rest)) instr
  157. | Split_ticket : ('a ticket * ((Alpha_context.Script_int.n Alpha_context.Script_int.num * Alpha_context.Script_int.n Alpha_context.Script_int.num) * 'rest), ('a ticket * 'a ticket) option * 'rest) instr
  158. | Join_tickets : 'a comparable_ty -> (('a ticket * 'a ticket) * 'rest, 'a ticket option * 'rest) instr
and ('before, 'after) comb_gadt_witness =
  1. | Comb_one : ('a * 'before, 'a * 'before) comb_gadt_witness
  2. | Comb_succ : ('before, 'b * 'after) comb_gadt_witness -> ('a * 'before, ('a * 'b) * 'after) comb_gadt_witness
and ('before, 'after) uncomb_gadt_witness =
  1. | Uncomb_one : ('rest, 'rest) uncomb_gadt_witness
  2. | Uncomb_succ : ('b * 'before, 'after) uncomb_gadt_witness -> (('a * 'b) * 'before, 'a * 'after) uncomb_gadt_witness
and ('before, 'after) comb_get_gadt_witness =
  1. | Comb_get_zero : ('b, 'b) comb_get_gadt_witness
  2. | Comb_get_one : ('a * 'b, 'a) comb_get_gadt_witness
  3. | Comb_get_plus_two : ('before, 'after) comb_get_gadt_witness -> ('a * 'before, 'after) comb_get_gadt_witness
and ('value, 'before, 'after) comb_set_gadt_witness =
  1. | Comb_set_zero : ('value, _, 'value) comb_set_gadt_witness
  2. | Comb_set_one : ('value, 'hd * 'tl, 'value * 'tl) comb_set_gadt_witness
  3. | Comb_set_plus_two : ('value, 'before, 'after) comb_set_gadt_witness -> ('value, 'a * 'before, 'a * 'after) comb_set_gadt_witness
and ('before, 'after) dup_n_gadt_witness =
  1. | Dup_n_zero : ('a * 'rest, 'a) dup_n_gadt_witness
  2. | Dup_n_succ : ('before, 'b) dup_n_gadt_witness -> ('a * 'before, 'b) dup_n_gadt_witness
and ('bef, 'aft, 'bef_suffix, 'aft_suffix) stack_prefix_preservation_witness =
  1. | Prefix : ('fbef, 'faft, 'bef, 'aft) stack_prefix_preservation_witness -> ('fbef, 'faft, 'x * 'bef, 'x * 'aft) stack_prefix_preservation_witness
  2. | Rest : ('bef, 'aft, 'bef, 'aft) stack_prefix_preservation_witness
and ('bef, 'aft) descr = {
  1. loc : Alpha_context.Script.location;
  2. bef : 'bef stack_ty;
  3. aft : 'aft stack_ty;
  4. instr : ('bef, 'aft) instr;
}