From 6d1ced2c43bba034843f490301a59a41264be7f7 Mon Sep 17 00:00:00 2001 From: Guillaume Claret Date: Tue, 14 May 2024 20:25:58 +0200 Subject: [PATCH 1/2] Print classes as records --- CoqOfPython/CoqOfPython.v | 42 +- CoqOfPython/ethereum/arrow_glacier/blocks.v | 74 +- CoqOfPython/ethereum/arrow_glacier/fork.v | 34 +- .../ethereum/arrow_glacier/fork_types.v | 17 +- CoqOfPython/ethereum/arrow_glacier/state.v | 17 +- .../ethereum/arrow_glacier/transactions.v | 51 +- CoqOfPython/ethereum/arrow_glacier/trie.v | 73 +- .../ethereum/arrow_glacier/vm/__init__.v | 51 +- .../ethereum/arrow_glacier/vm/exceptions.v | 281 +- CoqOfPython/ethereum/arrow_glacier/vm/gas.v | 36 +- .../arrow_glacier/vm/instructions/__init__.v | 18 +- .../ethereum/arrow_glacier/vm/interpreter.v | 17 +- CoqOfPython/ethereum/base_types.v | 7512 +++++++++-------- CoqOfPython/ethereum/berlin/blocks.v | 74 +- CoqOfPython/ethereum/berlin/fork.v | 34 +- CoqOfPython/ethereum/berlin/fork_types.v | 17 +- CoqOfPython/ethereum/berlin/state.v | 17 +- CoqOfPython/ethereum/berlin/transactions.v | 36 +- CoqOfPython/ethereum/berlin/trie.v | 73 +- CoqOfPython/ethereum/berlin/vm/__init__.v | 51 +- CoqOfPython/ethereum/berlin/vm/exceptions.v | 261 +- CoqOfPython/ethereum/berlin/vm/gas.v | 36 +- .../berlin/vm/instructions/__init__.v | 18 +- CoqOfPython/ethereum/berlin/vm/interpreter.v | 17 +- CoqOfPython/ethereum/byzantium/blocks.v | 74 +- CoqOfPython/ethereum/byzantium/fork.v | 34 +- CoqOfPython/ethereum/byzantium/fork_types.v | 17 +- CoqOfPython/ethereum/byzantium/state.v | 17 +- CoqOfPython/ethereum/byzantium/transactions.v | 17 +- CoqOfPython/ethereum/byzantium/trie.v | 73 +- CoqOfPython/ethereum/byzantium/vm/__init__.v | 55 +- .../ethereum/byzantium/vm/exceptions.v | 241 +- CoqOfPython/ethereum/byzantium/vm/gas.v | 36 +- .../byzantium/vm/instructions/__init__.v | 18 +- .../ethereum/byzantium/vm/interpreter.v | 17 +- CoqOfPython/ethereum/cancun/blocks.v | 93 +- CoqOfPython/ethereum/cancun/fork.v | 34 +- CoqOfPython/ethereum/cancun/fork_types.v | 17 +- CoqOfPython/ethereum/cancun/state.v | 36 +- CoqOfPython/ethereum/cancun/transactions.v | 74 +- CoqOfPython/ethereum/cancun/trie.v | 73 +- CoqOfPython/ethereum/cancun/vm/__init__.v | 51 +- CoqOfPython/ethereum/cancun/vm/exceptions.v | 301 +- CoqOfPython/ethereum/cancun/vm/gas.v | 36 +- .../cancun/vm/instructions/__init__.v | 18 +- CoqOfPython/ethereum/cancun/vm/interpreter.v | 17 +- CoqOfPython/ethereum/constantinople/blocks.v | 74 +- CoqOfPython/ethereum/constantinople/fork.v | 34 +- .../ethereum/constantinople/fork_types.v | 17 +- CoqOfPython/ethereum/constantinople/state.v | 17 +- .../ethereum/constantinople/transactions.v | 17 +- CoqOfPython/ethereum/constantinople/trie.v | 73 +- .../ethereum/constantinople/vm/__init__.v | 55 +- .../ethereum/constantinople/vm/exceptions.v | 241 +- CoqOfPython/ethereum/constantinople/vm/gas.v | 36 +- .../constantinople/vm/instructions/__init__.v | 18 +- .../ethereum/constantinople/vm/interpreter.v | 17 +- CoqOfPython/ethereum/crypto/alt_bn128.v | 273 +- CoqOfPython/ethereum/crypto/blake2.v | 1154 +-- CoqOfPython/ethereum/crypto/elliptic_curve.v | 1030 +-- CoqOfPython/ethereum/crypto/finite_field.v | 3648 ++++---- CoqOfPython/ethereum/dao_fork/blocks.v | 74 +- CoqOfPython/ethereum/dao_fork/fork.v | 34 +- CoqOfPython/ethereum/dao_fork/fork_types.v | 17 +- CoqOfPython/ethereum/dao_fork/state.v | 17 +- CoqOfPython/ethereum/dao_fork/transactions.v | 17 +- CoqOfPython/ethereum/dao_fork/trie.v | 73 +- CoqOfPython/ethereum/dao_fork/vm/__init__.v | 55 +- CoqOfPython/ethereum/dao_fork/vm/exceptions.v | 181 +- CoqOfPython/ethereum/dao_fork/vm/gas.v | 36 +- .../dao_fork/vm/instructions/__init__.v | 18 +- .../ethereum/dao_fork/vm/interpreter.v | 17 +- CoqOfPython/ethereum/exceptions.v | 78 +- CoqOfPython/ethereum/fork_criteria.v | 462 +- CoqOfPython/ethereum/frontier/blocks.v | 74 +- CoqOfPython/ethereum/frontier/fork.v | 34 +- CoqOfPython/ethereum/frontier/fork_types.v | 17 +- CoqOfPython/ethereum/frontier/state.v | 17 +- CoqOfPython/ethereum/frontier/transactions.v | 17 +- CoqOfPython/ethereum/frontier/trie.v | 73 +- CoqOfPython/ethereum/frontier/vm/__init__.v | 55 +- CoqOfPython/ethereum/frontier/vm/exceptions.v | 181 +- CoqOfPython/ethereum/frontier/vm/gas.v | 36 +- .../frontier/vm/instructions/__init__.v | 18 +- .../ethereum/frontier/vm/interpreter.v | 17 +- CoqOfPython/ethereum/genesis.v | 17 +- CoqOfPython/ethereum/gray_glacier/blocks.v | 74 +- CoqOfPython/ethereum/gray_glacier/fork.v | 34 +- .../ethereum/gray_glacier/fork_types.v | 17 +- CoqOfPython/ethereum/gray_glacier/state.v | 17 +- .../ethereum/gray_glacier/transactions.v | 51 +- CoqOfPython/ethereum/gray_glacier/trie.v | 73 +- .../ethereum/gray_glacier/vm/__init__.v | 51 +- .../ethereum/gray_glacier/vm/exceptions.v | 281 +- CoqOfPython/ethereum/gray_glacier/vm/gas.v | 36 +- .../gray_glacier/vm/instructions/__init__.v | 18 +- .../ethereum/gray_glacier/vm/interpreter.v | 17 +- CoqOfPython/ethereum/homestead/blocks.v | 74 +- CoqOfPython/ethereum/homestead/fork.v | 34 +- CoqOfPython/ethereum/homestead/fork_types.v | 17 +- CoqOfPython/ethereum/homestead/state.v | 17 +- CoqOfPython/ethereum/homestead/transactions.v | 17 +- CoqOfPython/ethereum/homestead/trie.v | 73 +- CoqOfPython/ethereum/homestead/vm/__init__.v | 55 +- .../ethereum/homestead/vm/exceptions.v | 181 +- CoqOfPython/ethereum/homestead/vm/gas.v | 36 +- .../homestead/vm/instructions/__init__.v | 18 +- .../ethereum/homestead/vm/interpreter.v | 17 +- CoqOfPython/ethereum/istanbul/blocks.v | 74 +- CoqOfPython/ethereum/istanbul/fork.v | 34 +- CoqOfPython/ethereum/istanbul/fork_types.v | 17 +- CoqOfPython/ethereum/istanbul/state.v | 17 +- CoqOfPython/ethereum/istanbul/transactions.v | 17 +- CoqOfPython/ethereum/istanbul/trie.v | 73 +- CoqOfPython/ethereum/istanbul/vm/__init__.v | 55 +- CoqOfPython/ethereum/istanbul/vm/exceptions.v | 261 +- CoqOfPython/ethereum/istanbul/vm/gas.v | 36 +- .../istanbul/vm/instructions/__init__.v | 18 +- .../ethereum/istanbul/vm/interpreter.v | 17 +- CoqOfPython/ethereum/london/blocks.v | 74 +- CoqOfPython/ethereum/london/fork.v | 34 +- CoqOfPython/ethereum/london/fork_types.v | 17 +- CoqOfPython/ethereum/london/state.v | 17 +- CoqOfPython/ethereum/london/transactions.v | 51 +- CoqOfPython/ethereum/london/trie.v | 73 +- CoqOfPython/ethereum/london/vm/__init__.v | 51 +- CoqOfPython/ethereum/london/vm/exceptions.v | 281 +- CoqOfPython/ethereum/london/vm/gas.v | 36 +- .../london/vm/instructions/__init__.v | 18 +- CoqOfPython/ethereum/london/vm/interpreter.v | 17 +- CoqOfPython/ethereum/muir_glacier/blocks.v | 74 +- CoqOfPython/ethereum/muir_glacier/fork.v | 34 +- .../ethereum/muir_glacier/fork_types.v | 17 +- CoqOfPython/ethereum/muir_glacier/state.v | 17 +- .../ethereum/muir_glacier/transactions.v | 17 +- CoqOfPython/ethereum/muir_glacier/trie.v | 73 +- .../ethereum/muir_glacier/vm/__init__.v | 55 +- .../ethereum/muir_glacier/vm/exceptions.v | 261 +- CoqOfPython/ethereum/muir_glacier/vm/gas.v | 36 +- .../muir_glacier/vm/instructions/__init__.v | 18 +- .../ethereum/muir_glacier/vm/interpreter.v | 17 +- CoqOfPython/ethereum/paris/blocks.v | 74 +- CoqOfPython/ethereum/paris/fork.v | 34 +- CoqOfPython/ethereum/paris/fork_types.v | 17 +- CoqOfPython/ethereum/paris/state.v | 17 +- CoqOfPython/ethereum/paris/transactions.v | 51 +- CoqOfPython/ethereum/paris/trie.v | 73 +- CoqOfPython/ethereum/paris/vm/__init__.v | 51 +- CoqOfPython/ethereum/paris/vm/exceptions.v | 281 +- CoqOfPython/ethereum/paris/vm/gas.v | 36 +- .../ethereum/paris/vm/instructions/__init__.v | 18 +- CoqOfPython/ethereum/paris/vm/interpreter.v | 17 +- CoqOfPython/ethereum/shanghai/blocks.v | 93 +- CoqOfPython/ethereum/shanghai/fork.v | 34 +- CoqOfPython/ethereum/shanghai/fork_types.v | 17 +- CoqOfPython/ethereum/shanghai/state.v | 17 +- CoqOfPython/ethereum/shanghai/transactions.v | 51 +- CoqOfPython/ethereum/shanghai/trie.v | 73 +- CoqOfPython/ethereum/shanghai/vm/__init__.v | 51 +- CoqOfPython/ethereum/shanghai/vm/exceptions.v | 281 +- CoqOfPython/ethereum/shanghai/vm/gas.v | 36 +- .../shanghai/vm/instructions/__init__.v | 18 +- .../ethereum/shanghai/vm/interpreter.v | 17 +- CoqOfPython/ethereum/spurious_dragon/blocks.v | 74 +- CoqOfPython/ethereum/spurious_dragon/fork.v | 34 +- .../ethereum/spurious_dragon/fork_types.v | 17 +- CoqOfPython/ethereum/spurious_dragon/state.v | 17 +- .../ethereum/spurious_dragon/transactions.v | 17 +- CoqOfPython/ethereum/spurious_dragon/trie.v | 73 +- .../ethereum/spurious_dragon/vm/__init__.v | 55 +- .../ethereum/spurious_dragon/vm/exceptions.v | 181 +- CoqOfPython/ethereum/spurious_dragon/vm/gas.v | 36 +- .../vm/instructions/__init__.v | 18 +- .../ethereum/spurious_dragon/vm/interpreter.v | 17 +- .../ethereum/tangerine_whistle/blocks.v | 74 +- CoqOfPython/ethereum/tangerine_whistle/fork.v | 34 +- .../ethereum/tangerine_whistle/fork_types.v | 17 +- .../ethereum/tangerine_whistle/state.v | 17 +- .../ethereum/tangerine_whistle/transactions.v | 17 +- CoqOfPython/ethereum/tangerine_whistle/trie.v | 73 +- .../ethereum/tangerine_whistle/vm/__init__.v | 55 +- .../tangerine_whistle/vm/exceptions.v | 181 +- .../ethereum/tangerine_whistle/vm/gas.v | 36 +- .../vm/instructions/__init__.v | 18 +- .../tangerine_whistle/vm/interpreter.v | 17 +- CoqOfPython/ethereum/trace.v | 169 +- main.py | 48 +- 187 files changed, 12028 insertions(+), 12284 deletions(-) diff --git a/CoqOfPython/CoqOfPython.v b/CoqOfPython/CoqOfPython.v index e7d3d63..bb452a9 100644 --- a/CoqOfPython/CoqOfPython.v +++ b/CoqOfPython/CoqOfPython.v @@ -64,6 +64,15 @@ Module Globals. Definition t : Set := string. End Globals. +Module Klass. + Record t {Value M : Set} : Set := { + bases : list (Globals.t * string); + class_methods : list (string * (Value -> Value -> M)); + methods : list (string * (Value -> Value -> M)); + }. + Arguments t : clear implicits. +End Klass. + Module Data. (** This type is not accessible directly in Python, as only object are. We use this type internally to represent integers, closures, ... that can be made accessible in a special @@ -81,10 +90,7 @@ Module Data. | Set_ (items : list Value) | Dict (dict : Dict.t Value) | Closure {Value M : Set} (f : Value -> Value -> M) - | Klass {Value M : Set} - (bases : list (Globals.t * string)) - (class_methods : list (string * (Value -> Value -> M))) - (methods : list (string * (Value -> Value -> M))). + | Klass {Value M : Set} (klass : Klass.t Value M). Arguments Ellipsis {_}. Arguments Bool {_}. Arguments Integer {_}. @@ -509,25 +515,31 @@ End Compare. (** ** Builtins *) Module builtins. - Definition make_klass - (bases : list (string * string)) - (class_methods : list (string * (Value.t -> Value.t -> M))) - (methods : list (string * (Value.t -> Value.t -> M))) : - Value.t := - Value.Make "builtins" "type" (Pointer.Imm (Object.wrapper ( - Data.Klass bases class_methods methods - ))). + Definition make_klass (klass : Klass.t Value.t M) : Value.t := + Value.Make "builtins" "type" (Pointer.Imm (Object.wrapper (Data.Klass klass))). Definition type : Value.t := - make_klass [] [] []. + make_klass {| + Klass.bases := []; + Klass.class_methods := []; + Klass.methods := []; + |}. Axiom type_in_globals : IsInGlobals "builtins" "type" type. Definition int : Value.t := - make_klass [] [] []. + make_klass {| + Klass.bases := []; + Klass.class_methods := []; + Klass.methods := []; + |}. Axiom int_in_globals : IsInGlobals "builtins" "int" int. Definition str : Value.t := - make_klass [] [] []. + make_klass {| + Klass.bases := []; + Klass.class_methods := []; + Klass.methods := []; + |}. Axiom str_in_globals : IsInGlobals "builtins" "str" str. End builtins. diff --git a/CoqOfPython/ethereum/arrow_glacier/blocks.v b/CoqOfPython/ethereum/arrow_glacier/blocks.v index 7e91936..5ff5fe8 100644 --- a/CoqOfPython/ethereum/arrow_glacier/blocks.v +++ b/CoqOfPython/ethereum/arrow_glacier/blocks.v @@ -50,42 +50,38 @@ Axiom ethereum_arrow_glacier_fork_types_imports_Root : Axiom ethereum_arrow_glacier_transactions_imports_LegacyTransaction : IsImported globals "ethereum.arrow_glacier.transactions" "LegacyTransaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/arrow_glacier/fork.v b/CoqOfPython/ethereum/arrow_glacier/fork.v index 0231cd1..13d8fec 100644 --- a/CoqOfPython/ethereum/arrow_glacier/fork.v +++ b/CoqOfPython/ethereum/arrow_glacier/fork.v @@ -216,15 +216,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1267,15 +1266,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/arrow_glacier/fork_types.v b/CoqOfPython/ethereum/arrow_glacier/fork_types.v index 247c71e..5963abc 100644 --- a/CoqOfPython/ethereum/arrow_glacier/fork_types.v +++ b/CoqOfPython/ethereum/arrow_glacier/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/arrow_glacier/state.v b/CoqOfPython/ethereum/arrow_glacier/state.v index ee0b067..b2c8ca0 100644 --- a/CoqOfPython/ethereum/arrow_glacier/state.v +++ b/CoqOfPython/ethereum/arrow_glacier/state.v @@ -76,15 +76,14 @@ Axiom ethereum_arrow_glacier_trie_imports_trie_get : Axiom ethereum_arrow_glacier_trie_imports_trie_set : IsImported globals "ethereum.arrow_glacier.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/arrow_glacier/transactions.v b/CoqOfPython/ethereum/arrow_glacier/transactions.v index 9fda9f0..c3881d3 100644 --- a/CoqOfPython/ethereum/arrow_glacier/transactions.v +++ b/CoqOfPython/ethereum/arrow_glacier/transactions.v @@ -67,35 +67,32 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/arrow_glacier/trie.v b/CoqOfPython/ethereum/arrow_glacier/trie.v index 3777ab8..e922285 100644 --- a/CoqOfPython/ethereum/arrow_glacier/trie.v +++ b/CoqOfPython/ethereum/arrow_glacier/trie.v @@ -157,35 +157,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -485,15 +482,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v b/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v index 12056c6..8de2b2a 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v b/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v index ed3e40a..c9bd752 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,80 +95,81 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/gas.v b/CoqOfPython/ethereum/arrow_glacier/vm/gas.v index 73fe5f7..c5b520d 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/gas.v @@ -446,25 +446,23 @@ Definition GAS_WARM_ACCESS : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v index 1309d4b..7ba6a9b 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_arrow_glacier_vm_instructions_imports_storage : Axiom ethereum_arrow_glacier_vm_instructions_imports_system : IsImported globals "ethereum.arrow_glacier.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v b/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v index dfe783a..c3ff31f 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v @@ -140,15 +140,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/base_types.v b/CoqOfPython/ethereum/base_types.v index c19cb89..8332980 100644 --- a/CoqOfPython/ethereum/base_types.v +++ b/CoqOfPython/ethereum/base_types.v @@ -50,15 +50,15 @@ Axiom typing_imports_TypeVar : Axiom typing_imports_runtime_checkable : IsImported globals "typing" "runtime_checkable". -Definition SlottedFreezable : Value.t := - builtins.make_klass - [(globals, "Protocol")] - [ - - ] - [ - - ]. +Definition SlottedFreezable : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "Protocol") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition U255_CEIL_VALUE : Value.t := M.run ltac:(M.monadic ( BinOp.pow (| @@ -91,1436 +91,1438 @@ Smallest value that requires 257 bits to represent. Used when converting a [`U256.to_signed`]: ref:ethereum.base_types.U256.to_signed ". -Definition Uint : Value.t := - builtins.make_klass - [(globals, "int")] - [ - ( - "from_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition Uint : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "int") + ]; + Klass.class_methods := [ + ( + "from_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into an arbitrarily sized unsigned integer from its big endian representation. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "from_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "from_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into an arbitrarily sized unsigned integer from its little endian representation. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "little" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "value" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "little" - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "value" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "value" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "value" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "TypeError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "value" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_)) - ); - ( - "__radd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "TypeError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "value" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_)) + ); + ( + "__radd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "left" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__iadd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__sub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) + ], + make_dict [] + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| Compare.lt (| M.get_name (| globals, locals_stack, "right" |), Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] + ltac:(M.monadic ( + Compare.lt (| + M.get_name (| globals, locals_stack, "self" |), + M.get_name (| globals, locals_stack, "right" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__iadd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__sub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.lt (| - M.get_name (| globals, locals_stack, "self" |), - M.get_name (| globals, locals_stack, "right" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rsub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rsub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "self" |), - M.get_name (| globals, locals_stack, "left" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "self" |), + M.get_name (| globals, locals_stack, "left" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__isub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__sub__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__isub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__sub__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__floordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__floordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__floordiv__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rfloordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__floordiv__" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rfloordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rfloordiv__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ifloordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__floordiv__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rfloordiv__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ifloordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__floordiv__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mod__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mod__" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rmod__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mod__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__divmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rmod__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__divmod__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mod__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__divmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - let _ := M.return_ (| - make_tuple [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 0 - |) - ], + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |); M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__divmod__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + let _ := M.return_ (| + make_tuple [ M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 0 + |) + ], + make_dict [] + |); M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 1 + |) + ], + make_dict [] + |) ] + |) in + M.pure Constant.None_)) + ); + ( + "__rdivmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 1 - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) ] - |) in - M.pure Constant.None_)) - ); - ( - "__rdivmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rdivmod__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - let _ := M.return_ (| - make_tuple [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rdivmod__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + let _ := M.return_ (| + make_tuple [ M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 0 + |) + ], + make_dict [] + |); M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 1 + |) + ], + make_dict [] + |) ] + |) in + M.pure Constant.None_)) + ); + ( + "__pow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.is_not (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.None_ + |), + (* then *) + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "modulo" |); + M.get_name (| globals, locals_stack, "int" |) + ], + make_dict [] + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "modulo" |), Constant.int 0 - |) - ], - make_dict [] - |); M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 1 - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) ] - |) in - M.pure Constant.None_)) - ); - ( - "__pow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.is_not (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.None_ - |), - (* then *) - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "modulo" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), make_list [ + M.get_name (| globals, locals_stack, "self" |); M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "modulo" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rpow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left"; "modulo" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.is_not (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.None_ + |), + (* then *) + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "modulo" |) + M.get_name (| globals, locals_stack, "modulo" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rpow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left"; "modulo" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.is_not (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.None_ - |), - (* then *) - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "modulo" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rpow__" |), make_list [ + M.get_name (| globals, locals_stack, "self" |); M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "modulo" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rpow__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "modulo" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ipow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ipow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "modulo" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__xor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "modulo" |) + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__xor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__xor__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rxor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__xor__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rxor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rxor__" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rxor__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ixor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__xor__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_be_bytes32", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ixor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__xor__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_be_bytes32", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this arbitrarily sized unsigned integer into its big endian representation with exactly 32 bytes. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "Bytes32" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - Constant.int 32; - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "Bytes32" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + Constant.int 32; + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this arbitrarily sized unsigned integer into its big endian representation, without padding. " in - let _ := M.assign_local (| - "bit_length" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "byte_length" , - BinOp.floor_div (| - BinOp.add (| - M.get_name (| globals, locals_stack, "bit_length" |), - Constant.int 7 - |), - Constant.int 8 - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "byte_length" |); - Constant.str "big" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "number_bytes" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.assign_local (| + "bit_length" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "byte_length" , + BinOp.floor_div (| + BinOp.add (| + M.get_name (| globals, locals_stack, "bit_length" |), + Constant.int 7 + |), + Constant.int 8 + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "byte_length" |); + Constant.str "big" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "number_bytes" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this arbitrarily sized unsigned integer into its little endian representation, without padding. " in - let _ := - (* if *) - M.if_then_else (| - Compare.is (| - M.get_name (| globals, locals_stack, "number_bytes" |), - Constant.None_ - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "bit_length" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "number_bytes" , - BinOp.floor_div (| - BinOp.add (| - M.get_name (| globals, locals_stack, "bit_length" |), - Constant.int 7 - |), - Constant.int 8 - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "number_bytes" |); - Constant.str "little" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + let _ := + (* if *) + M.if_then_else (| + Compare.is (| + M.get_name (| globals, locals_stack, "number_bytes" |), + Constant.None_ + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "bit_length" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "number_bytes" , + BinOp.floor_div (| + BinOp.add (| + M.get_name (| globals, locals_stack, "bit_length" |), + Constant.int 7 + |), + Constant.int 8 + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "number_bytes" |); + Constant.str "little" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. Definition T : Value.t := M.run ltac:(M.monadic ( M.call (| @@ -1532,168 +1534,168 @@ Definition T : Value.t := M.run ltac:(M.monadic ( |) )). -Definition FixedUint : Value.t := - builtins.make_klass - [(globals, "int")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "value" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "value" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "TypeError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "value" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "value" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_)) - ); - ( - "__radd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), +Definition FixedUint : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "int") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "value" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "left" |) + M.get_name (| globals, locals_stack, "value" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "TypeError" |), + make_list [], make_dict [] - |) - |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "result" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "value" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "value" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_)) + ); + ( + "__radd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_name (| globals, locals_stack, "result" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "wrapping_add", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "result" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_name (| globals, locals_stack, "result" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "wrapping_add", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.str " Return a new instance containing `self + right (mod N)`. Passing a `right` value greater than [`MAX_VALUE`] or less than zero @@ -1702,178 +1704,178 @@ Definition FixedUint : Value.t := [`MAX_VALUE`]: ref:ethereum.base_types.FixedUint.MAX_VALUE " in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - BinOp.bit_and (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__iadd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__sub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - BoolOp.or (| - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |), - ltac:(M.monadic ( - Compare.lt (| - M.get_name (| globals, locals_stack, "self" |), - M.get_name (| globals, locals_stack, "right" |) - |) - )) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + BinOp.bit_and (| M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), make_list [ M.get_name (| globals, locals_stack, "self" |); M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__iadd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__sub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "wrapping_sub", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + BoolOp.or (| + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |), + ltac:(M.monadic ( + Compare.lt (| + M.get_name (| globals, locals_stack, "self" |), + M.get_name (| globals, locals_stack, "right" |) + |) + )) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "wrapping_sub", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.str " Return a new instance containing `self - right (mod N)`. Passing a `right` value greater than [`MAX_VALUE`] or less than zero @@ -1882,254 +1884,254 @@ Definition FixedUint : Value.t := [`MAX_VALUE`]: ref:ethereum.base_types.FixedUint.MAX_VALUE " in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - BinOp.bit_and (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rsub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - BoolOp.or (| - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "self" |), - M.get_name (| globals, locals_stack, "left" |) - |) - )) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + BinOp.bit_and (| M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), make_list [ M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__isub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__sub__" |), + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rsub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + ltac:(M.monadic ( + BoolOp.or (| + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "self" |), + M.get_name (| globals, locals_stack, "left" |) + |) + )) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__isub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__sub__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "result" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_name (| globals, locals_stack, "result" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "wrapping_mul", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "result" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_name (| globals, locals_stack, "result" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "wrapping_mul", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.str " Return a new instance containing `self * right (mod N)`. Passing a `right` value greater than [`MAX_VALUE`] or less than zero @@ -2138,771 +2140,771 @@ Definition FixedUint : Value.t := [`MAX_VALUE`]: ref:ethereum.base_types.FixedUint.MAX_VALUE " in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - BinOp.bit_and (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__floordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + BinOp.bit_and (| M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__floordiv__" |), + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), make_list [ M.get_name (| globals, locals_stack, "self" |); M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__floordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rfloordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rfloordiv__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ifloordiv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__floordiv__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__floordiv__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rfloordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mod__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rmod__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mod__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__divmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rfloordiv__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.call (| - M.get_name (| globals, locals_stack, "super" |), - make_list [ - M.get_name (| globals, locals_stack, "FixedUint" |); - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |), "__divmod__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ifloordiv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__floordiv__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - let _ := M.return_ (| - make_tuple [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 0 + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) - ], + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], make_dict [] - |); M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mod__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 1 - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) ] - |) in - M.pure Constant.None_)) - ); - ( - "__rdivmod__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.call (| - M.get_name (| globals, locals_stack, "super" |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rmod__" |), make_list [ - M.get_name (| globals, locals_stack, "FixedUint" |); - M.get_name (| globals, locals_stack, "self" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |), "__rdivmod__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mod__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__divmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "left" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - let _ := M.return_ (| - make_tuple [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 0 + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.call (| + M.get_name (| globals, locals_stack, "super" |), + make_list [ + M.get_name (| globals, locals_stack, "FixedUint" |); + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |); M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |), "__divmod__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + let _ := M.return_ (| + make_tuple [ M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 0 + |) + ], + make_dict [] + |); M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 1 + |) + ], + make_dict [] + |) ] + |) in + M.pure Constant.None_)) + ); + ( + "__rdivmod__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_subscript (| - M.get_name (| globals, locals_stack, "result" |), - Constant.int 1 - |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) ] - |) in - M.pure Constant.None_)) - ); - ( - "__pow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.is_not (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.None_ + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "modulo" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "modulo" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.call (| + M.get_name (| globals, locals_stack, "super" |), make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "modulo" |) + M.get_name (| globals, locals_stack, "FixedUint" |); + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) - |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - BoolOp.or (| + |), "__rdivmod__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + let _ := M.return_ (| + make_tuple [ M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 0 + |) + ], + make_dict [] + |); M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "result" |), + Constant.int 1 + |) + ], + make_dict [] + |) ] + |) in + M.pure Constant.None_)) + ); + ( + "__pow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.is_not (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.None_ + |), + (* then *) + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "modulo" |); + M.get_name (| globals, locals_stack, "int" |) + ], + make_dict [] + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.int 0 + |), + ltac:(M.monadic ( Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), + M.get_name (| globals, locals_stack, "modulo" |), M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "result" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.get_name (| globals, locals_stack, "result" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "wrapping_pow", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "modulo" |) + ], + make_dict [] + |) + |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + BoolOp.or (| + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "result" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.get_name (| globals, locals_stack, "result" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "wrapping_pow", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + ltac:(M.monadic ( + let _ := Constant.str " Return a new instance containing `self ** right (mod modulo)`. If omitted, `modulo` defaults to `Uint(self.MAX_VALUE) + 1`. @@ -2913,1196 +2915,1203 @@ Definition FixedUint : Value.t := [`MAX_VALUE`]: ref:ethereum.base_types.FixedUint.MAX_VALUE " in - let _ := - (* if *) - M.if_then_else (| - Compare.is_not (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.None_ - |), - (* then *) - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "modulo" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "modulo" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := + (* if *) + M.if_then_else (| + Compare.is_not (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.None_ + |), + (* then *) + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "modulo" |); + M.get_name (| globals, locals_stack, "int" |) + ], + make_dict [] + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "modulo" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - BinOp.bit_and (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "modulo" |) - ], - make_dict [] - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rpow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left"; "modulo" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.is_not (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.None_ - |), - (* then *) - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "modulo" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "modulo" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "modulo" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + BinOp.bit_and (| M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rpow__" |), + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), make_list [ M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "right" |); M.get_name (| globals, locals_stack, "modulo" |) ], make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ipow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rpow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left"; "modulo" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.is_not (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.None_ + |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "modulo" |); + M.get_name (| globals, locals_stack, "int" |) + ], + make_dict [] + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "modulo" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "modulo" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "modulo" |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__and__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__and__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__or__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rpow__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "modulo" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ipow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right"; "modulo" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "modulo" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__and__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__or__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__xor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__and__" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "right" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "right" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__or__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__xor__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rxor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__or__" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.or (| - Compare.lt (| - M.get_name (| globals, locals_stack, "left" |), - Constant.int 0 - |), - ltac:(M.monadic ( - Compare.gt (| - M.get_name (| globals, locals_stack, "left" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "OverflowError" |), - make_list [], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__xor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rxor__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ixor__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__xor__" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "right" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "right" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__xor__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rxor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__invert__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); - BinOp.bit_and (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__invert__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.or (| + Compare.lt (| + M.get_name (| globals, locals_stack, "left" |), + Constant.int 0 + |), + ltac:(M.monadic ( + Compare.gt (| + M.get_name (| globals, locals_stack, "left" |), M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rshift__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "shift_by" ] in + )) + |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "OverflowError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rxor__" |), make_list [ - M.get_name (| globals, locals_stack, "shift_by" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ixor__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__xor__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__invert__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + BinOp.bit_and (| M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rshift__" |), + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__invert__" |), make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "shift_by" |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rshift__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "shift_by" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "shift_by" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__class__" |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rshift__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "shift_by" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this unsigned integer into its big endian representation, omitting leading zero bytes. " in - let _ := M.assign_local (| - "bit_length" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "byte_length" , - BinOp.floor_div (| - BinOp.add (| - M.get_name (| globals, locals_stack, "bit_length" |), - Constant.int 7 - |), - Constant.int 8 - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "byte_length" |); - Constant.str "big" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + let _ := M.assign_local (| + "bit_length" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "byte_length" , + BinOp.floor_div (| + BinOp.add (| + M.get_name (| globals, locals_stack, "bit_length" |), + Constant.int 7 + |), + Constant.int 8 + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "byte_length" |); + Constant.str "big" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. -Definition U256 : Value.t := - builtins.make_klass - [(globals, "FixedUint")] - [ - ( - "from_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition U256 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedUint") + ]; + Klass.class_methods := [ + ( + "from_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into a fixed sized unsigned integer from its big endian representation. " in - let _ := - (* if *) - M.if_then_else (| - Compare.gt (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |) - ], - make_dict [] - |), - Constant.int 32 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [], + let _ := + (* if *) + M.if_then_else (| + Compare.gt (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |) + ], make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "from_signed", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "value" ] in + |), + Constant.int 32 + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "from_signed", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "value" ] in + ltac:(M.monadic ( + let _ := Constant.str " Creates an unsigned integer representing `value` using two's complement. " in - let _ := - (* if *) - M.if_then_else (| - Compare.gt_e (| - M.get_name (| globals, locals_stack, "value" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.get_name (| globals, locals_stack, "value" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - BinOp.bit_and (| - M.get_name (| globals, locals_stack, "value" |), - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MAX_VALUE" |) - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "to_be_bytes32", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + let _ := + (* if *) + M.if_then_else (| + Compare.gt_e (| + M.get_name (| globals, locals_stack, "value" |), + Constant.int 0 + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.get_name (| globals, locals_stack, "value" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + BinOp.bit_and (| + M.get_name (| globals, locals_stack, "value" |), + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MAX_VALUE" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "to_be_bytes32", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this 256-bit unsigned integer into its big endian representation with exactly 32 bytes. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "Bytes32" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - Constant.int 32; - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_signed", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "Bytes32" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + Constant.int 32; + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_signed", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Decodes a signed integer from its two's complement representation. " in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |), - Constant.int 256 + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "int" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - BinOp.sub (| + Constant.int 256 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| M.call (| M.get_name (| globals, locals_stack, "int" |), make_list [ M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |), - M.get_name (| globals, locals_stack, "U256_CEIL_VALUE" |) - |) - |) in - M.pure Constant.None_)) - ) - ]. + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + BinOp.sub (| + M.call (| + M.get_name (| globals, locals_stack, "int" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |), + M.get_name (| globals, locals_stack, "U256_CEIL_VALUE" |) + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. (* At top_level_stmt: unsupported node type: Assign *) -Definition U32 : Value.t := - builtins.make_klass - [(globals, "FixedUint")] - [ - ( - "from_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition U32 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedUint") + ]; + Klass.class_methods := [ + ( + "from_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into an arbitrarily sized unsigned integer from its little endian representation. " in - let _ := - (* if *) - M.if_then_else (| - Compare.gt (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |) - ], - make_dict [] - |), - Constant.int 4 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [], + let _ := + (* if *) + M.if_then_else (| + Compare.gt (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |) + ], make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "little" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "to_le_bytes4", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |), + Constant.int 4 + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "little" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "to_le_bytes4", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this fixed sized unsigned integer into its little endian representation, with exactly 4 bytes. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "Bytes4" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - Constant.int 4; - Constant.str "little" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "Bytes4" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + Constant.int 4; + Constant.str "little" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this fixed sized unsigned integer into its little endian representation, in the fewest bytes possible. " in - let _ := M.assign_local (| - "bit_length" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "byte_length" , - BinOp.floor_div (| - BinOp.add (| - M.get_name (| globals, locals_stack, "bit_length" |), - Constant.int 7 - |), - Constant.int 8 - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "byte_length" |); - Constant.str "little" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + let _ := M.assign_local (| + "bit_length" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "byte_length" , + BinOp.floor_div (| + BinOp.add (| + M.get_name (| globals, locals_stack, "bit_length" |), + Constant.int 7 + |), + Constant.int 8 + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "byte_length" |); + Constant.str "little" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. (* At top_level_stmt: unsupported node type: Assign *) -Definition U64 : Value.t := - builtins.make_klass - [(globals, "FixedUint")] - [ - ( - "from_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition U64 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedUint") + ]; + Klass.class_methods := [ + ( + "from_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into an arbitrarily sized unsigned integer from its little endian representation. " in - let _ := - (* if *) - M.if_then_else (| - Compare.gt (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |) - ], - make_dict [] - |), - Constant.int 8 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [], + let _ := + (* if *) + M.if_then_else (| + Compare.gt (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |) + ], make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "little" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "from_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + |), + Constant.int 8 + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "little" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "from_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into an unsigned 64 bit integer from its big endian representation. " in - let _ := - (* if *) - M.if_then_else (| - Compare.gt (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |) - ], - make_dict [] - |), - Constant.int 8 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [], + let _ := + (* if *) + M.if_then_else (| + Compare.gt (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |) + ], make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "to_le_bytes8", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |), + Constant.int 8 + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "to_le_bytes8", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this fixed sized unsigned integer into its little endian representation, with exactly 8 bytes. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "Bytes8" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - Constant.int 8; - Constant.str "little" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_le_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "Bytes8" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + Constant.int 8; + Constant.str "little" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_le_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this fixed sized unsigned integer into its little endian representation, in the fewest bytes possible. " in - let _ := M.assign_local (| - "bit_length" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "byte_length" , - BinOp.floor_div (| - BinOp.add (| - M.get_name (| globals, locals_stack, "bit_length" |), - Constant.int 7 - |), - Constant.int 8 - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "byte_length" |); - Constant.str "little" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + let _ := M.assign_local (| + "bit_length" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "bit_length" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "byte_length" , + BinOp.floor_div (| + BinOp.add (| + M.get_name (| globals, locals_stack, "bit_length" |), + Constant.int 7 + |), + Constant.int 8 + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + M.get_name (| globals, locals_stack, "byte_length" |); + Constant.str "little" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. (* At top_level_stmt: unsupported node type: Assign *) @@ -4116,154 +4125,155 @@ Definition B : Value.t := M.run ltac:(M.monadic ( |) )). -Definition FixedBytes : Value.t := - builtins.make_klass - [(globals, "bytes")] - [ - - ] - [ - ( - "__new__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition FixedBytes : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "bytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__new__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := Constant.str " Create a new instance, ensuring the result has the correct length. " in - let _ := M.assign_local (| - "result" , - M.call (| - M.get_field (| M.call (| - M.get_name (| globals, locals_stack, "super" |), - make_list [ - M.get_name (| globals, locals_stack, "FixedBytes" |); - M.get_name (| globals, locals_stack, "cls" |) - ], - make_dict [] - |), "__new__" |), - make_list_concat (| [ - make_list [ - M.get_name (| globals, locals_stack, "cls" |) - ]; - M.get_name (| globals, locals_stack, "args" |) - ] |), + let _ := M.assign_local (| + "result" , + M.call (| + M.get_field (| M.call (| + M.get_name (| globals, locals_stack, "super" |), + make_list [ + M.get_name (| globals, locals_stack, "FixedBytes" |); + M.get_name (| globals, locals_stack, "cls" |) + ], make_dict [] - |) - |) in - let _ := - (* if *) - M.if_then_else (| - Compare.not_eq (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "result" |) - ], - make_dict [] - |), - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "LENGTH" |) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), + |), "__new__" |), + make_list_concat (| [ + make_list [ + M.get_name (| globals, locals_stack, "cls" |) + ]; + M.get_name (| globals, locals_stack, "args" |) + ] |), + make_dict [] + |) + |) in + let _ := + (* if *) + M.if_then_else (| + Compare.not_eq (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), make_list [ - Constant.str "(* At expr: unsupported node type: JoinedStr *)" + M.get_name (| globals, locals_stack, "result" |) ], make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "result" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition Bytes0 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ - - ] - [ - - ]. - -Definition Bytes4 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ - - ] - [ - - ]. - -Definition Bytes8 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ - - ] - [ - - ]. - -Definition Bytes20 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ - - ] - [ - - ]. - -Definition Bytes32 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ - - ] - [ - - ]. - -Definition Bytes48 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ + |), + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "LENGTH" |) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [ + Constant.str "(* At expr: unsupported node type: JoinedStr *)" + ], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "result" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. - ] - [ +Definition Bytes0 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. +Definition Bytes4 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. -Definition Bytes64 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ +Definition Bytes8 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Bytes20 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. +Definition Bytes32 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. -Definition Bytes256 : Value.t := - builtins.make_klass - [(globals, "FixedBytes")] - [ +Definition Bytes48 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Bytes64 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. +Definition Bytes256 : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "FixedBytes") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Bytes : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "bytes" |) diff --git a/CoqOfPython/ethereum/berlin/blocks.v b/CoqOfPython/ethereum/berlin/blocks.v index 092d01e..0c44e10 100644 --- a/CoqOfPython/ethereum/berlin/blocks.v +++ b/CoqOfPython/ethereum/berlin/blocks.v @@ -50,42 +50,38 @@ Axiom ethereum_berlin_fork_types_imports_Root : Axiom ethereum_berlin_transactions_imports_LegacyTransaction : IsImported globals "ethereum.berlin.transactions" "LegacyTransaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/berlin/fork.v b/CoqOfPython/ethereum/berlin/fork.v index ea566d1..082a045 100644 --- a/CoqOfPython/ethereum/berlin/fork.v +++ b/CoqOfPython/ethereum/berlin/fork.v @@ -206,15 +206,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -957,15 +956,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/berlin/fork_types.v b/CoqOfPython/ethereum/berlin/fork_types.v index 3275327..cb6f804 100644 --- a/CoqOfPython/ethereum/berlin/fork_types.v +++ b/CoqOfPython/ethereum/berlin/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/berlin/state.v b/CoqOfPython/ethereum/berlin/state.v index 9b7c736..3593ce7 100644 --- a/CoqOfPython/ethereum/berlin/state.v +++ b/CoqOfPython/ethereum/berlin/state.v @@ -76,15 +76,14 @@ Axiom ethereum_berlin_trie_imports_trie_get : Axiom ethereum_berlin_trie_imports_trie_set : IsImported globals "ethereum.berlin.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/berlin/transactions.v b/CoqOfPython/ethereum/berlin/transactions.v index 7d191a8..c359050 100644 --- a/CoqOfPython/ethereum/berlin/transactions.v +++ b/CoqOfPython/ethereum/berlin/transactions.v @@ -70,25 +70,23 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/berlin/trie.v b/CoqOfPython/ethereum/berlin/trie.v index f5cdf46..2bb2e9e 100644 --- a/CoqOfPython/ethereum/berlin/trie.v +++ b/CoqOfPython/ethereum/berlin/trie.v @@ -157,35 +157,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -485,15 +482,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/berlin/vm/__init__.v b/CoqOfPython/ethereum/berlin/vm/__init__.v index 8448361..b9f36dd 100644 --- a/CoqOfPython/ethereum/berlin/vm/__init__.v +++ b/CoqOfPython/ethereum/berlin/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/berlin/vm/exceptions.v b/CoqOfPython/ethereum/berlin/vm/exceptions.v index 55de82f..b26d9c6 100644 --- a/CoqOfPython/ethereum/berlin/vm/exceptions.v +++ b/CoqOfPython/ethereum/berlin/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,70 +95,71 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/berlin/vm/gas.v b/CoqOfPython/ethereum/berlin/vm/gas.v index b180144..a4d5a4f 100644 --- a/CoqOfPython/ethereum/berlin/vm/gas.v +++ b/CoqOfPython/ethereum/berlin/vm/gas.v @@ -456,25 +456,23 @@ Definition GAS_WARM_ACCESS : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v b/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v index 4ab52a9..9609257 100644 --- a/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_berlin_vm_instructions_imports_storage : Axiom ethereum_berlin_vm_instructions_imports_system : IsImported globals "ethereum.berlin.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/berlin/vm/interpreter.v b/CoqOfPython/ethereum/berlin/vm/interpreter.v index cbb5986..f8c554d 100644 --- a/CoqOfPython/ethereum/berlin/vm/interpreter.v +++ b/CoqOfPython/ethereum/berlin/vm/interpreter.v @@ -138,15 +138,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/blocks.v b/CoqOfPython/ethereum/byzantium/blocks.v index e211724..f6b2650 100644 --- a/CoqOfPython/ethereum/byzantium/blocks.v +++ b/CoqOfPython/ethereum/byzantium/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_byzantium_fork_types_imports_Root : Axiom ethereum_byzantium_transactions_imports_Transaction : IsImported globals "ethereum.byzantium.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/byzantium/fork.v b/CoqOfPython/ethereum/byzantium/fork.v index 570d90e..9b5dceb 100644 --- a/CoqOfPython/ethereum/byzantium/fork.v +++ b/CoqOfPython/ethereum/byzantium/fork.v @@ -192,15 +192,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -913,15 +912,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/fork_types.v b/CoqOfPython/ethereum/byzantium/fork_types.v index ee6d634..afcace7 100644 --- a/CoqOfPython/ethereum/byzantium/fork_types.v +++ b/CoqOfPython/ethereum/byzantium/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/byzantium/state.v b/CoqOfPython/ethereum/byzantium/state.v index f8f1c3f..4c46cce 100644 --- a/CoqOfPython/ethereum/byzantium/state.v +++ b/CoqOfPython/ethereum/byzantium/state.v @@ -74,15 +74,14 @@ Axiom ethereum_byzantium_trie_imports_trie_get : Axiom ethereum_byzantium_trie_imports_trie_set : IsImported globals "ethereum.byzantium.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/transactions.v b/CoqOfPython/ethereum/byzantium/transactions.v index 9fcc79a..ff3525c 100644 --- a/CoqOfPython/ethereum/byzantium/transactions.v +++ b/CoqOfPython/ethereum/byzantium/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/byzantium/trie.v b/CoqOfPython/ethereum/byzantium/trie.v index 8b87007..73d67a6 100644 --- a/CoqOfPython/ethereum/byzantium/trie.v +++ b/CoqOfPython/ethereum/byzantium/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/vm/__init__.v b/CoqOfPython/ethereum/byzantium/vm/__init__.v index 9a3bc28..d9b85e0 100644 --- a/CoqOfPython/ethereum/byzantium/vm/__init__.v +++ b/CoqOfPython/ethereum/byzantium/vm/__init__.v @@ -64,35 +64,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/vm/exceptions.v b/CoqOfPython/ethereum/byzantium/vm/exceptions.v index 0e595d2..960f064 100644 --- a/CoqOfPython/ethereum/byzantium/vm/exceptions.v +++ b/CoqOfPython/ethereum/byzantium/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,60 +95,61 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/byzantium/vm/gas.v b/CoqOfPython/ethereum/byzantium/vm/gas.v index d732e54..41b20ec 100644 --- a/CoqOfPython/ethereum/byzantium/vm/gas.v +++ b/CoqOfPython/ethereum/byzantium/vm/gas.v @@ -446,25 +446,23 @@ Definition GAS_RETURN_DATA_COPY : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v b/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v index 4299835..04cec4f 100644 --- a/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_byzantium_vm_instructions_imports_storage : Axiom ethereum_byzantium_vm_instructions_imports_system : IsImported globals "ethereum.byzantium.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/byzantium/vm/interpreter.v b/CoqOfPython/ethereum/byzantium/vm/interpreter.v index e0984a8..264a316 100644 --- a/CoqOfPython/ethereum/byzantium/vm/interpreter.v +++ b/CoqOfPython/ethereum/byzantium/vm/interpreter.v @@ -136,15 +136,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/blocks.v b/CoqOfPython/ethereum/cancun/blocks.v index 6d98eb6..5011b58 100644 --- a/CoqOfPython/ethereum/cancun/blocks.v +++ b/CoqOfPython/ethereum/cancun/blocks.v @@ -52,52 +52,47 @@ Axiom ethereum_cancun_fork_types_imports_Root : Axiom ethereum_cancun_transactions_imports_LegacyTransaction : IsImported globals "ethereum.cancun.transactions" "LegacyTransaction". -Definition Withdrawal : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Withdrawal : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/cancun/fork.v b/CoqOfPython/ethereum/cancun/fork.v index ddfc829..576c0bb 100644 --- a/CoqOfPython/ethereum/cancun/fork.v +++ b/CoqOfPython/ethereum/cancun/fork.v @@ -240,15 +240,14 @@ Definition VERSIONED_HASH_VERSION_KZG : Value.t := M.run ltac:(M.monadic ( Constant.bytes "01" )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1509,15 +1508,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/fork_types.v b/CoqOfPython/ethereum/cancun/fork_types.v index 8eb2521..b1c4e99 100644 --- a/CoqOfPython/ethereum/cancun/fork_types.v +++ b/CoqOfPython/ethereum/cancun/fork_types.v @@ -59,15 +59,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/cancun/state.v b/CoqOfPython/ethereum/cancun/state.v index b0b40c3..47003d7 100644 --- a/CoqOfPython/ethereum/cancun/state.v +++ b/CoqOfPython/ethereum/cancun/state.v @@ -81,25 +81,23 @@ Axiom ethereum_cancun_trie_imports_trie_get : Axiom ethereum_cancun_trie_imports_trie_set : IsImported globals "ethereum.cancun.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition TransientStorage : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition TransientStorage : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/transactions.v b/CoqOfPython/ethereum/cancun/transactions.v index bb800fe..7913268 100644 --- a/CoqOfPython/ethereum/cancun/transactions.v +++ b/CoqOfPython/ethereum/cancun/transactions.v @@ -69,45 +69,41 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BlobTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BlobTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/cancun/trie.v b/CoqOfPython/ethereum/cancun/trie.v index 6b003d3..51b853b 100644 --- a/CoqOfPython/ethereum/cancun/trie.v +++ b/CoqOfPython/ethereum/cancun/trie.v @@ -166,35 +166,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -494,15 +491,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/vm/__init__.v b/CoqOfPython/ethereum/cancun/vm/__init__.v index f7252b0..7767482 100644 --- a/CoqOfPython/ethereum/cancun/vm/__init__.v +++ b/CoqOfPython/ethereum/cancun/vm/__init__.v @@ -72,35 +72,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/vm/exceptions.v b/CoqOfPython/ethereum/cancun/vm/exceptions.v index 257d805..f9f08e5 100644 --- a/CoqOfPython/ethereum/cancun/vm/exceptions.v +++ b/CoqOfPython/ethereum/cancun/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,90 +95,91 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition KZGProofError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition KZGProofError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/cancun/vm/gas.v b/CoqOfPython/ethereum/cancun/vm/gas.v index 6f4bc91..eab6969 100644 --- a/CoqOfPython/ethereum/cancun/vm/gas.v +++ b/CoqOfPython/ethereum/cancun/vm/gas.v @@ -525,25 +525,23 @@ Definition BLOB_GASPRICE_UPDATE_FRACTION : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v b/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v index 153a2a3..be59c5f 100644 --- a/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_cancun_vm_instructions_imports_storage : Axiom ethereum_cancun_vm_instructions_imports_system : IsImported globals "ethereum.cancun.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/cancun/vm/interpreter.v b/CoqOfPython/ethereum/cancun/vm/interpreter.v index 897386b..8472122 100644 --- a/CoqOfPython/ethereum/cancun/vm/interpreter.v +++ b/CoqOfPython/ethereum/cancun/vm/interpreter.v @@ -142,15 +142,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/blocks.v b/CoqOfPython/ethereum/constantinople/blocks.v index ffb89c6..c607f39 100644 --- a/CoqOfPython/ethereum/constantinople/blocks.v +++ b/CoqOfPython/ethereum/constantinople/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_constantinople_fork_types_imports_Root : Axiom ethereum_constantinople_transactions_imports_Transaction : IsImported globals "ethereum.constantinople.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/constantinople/fork.v b/CoqOfPython/ethereum/constantinople/fork.v index 245bd87..c7e2dc1 100644 --- a/CoqOfPython/ethereum/constantinople/fork.v +++ b/CoqOfPython/ethereum/constantinople/fork.v @@ -192,15 +192,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -913,15 +912,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/fork_types.v b/CoqOfPython/ethereum/constantinople/fork_types.v index 269cc60..c85ea3c 100644 --- a/CoqOfPython/ethereum/constantinople/fork_types.v +++ b/CoqOfPython/ethereum/constantinople/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/constantinople/state.v b/CoqOfPython/ethereum/constantinople/state.v index 74dc7a7..f25af54 100644 --- a/CoqOfPython/ethereum/constantinople/state.v +++ b/CoqOfPython/ethereum/constantinople/state.v @@ -74,15 +74,14 @@ Axiom ethereum_constantinople_trie_imports_trie_get : Axiom ethereum_constantinople_trie_imports_trie_set : IsImported globals "ethereum.constantinople.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/transactions.v b/CoqOfPython/ethereum/constantinople/transactions.v index c4232b6..42d391a 100644 --- a/CoqOfPython/ethereum/constantinople/transactions.v +++ b/CoqOfPython/ethereum/constantinople/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/constantinople/trie.v b/CoqOfPython/ethereum/constantinople/trie.v index 44509df..5eb07ce 100644 --- a/CoqOfPython/ethereum/constantinople/trie.v +++ b/CoqOfPython/ethereum/constantinople/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/vm/__init__.v b/CoqOfPython/ethereum/constantinople/vm/__init__.v index abac4a2..ba890a3 100644 --- a/CoqOfPython/ethereum/constantinople/vm/__init__.v +++ b/CoqOfPython/ethereum/constantinople/vm/__init__.v @@ -64,35 +64,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/vm/exceptions.v b/CoqOfPython/ethereum/constantinople/vm/exceptions.v index e9b6a3e..1d9a174 100644 --- a/CoqOfPython/ethereum/constantinople/vm/exceptions.v +++ b/CoqOfPython/ethereum/constantinople/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,60 +95,61 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/constantinople/vm/gas.v b/CoqOfPython/ethereum/constantinople/vm/gas.v index c08c6d4..7ee84f5 100644 --- a/CoqOfPython/ethereum/constantinople/vm/gas.v +++ b/CoqOfPython/ethereum/constantinople/vm/gas.v @@ -456,25 +456,23 @@ Definition GAS_CODE_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v b/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v index 1debf2b..5747634 100644 --- a/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_constantinople_vm_instructions_imports_storage : Axiom ethereum_constantinople_vm_instructions_imports_system : IsImported globals "ethereum.constantinople.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/constantinople/vm/interpreter.v b/CoqOfPython/ethereum/constantinople/vm/interpreter.v index 183898c..1b511ad 100644 --- a/CoqOfPython/ethereum/constantinople/vm/interpreter.v +++ b/CoqOfPython/ethereum/constantinople/vm/interpreter.v @@ -136,15 +136,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/crypto/alt_bn128.v b/CoqOfPython/ethereum/crypto/alt_bn128.v index 29ed360..246b97e 100644 --- a/CoqOfPython/ethereum/crypto/alt_bn128.v +++ b/CoqOfPython/ethereum/crypto/alt_bn128.v @@ -31,35 +31,35 @@ Definition ATE_PAIRING_COUNT_BITS : Value.t := M.run ltac:(M.monadic ( Constant.int 63 )). -Definition BNF : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. - -Definition BNP : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. - -Definition BNF2 : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition BNF : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BNP : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BNF2 : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: Assign *) @@ -76,72 +76,72 @@ Definition expr_48 : Value.t := Definition expr_51 : Value.t := Constant.str "autoapi_noindex". -Definition BNP2 : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. - -Definition BNF12 : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition BNP2 : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BNF12 : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.str " Multiplication special cased for BNF12. " in - let _ := M.assign_local (| - "mul" , - BinOp.mult (| - make_list [ - Constant.int 0 - ], - Constant.int 23 - |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + let _ := M.assign_local (| + "mul" , + BinOp.mult (| + make_list [ + Constant.int 0 + ], + Constant.int 23 + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ Constant.int 12 ], make_dict [] |), - ltac:(M.monadic ( - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "j" |), - M.call (| + ltac:(M.monadic ( + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "j" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ Constant.int 12 ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op (| - BinOp.add, - M.get_subscript (| + ltac:(M.monadic ( + let _ := M.assign_op (| + BinOp.add, + M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), BinOp.add (| M.get_name (| globals, locals_stack, "i" |), M.get_name (| globals, locals_stack, "j" |) |) |), - BinOp.mult (| + BinOp.mult (| M.get_subscript (| M.get_name (| globals, locals_stack, "self" |), M.get_name (| globals, locals_stack, "i" |) @@ -151,23 +151,23 @@ Definition BNF12 : Value.t := M.get_name (| globals, locals_stack, "j" |) |) |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ Constant.int 22; @@ -176,65 +176,66 @@ Definition BNF12 : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op (| - BinOp.sub, - M.get_subscript (| + ltac:(M.monadic ( + let _ := M.assign_op (| + BinOp.sub, + M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), BinOp.sub (| M.get_name (| globals, locals_stack, "i" |), Constant.int 6 |) |), - BinOp.mult (| + BinOp.mult (| M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), M.get_name (| globals, locals_stack, "i" |) |), UnOp.sub (| Constant.int 18 |) |) - |) in - let _ := M.assign_op (| - BinOp.sub, - M.get_subscript (| + |) in + let _ := M.assign_op (| + BinOp.sub, + M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), BinOp.sub (| M.get_name (| globals, locals_stack, "i" |), Constant.int 12 |) |), - BinOp.mult (| + BinOp.mult (| M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), M.get_name (| globals, locals_stack, "i" |) |), Constant.int 82 |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "BNF12" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "BNF12" |); - M.slice (| - M.get_name (| globals, locals_stack, "mul" |), - Constant.None_, - Constant.int 12, - Constant.None_ - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "BNF12" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "BNF12" |); + M.slice (| + M.get_name (| globals, locals_stack, "mul" |), + Constant.None_, + Constant.int 12, + Constant.None_ + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. (* At top_level_stmt: unsupported node type: Assign *) @@ -251,15 +252,15 @@ Definition expr_101 : Value.t := Definition expr_104 : Value.t := Constant.str "autoapi_noindex". -Definition BNP12 : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition BNP12 : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition bnf2_to_bnf12 : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/crypto/blake2.v b/CoqOfPython/ethereum/crypto/blake2.v index 07372e6..0e8587d 100644 --- a/CoqOfPython/ethereum/crypto/blake2.v +++ b/CoqOfPython/ethereum/crypto/blake2.v @@ -99,19 +99,18 @@ Definition spit_le_to_uint : Value.t -> Value.t -> M := Axiom spit_le_to_uint_in_globals : IsInGlobals globals "spit_le_to_uint" (make_function spit_le_to_uint). -Definition Blake2 : Value.t := - builtins.make_klass - [] - [ - - ] - [ - ( - "get_blake2_parameters", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "data" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition Blake2 : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "get_blake2_parameters", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "data" ] in + ltac:(M.monadic ( + let _ := Constant.str " Extract the parameters required in the Blake2 compression function from the provided bytes data. @@ -120,83 +119,83 @@ Definition Blake2 : Value.t := data : The bytes data that has been passed in the message. " in - let _ := M.assign_local (| - "rounds" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "Uint" |), "from_be_bytes" |), - make_list [ - M.slice (| - M.get_name (| globals, locals_stack, "data" |), - Constant.None_, - Constant.int 4, - Constant.None_ - |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "h" , - M.call (| - M.get_name (| globals, locals_stack, "spit_le_to_uint" |), - make_list [ - M.get_name (| globals, locals_stack, "data" |); - Constant.int 4; - Constant.int 8 - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "m" , - M.call (| - M.get_name (| globals, locals_stack, "spit_le_to_uint" |), - make_list [ - M.get_name (| globals, locals_stack, "data" |); - Constant.int 68; - Constant.int 16 - ], - make_dict [] - |) - |) in - let _ := M.assign (| - make_tuple [ M.get_name (| globals, locals_stack, "t_0" |); M.get_name (| globals, locals_stack, "t_1" |) ], - M.call (| - M.get_name (| globals, locals_stack, "spit_le_to_uint" |), - make_list [ - M.get_name (| globals, locals_stack, "data" |); - Constant.int 196; - Constant.int 2 - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "f" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "Uint" |), "from_be_bytes" |), - make_list [ - M.slice (| - M.get_name (| globals, locals_stack, "data" |), - Constant.int 212, - Constant.None_, - Constant.None_ - |) - ], - make_dict [] - |) - |) in - let _ := M.return_ (| - make_tuple [ M.get_name (| globals, locals_stack, "rounds" |); M.get_name (| globals, locals_stack, "h" |); M.get_name (| globals, locals_stack, "m" |); M.get_name (| globals, locals_stack, "t_0" |); M.get_name (| globals, locals_stack, "t_1" |); M.get_name (| globals, locals_stack, "f" |) ] - |) in - M.pure Constant.None_)) - ); - ( - "G", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "v"; "a"; "b"; "c"; "d"; "x"; "y" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.assign_local (| + "rounds" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "Uint" |), "from_be_bytes" |), + make_list [ + M.slice (| + M.get_name (| globals, locals_stack, "data" |), + Constant.None_, + Constant.int 4, + Constant.None_ + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "h" , + M.call (| + M.get_name (| globals, locals_stack, "spit_le_to_uint" |), + make_list [ + M.get_name (| globals, locals_stack, "data" |); + Constant.int 4; + Constant.int 8 + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "m" , + M.call (| + M.get_name (| globals, locals_stack, "spit_le_to_uint" |), + make_list [ + M.get_name (| globals, locals_stack, "data" |); + Constant.int 68; + Constant.int 16 + ], + make_dict [] + |) + |) in + let _ := M.assign (| + make_tuple [ M.get_name (| globals, locals_stack, "t_0" |); M.get_name (| globals, locals_stack, "t_1" |) ], + M.call (| + M.get_name (| globals, locals_stack, "spit_le_to_uint" |), + make_list [ + M.get_name (| globals, locals_stack, "data" |); + Constant.int 196; + Constant.int 2 + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "f" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "Uint" |), "from_be_bytes" |), + make_list [ + M.slice (| + M.get_name (| globals, locals_stack, "data" |), + Constant.int 212, + Constant.None_, + Constant.None_ + |) + ], + make_dict [] + |) + |) in + let _ := M.return_ (| + make_tuple [ M.get_name (| globals, locals_stack, "rounds" |); M.get_name (| globals, locals_stack, "h" |); M.get_name (| globals, locals_stack, "m" |); M.get_name (| globals, locals_stack, "t_0" |); M.get_name (| globals, locals_stack, "t_1" |); M.get_name (| globals, locals_stack, "f" |) ] + |) in + M.pure Constant.None_)) + ); + ( + "G", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "v"; "a"; "b"; "c"; "d"; "x"; "y" ] in + ltac:(M.monadic ( + let _ := Constant.str " The mixing function used in Blake2 https://datatracker.ietf.org/doc/html/rfc7693#section-3.1 @@ -209,35 +208,49 @@ Definition Blake2 : Value.t := x, y : The two input words for the mixing. " in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |), - BinOp.mod_ (| + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) + |), + BinOp.mod_ (| + BinOp.add (| BinOp.add (| - BinOp.add (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) - |) + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) |), - M.get_name (| globals, locals_stack, "x" |) + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "b" |) + |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) + M.get_name (| globals, locals_stack, "x" |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |), + BinOp.bit_xor (| + BinOp.r_shift (| + BinOp.bit_xor (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) + |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R1" |) |), - BinOp.bit_xor (| - BinOp.r_shift (| + BinOp.mod_ (| + BinOp.l_shift (| BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), @@ -248,52 +261,52 @@ Definition Blake2 : Value.t := M.get_name (| globals, locals_stack, "a" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R1" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R1" |) |), - BinOp.mod_ (| - BinOp.l_shift (| - BinOp.bit_xor (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R1" |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "c" |) + |), + BinOp.mod_ (| + BinOp.add (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "c" |) + |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |) |), - BinOp.mod_ (| - BinOp.add (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "b" |) + |), + BinOp.bit_xor (| + BinOp.r_shift (| + BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) + M.get_name (| globals, locals_stack, "b" |) |), M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) + M.get_name (| globals, locals_stack, "c" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R2" |) |), - BinOp.bit_xor (| - BinOp.r_shift (| + BinOp.mod_ (| + BinOp.l_shift (| BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), @@ -304,55 +317,55 @@ Definition Blake2 : Value.t := M.get_name (| globals, locals_stack, "c" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R2" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R2" |) |), - BinOp.mod_ (| - BinOp.l_shift (| - BinOp.bit_xor (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) - |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R2" |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |), - BinOp.mod_ (| + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) + |), + BinOp.mod_ (| + BinOp.add (| BinOp.add (| - BinOp.add (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) - |) + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) |), - M.get_name (| globals, locals_stack, "y" |) + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "b" |) + |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) + M.get_name (| globals, locals_stack, "y" |) |), - BinOp.bit_xor (| - BinOp.r_shift (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |), + BinOp.bit_xor (| + BinOp.r_shift (| + BinOp.bit_xor (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "a" |) + |) + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R3" |) + |), + BinOp.mod_ (| + BinOp.l_shift (| BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), @@ -363,52 +376,52 @@ Definition Blake2 : Value.t := M.get_name (| globals, locals_stack, "a" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R3" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R3" |) |), - BinOp.mod_ (| - BinOp.l_shift (| - BinOp.bit_xor (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "a" |) - |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R3" |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "c" |) + |), + BinOp.mod_ (| + BinOp.add (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "c" |) + |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "d" |) + |) |), - BinOp.mod_ (| - BinOp.add (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + M.get_name (| globals, locals_stack, "b" |) + |), + BinOp.bit_xor (| + BinOp.r_shift (| + BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) + M.get_name (| globals, locals_stack, "b" |) |), M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "d" |) + M.get_name (| globals, locals_stack, "c" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R4" |) |), - BinOp.bit_xor (| - BinOp.r_shift (| + BinOp.mod_ (| + BinOp.l_shift (| BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), @@ -419,37 +432,23 @@ Definition Blake2 : Value.t := M.get_name (| globals, locals_stack, "c" |) |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "R4" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R4" |) |), - BinOp.mod_ (| - BinOp.l_shift (| - BinOp.bit_xor (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "b" |) - |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - M.get_name (| globals, locals_stack, "c" |) - |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "w_R4" |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "max_word" |) |) - |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "v" |) - |) in - M.pure Constant.None_)) - ); - ( - "compress", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "num_rounds"; "h"; "m"; "t_0"; "t_1"; "f" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |) + |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "v" |) + |) in + M.pure Constant.None_)) + ); + ( + "compress", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "num_rounds"; "h"; "m"; "t_0"; "t_1"; "f" ] in + ltac:(M.monadic ( + let _ := Constant.str " 'F Compression' from section 3.2 of RFC 7693: https://tools.ietf.org/html/rfc7693#section-3.2 @@ -466,363 +465,364 @@ Definition Blake2 : Value.t := f: The final block indicator flag. An 8-bit word " in - let _ := M.assign_local (| - "v" , - BinOp.mult (| - make_list [ - Constant.int 0 - ], - Constant.int 16 - |) - |) in - let _ := M.assign (| - M.slice (| - M.get_name (| globals, locals_stack, "v" |), - Constant.int 0, - Constant.int 8, - Constant.None_ - |), - M.get_name (| globals, locals_stack, "h" |) - |) in - let _ := M.assign (| - M.slice (| - M.get_name (| globals, locals_stack, "v" |), - Constant.int 8, - Constant.int 15, - Constant.None_ - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |) - |) in - let _ := M.assign (| + let _ := M.assign_local (| + "v" , + BinOp.mult (| + make_list [ + Constant.int 0 + ], + Constant.int 16 + |) + |) in + let _ := M.assign (| + M.slice (| + M.get_name (| globals, locals_stack, "v" |), + Constant.int 0, + Constant.int 8, + Constant.None_ + |), + M.get_name (| globals, locals_stack, "h" |) + |) in + let _ := M.assign (| + M.slice (| + M.get_name (| globals, locals_stack, "v" |), + Constant.int 8, + Constant.int 15, + Constant.None_ + |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + Constant.int 12 + |), + BinOp.bit_xor (| + M.get_name (| globals, locals_stack, "t_0" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - Constant.int 12 - |), - BinOp.bit_xor (| - M.get_name (| globals, locals_stack, "t_0" |), - M.get_subscript (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |), - Constant.int 4 - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |), + Constant.int 4 |) - |) in - let _ := M.assign (| + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + Constant.int 13 + |), + BinOp.bit_xor (| + M.get_name (| globals, locals_stack, "t_1" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - Constant.int 13 - |), - BinOp.bit_xor (| - M.get_name (| globals, locals_stack, "t_1" |), - M.get_subscript (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |), - Constant.int 5 - |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "IV" |), + Constant.int 5 |) - |) in - let _ := - (* if *) - M.if_then_else (| - M.get_name (| globals, locals_stack, "f" |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign (| + |) + |) in + let _ := + (* if *) + M.if_then_else (| + M.get_name (| globals, locals_stack, "f" |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "v" |), + Constant.int 14 + |), + BinOp.bit_xor (| M.get_subscript (| M.get_name (| globals, locals_stack, "v" |), Constant.int 14 |), - BinOp.bit_xor (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "v" |), - Constant.int 14 - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "mask_bits" |) - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "r" |), - M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "mask_bits" |) + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "r" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.get_name (| globals, locals_stack, "num_rounds" |) ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_local (| - "s" , - M.get_subscript (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "sigma" |), - BinOp.mod_ (| - M.get_name (| globals, locals_stack, "r" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "sigma_len" |) - |) + ltac:(M.monadic ( + let _ := M.assign_local (| + "s" , + M.get_subscript (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "sigma" |), + BinOp.mod_ (| + M.get_name (| globals, locals_stack, "r" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "sigma_len" |) |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 0; - Constant.int 4; - Constant.int 8; - Constant.int 12; + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 0; + Constant.int 4; + Constant.int 8; + Constant.int 12; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 0 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 0 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 1 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 1 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 1; - Constant.int 5; - Constant.int 9; - Constant.int 13; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 1; + Constant.int 5; + Constant.int 9; + Constant.int 13; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 2 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 2 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 3 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 3 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 2; - Constant.int 6; - Constant.int 10; - Constant.int 14; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 2; + Constant.int 6; + Constant.int 10; + Constant.int 14; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 4 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 4 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 5 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 5 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 3; - Constant.int 7; - Constant.int 11; - Constant.int 15; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 3; + Constant.int 7; + Constant.int 11; + Constant.int 15; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 6 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 6 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 7 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 7 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 0; - Constant.int 5; - Constant.int 10; - Constant.int 15; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 0; + Constant.int 5; + Constant.int 10; + Constant.int 15; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 8 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 8 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 9 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 9 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 1; - Constant.int 6; - Constant.int 11; - Constant.int 12; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 1; + Constant.int 6; + Constant.int 11; + Constant.int 12; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 10 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 10 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 11 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 11 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 2; - Constant.int 7; - Constant.int 8; - Constant.int 13; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 2; + Constant.int 7; + Constant.int 8; + Constant.int 13; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 12 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 12 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 13 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 13 |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "v" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), - make_list [ - M.get_name (| globals, locals_stack, "v" |); - Constant.int 3; - Constant.int 4; - Constant.int 9; - Constant.int 14; + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "v" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "G" |), + make_list [ + M.get_name (| globals, locals_stack, "v" |); + Constant.int 3; + Constant.int 4; + Constant.int 9; + Constant.int 14; + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 14 - |) - |); + M.get_name (| globals, locals_stack, "s" |), + Constant.int 14 + |) + |); + M.get_subscript (| + M.get_name (| globals, locals_stack, "m" |), M.get_subscript (| - M.get_name (| globals, locals_stack, "m" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "s" |), - Constant.int 15 - |) + M.get_name (| globals, locals_stack, "s" |), + Constant.int 15 |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.assign_local (| - "result_message_words" , - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "struct" |), "pack" |), - make_list_concat (| [ - make_list [ - BinOp.mod_ (| - Constant.str "<8%s", - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "word_format" |) - |) - ]; - M.get_name (| globals, locals_stack, "result_message_words" |) - ] |), - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition Blake2b : Value.t := - builtins.make_klass - [(globals, "Blake2")] - [ - - ] - [ + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.assign_local (| + "result_message_words" , + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "struct" |), "pack" |), + make_list_concat (| [ + make_list [ + BinOp.mod_ (| + Constant.str "<8%s", + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "word_format" |) + |) + ]; + M.get_name (| globals, locals_stack, "result_message_words" |) + ] |), + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. - ]. +Definition Blake2b : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "Blake2") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/crypto/elliptic_curve.v b/CoqOfPython/ethereum/crypto/elliptic_curve.v index 2a9343a..775ea60 100644 --- a/CoqOfPython/ethereum/crypto/elliptic_curve.v +++ b/CoqOfPython/ethereum/crypto/elliptic_curve.v @@ -189,598 +189,600 @@ Definition secp256k1_recover : Value.t -> Value.t -> M := Axiom secp256k1_recover_in_globals : IsInGlobals globals "secp256k1_recover" (make_function secp256k1_recover). -Definition EllipticCurve : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - ( - "point_at_infinity", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition EllipticCurve : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ( + "point_at_infinity", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := Constant.str " Return the point at infinity. This is the identity element of the group operation. The point at infinity doesn't actually have coordinates so we use `(0, 0)` (which isn't on the curve) to represent it. " in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |); - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "__new__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "x"; "y" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |); + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "__new__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "x"; "y" ] in + ltac:(M.monadic ( + let _ := Constant.str " Make new point on the curve. The point is not checked to see if it is on the curve. " in - let _ := M.assign_local (| - "res" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "object" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |) - ], - make_dict [] - |) - |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "res" |), "x" |), - M.get_name (| globals, locals_stack, "x" |) - |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "res" |), "y" |), - M.get_name (| globals, locals_stack, "y" |) - |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "res" |) - |) in - M.pure Constant.None_)) - ); - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "x"; "y" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.assign_local (| + "res" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "object" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |) + ], + make_dict [] + |) + |) in + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "res" |), "x" |), + M.get_name (| globals, locals_stack, "x" |) + |) in + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "res" |), "y" |), + M.get_name (| globals, locals_stack, "y" |) + |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "res" |) + |) in + M.pure Constant.None_)) + ); + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "x"; "y" ] in + ltac:(M.monadic ( + let _ := Constant.str " Checks if the point is on the curve. To skip this check call `__new__()` directly. " in - let _ := - (* if *) - M.if_then_else (| - BoolOp.and (| - BoolOp.or (| + let _ := + (* if *) + M.if_then_else (| + BoolOp.and (| + BoolOp.or (| + Compare.not_eq (| + M.get_name (| globals, locals_stack, "x" |), + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |) + |), + ltac:(M.monadic ( Compare.not_eq (| - M.get_name (| globals, locals_stack, "x" |), + M.get_name (| globals, locals_stack, "y" |), M.call (| M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), make_list [], make_dict [] |) - |), - ltac:(M.monadic ( - Compare.not_eq (| - M.get_name (| globals, locals_stack, "y" |), - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |) - |) - )) - |), - ltac:(M.monadic ( - Compare.not_eq (| + |) + )) + |), + ltac:(M.monadic ( + Compare.not_eq (| + BinOp.sub (| BinOp.sub (| BinOp.sub (| - BinOp.sub (| - BinOp.pow (| - M.get_name (| globals, locals_stack, "y" |), - Constant.int 2 - |), - BinOp.pow (| - M.get_name (| globals, locals_stack, "x" |), - Constant.int 3 - |) + BinOp.pow (| + M.get_name (| globals, locals_stack, "y" |), + Constant.int 2 |), - BinOp.mult (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "A" |), - M.get_name (| globals, locals_stack, "x" |) + BinOp.pow (| + M.get_name (| globals, locals_stack, "x" |), + Constant.int 3 |) |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "B" |) + BinOp.mult (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "A" |), + M.get_name (| globals, locals_stack, "x" |) + |) |), - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |) - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [ - Constant.str "Point not on curve" - ], - make_dict [] - |)) |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_)) - ); - ( - "__eq__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in - ltac:(M.monadic ( - let _ := Constant.str " - Test two points for equality. - " in - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "other" |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "B" |) + |), M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), + make_list [], make_dict [] |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - Constant.bool false - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - BoolOp.and (| - Compare.eq (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |), - M.get_field (| M.get_name (| globals, locals_stack, "other" |), "x" |) - |), - ltac:(M.monadic ( - Compare.eq (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |), - M.get_field (| M.get_name (| globals, locals_stack, "other" |), "y" |) |) )) - |) - |) in - M.pure Constant.None_)) - ); - ( - "__str__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " - Stringify a point as its coordinates. + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [ + Constant.str "Point not on curve" + ], + make_dict [] + |)) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_)) + ); + ( + "__eq__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in + ltac:(M.monadic ( + let _ := Constant.str " + Test two points for equality. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "str" |), + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |) ] + M.get_name (| globals, locals_stack, "other" |); + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "double", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Constant.bool false + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + BoolOp.and (| + Compare.eq (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |), + M.get_field (| M.get_name (| globals, locals_stack, "other" |), "x" |) + |), + ltac:(M.monadic ( + Compare.eq (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |), + M.get_field (| M.get_name (| globals, locals_stack, "other" |), "y" |) + |) + )) + |) + |) in + M.pure Constant.None_)) + ); + ( + "__str__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " + Stringify a point as its coordinates. + " in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "str" |), + make_list [ + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |) ] + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "double", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Add a point to itself. " in - let _ := M.assign (| - make_tuple [ M.get_name (| globals, locals_stack, "x" |); M.get_name (| globals, locals_stack, "y" |); M.get_name (| globals, locals_stack, "F" |) ], - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |) ] - |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.and (| + let _ := M.assign (| + make_tuple [ M.get_name (| globals, locals_stack, "x" |); M.get_name (| globals, locals_stack, "y" |); M.get_name (| globals, locals_stack, "F" |) ], + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |) ] + |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.and (| + Compare.eq (| + M.get_name (| globals, locals_stack, "x" |), + Constant.int 0 + |), + ltac:(M.monadic ( Compare.eq (| - M.get_name (| globals, locals_stack, "x" |), + M.get_name (| globals, locals_stack, "y" |), Constant.int 0 - |), - ltac:(M.monadic ( - Compare.eq (| - M.get_name (| globals, locals_stack, "y" |), - Constant.int 0 - |) - )) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "self" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "lam" , - BinOp.div (| - BinOp.add (| - BinOp.mult (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "F" |), "from_int" |), - make_list [ - Constant.int 3 - ], - make_dict [] - |), - BinOp.pow (| - M.get_name (| globals, locals_stack, "x" |), - Constant.int 2 - |) - |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "A" |) - |), + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "self" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "lam" , + BinOp.div (| + BinOp.add (| BinOp.mult (| M.call (| M.get_field (| M.get_name (| globals, locals_stack, "F" |), "from_int" |), make_list [ - Constant.int 2 + Constant.int 3 ], make_dict [] |), - M.get_name (| globals, locals_stack, "y" |) - |) - |) - |) in - let _ := M.assign_local (| - "new_x" , - BinOp.sub (| - BinOp.sub (| BinOp.pow (| - M.get_name (| globals, locals_stack, "lam" |), + M.get_name (| globals, locals_stack, "x" |), Constant.int 2 - |), - M.get_name (| globals, locals_stack, "x" |) + |) |), - M.get_name (| globals, locals_stack, "x" |) + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "A" |) + |), + BinOp.mult (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "F" |), "from_int" |), + make_list [ + Constant.int 2 + ], + make_dict [] + |), + M.get_name (| globals, locals_stack, "y" |) |) - |) in - let _ := M.assign_local (| - "new_y" , + |) + |) in + let _ := M.assign_local (| + "new_x" , + BinOp.sub (| BinOp.sub (| - BinOp.mult (| + BinOp.pow (| M.get_name (| globals, locals_stack, "lam" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "x" |), - M.get_name (| globals, locals_stack, "new_x" |) - |) + Constant.int 2 |), - M.get_name (| globals, locals_stack, "y" |) - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.get_name (| globals, locals_stack, "new_x" |); - M.get_name (| globals, locals_stack, "new_y" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in - ltac:(M.monadic ( - let _ := Constant.str " + M.get_name (| globals, locals_stack, "x" |) + |), + M.get_name (| globals, locals_stack, "x" |) + |) + |) in + let _ := M.assign_local (| + "new_y" , + BinOp.sub (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "lam" |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "x" |), + M.get_name (| globals, locals_stack, "new_x" |) + |) + |), + M.get_name (| globals, locals_stack, "y" |) + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.get_name (| globals, locals_stack, "new_x" |); + M.get_name (| globals, locals_stack, "new_y" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in + ltac:(M.monadic ( + let _ := Constant.str " Add two points together. " in - let _ := M.assign_local (| - "ZERO" , - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign (| - make_tuple [ M.get_name (| globals, locals_stack, "self_x" |); M.get_name (| globals, locals_stack, "self_y" |); M.get_name (| globals, locals_stack, "other_x" |); M.get_name (| globals, locals_stack, "other_y" |) ], - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |); M.get_field (| M.get_name (| globals, locals_stack, "other" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "other" |), "y" |) ] - |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.and (| + let _ := M.assign_local (| + "ZERO" , + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign (| + make_tuple [ M.get_name (| globals, locals_stack, "self_x" |); M.get_name (| globals, locals_stack, "self_y" |); M.get_name (| globals, locals_stack, "other_x" |); M.get_name (| globals, locals_stack, "other_y" |) ], + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "self" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "self" |), "y" |); M.get_field (| M.get_name (| globals, locals_stack, "other" |), "x" |); M.get_field (| M.get_name (| globals, locals_stack, "other" |), "y" |) ] + |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.and (| + Compare.eq (| + M.get_name (| globals, locals_stack, "self_x" |), + M.get_name (| globals, locals_stack, "ZERO" |) + |), + ltac:(M.monadic ( Compare.eq (| - M.get_name (| globals, locals_stack, "self_x" |), + M.get_name (| globals, locals_stack, "self_y" |), M.get_name (| globals, locals_stack, "ZERO" |) - |), - ltac:(M.monadic ( - Compare.eq (| - M.get_name (| globals, locals_stack, "self_y" |), - M.get_name (| globals, locals_stack, "ZERO" |) - |) - )) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "other" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + BoolOp.and (| + Compare.eq (| + M.get_name (| globals, locals_stack, "other_x" |), + M.get_name (| globals, locals_stack, "ZERO" |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "other" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - BoolOp.and (| + ltac:(M.monadic ( Compare.eq (| - M.get_name (| globals, locals_stack, "other_x" |), + M.get_name (| globals, locals_stack, "other_y" |), M.get_name (| globals, locals_stack, "ZERO" |) + |) + )) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "self" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.eq (| + M.get_name (| globals, locals_stack, "self_x" |), + M.get_name (| globals, locals_stack, "other_x" |) + |), + (* then *) + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.eq (| + M.get_name (| globals, locals_stack, "self_y" |), + M.get_name (| globals, locals_stack, "other_y" |) |), - ltac:(M.monadic ( - Compare.eq (| - M.get_name (| globals, locals_stack, "other_y" |), - M.get_name (| globals, locals_stack, "ZERO" |) + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "double" |), + make_list [], + make_dict [] |) - )) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "point_at_infinity" |), + make_list [], + make_dict [] + |) + |) in + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "lam" , + BinOp.div (| + BinOp.sub (| + M.get_name (| globals, locals_stack, "other_y" |), + M.get_name (| globals, locals_stack, "self_y" |) + |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "other_x" |), + M.get_name (| globals, locals_stack, "self_x" |) + |) + |) + |) in + let _ := M.assign_local (| + "x" , + BinOp.sub (| + BinOp.sub (| + BinOp.pow (| + M.get_name (| globals, locals_stack, "lam" |), + Constant.int 2 |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "self" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.eq (| + M.get_name (| globals, locals_stack, "self_x" |) + |), + M.get_name (| globals, locals_stack, "other_x" |) + |) + |) in + let _ := M.assign_local (| + "y" , + BinOp.sub (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "lam" |), + BinOp.sub (| M.get_name (| globals, locals_stack, "self_x" |), - M.get_name (| globals, locals_stack, "other_x" |) - |), - (* then *) + M.get_name (| globals, locals_stack, "x" |) + |) + |), + M.get_name (| globals, locals_stack, "self_y" |) + |) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.get_name (| globals, locals_stack, "x" |); + M.get_name (| globals, locals_stack, "y" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "mul_by", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "n" ] in + ltac:(M.monadic ( + let _ := Constant.str " + Multiply `self` by `n` using the double and add algorithm. + " in + let _ := M.assign_local (| + "res" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |); + M.call (| + M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), + make_list [], + make_dict [] + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "s" , + M.get_name (| globals, locals_stack, "self" |) + |) in + let _ := + M.while (| + Compare.not_eq (| + M.get_name (| globals, locals_stack, "n" |), + Constant.int 0 + |), ltac:(M.monadic ( let _ := (* if *) M.if_then_else (| Compare.eq (| - M.get_name (| globals, locals_stack, "self_y" |), - M.get_name (| globals, locals_stack, "other_y" |) + BinOp.mod_ (| + M.get_name (| globals, locals_stack, "n" |), + Constant.int 2 + |), + Constant.int 1 |), (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "double" |), - make_list [], - make_dict [] + let _ := M.assign_local (| + "res" , + BinOp.add (| + M.get_name (| globals, locals_stack, "res" |), + M.get_name (| globals, locals_stack, "s" |) |) |) in M.pure Constant.None_ (* else *) )), ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "point_at_infinity" |), - make_list [], - make_dict [] - |) - |) in M.pure Constant.None_ )) |) in + let _ := M.assign_local (| + "s" , + BinOp.add (| + M.get_name (| globals, locals_stack, "s" |), + M.get_name (| globals, locals_stack, "s" |) + |) + |) in + let _ := M.assign_op_local (| + BinOp.floor_div, + "n", + Constant.int 2 + |) in M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( + )), + ltac:(M.monadic ( M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "lam" , - BinOp.div (| - BinOp.sub (| - M.get_name (| globals, locals_stack, "other_y" |), - M.get_name (| globals, locals_stack, "self_y" |) - |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "other_x" |), - M.get_name (| globals, locals_stack, "self_x" |) - |) - |) - |) in - let _ := M.assign_local (| - "x" , - BinOp.sub (| - BinOp.sub (| - BinOp.pow (| - M.get_name (| globals, locals_stack, "lam" |), - Constant.int 2 - |), - M.get_name (| globals, locals_stack, "self_x" |) - |), - M.get_name (| globals, locals_stack, "other_x" |) - |) - |) in - let _ := M.assign_local (| - "y" , - BinOp.sub (| - BinOp.mult (| - M.get_name (| globals, locals_stack, "lam" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "self_x" |), - M.get_name (| globals, locals_stack, "x" |) - |) - |), - M.get_name (| globals, locals_stack, "self_y" |) - |) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.get_name (| globals, locals_stack, "x" |); - M.get_name (| globals, locals_stack, "y" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "mul_by", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "n" ] in - ltac:(M.monadic ( - let _ := Constant.str " - Multiply `self` by `n` using the double and add algorithm. - " in - let _ := M.assign_local (| - "res" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |); - M.call (| - M.get_field (| M.get_field (| M.get_name (| globals, locals_stack, "self" |), "FIELD" |), "zero" |), - make_list [], - make_dict [] - |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "s" , - M.get_name (| globals, locals_stack, "self" |) - |) in - let _ := - M.while (| - Compare.not_eq (| - M.get_name (| globals, locals_stack, "n" |), - Constant.int 0 - |), - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.eq (| - BinOp.mod_ (| - M.get_name (| globals, locals_stack, "n" |), - Constant.int 2 - |), - Constant.int 1 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "res" , - BinOp.add (| - M.get_name (| globals, locals_stack, "res" |), - M.get_name (| globals, locals_stack, "s" |) - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "s" , - BinOp.add (| - M.get_name (| globals, locals_stack, "s" |), - M.get_name (| globals, locals_stack, "s" |) - |) - |) in - let _ := M.assign_op_local (| - BinOp.floor_div, - "n", - Constant.int 2 - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "res" |) - |) in - M.pure Constant.None_)) - ) - ]. + )) + |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "res" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. diff --git a/CoqOfPython/ethereum/crypto/finite_field.v b/CoqOfPython/ethereum/crypto/finite_field.v index 458e285..4c436a0 100644 --- a/CoqOfPython/ethereum/crypto/finite_field.v +++ b/CoqOfPython/ethereum/crypto/finite_field.v @@ -41,125 +41,127 @@ Definition F : Value.t := M.run ltac:(M.monadic ( |) )). -Definition Field : Value.t := - builtins.make_klass - [(globals, "Protocol")] - [ - ( - "zero", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "from_int", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ) - ] - [ - ( - "__radd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__iadd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__sub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__rsub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__rmul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__imul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__pow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__ipow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__neg__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ); - ( - "__truediv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := Constant.ellipsis in - M.pure Constant.None_)) - ) - ]. +Definition Field : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "Protocol") + ]; + Klass.class_methods := [ + ( + "zero", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "from_int", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "__radd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__iadd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__sub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__rsub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__rmul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__imul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__pow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__ipow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__neg__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ); + ( + "__truediv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := Constant.ellipsis in + M.pure Constant.None_)) + ) + ] +|}. Definition T : Value.t := M.run ltac:(M.monadic ( M.call (| @@ -171,16 +173,18 @@ Definition T : Value.t := M.run ltac:(M.monadic ( |) )). -Definition PrimeField : Value.t := - builtins.make_klass - [(globals, "int"); (globals, "Field")] - [ - ( - "from_be_bytes", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition PrimeField : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "int"); + (globals, "Field") + ]; + Klass.class_methods := [ + ( + "from_be_bytes", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "buffer" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts a sequence of bytes into a element of the field. Parameters ---------- @@ -191,465 +195,465 @@ Definition PrimeField : Value.t := self : `T` Unsigned integer decoded from `buffer`. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), - make_list [ - M.get_name (| globals, locals_stack, "buffer" |); - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "zero", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - Constant.int 0 - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "from_int", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "cls" |), - make_list [ - M.get_name (| globals, locals_stack, "n" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "__new__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "value" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - BinOp.mod_ (| - M.get_name (| globals, locals_stack, "value" |), - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "PRIME" |) - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__radd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "from_bytes" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "buffer" |); + Constant.str "big" ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__iadd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "zero", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + Constant.int 0 + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "from_int", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "cls" |), + make_list [ + M.get_name (| globals, locals_stack, "n" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "__new__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "value" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + BinOp.mod_ (| + M.get_name (| globals, locals_stack, "value" |), + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "PRIME" |) + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__radd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__sub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rsub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__add__" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__iadd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__sub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.get_name (| globals, locals_stack, "int" |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |); - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__sub__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rsub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "left" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__pow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "int" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.get_name (| globals, locals_stack, "exponent" |); - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__ipow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__rsub__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.get_name (| globals, locals_stack, "int" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__neg__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__neg__" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__truediv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - BinOp.mult (| - M.get_name (| globals, locals_stack, "self" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "right" |), "multiplicative_inverse" |), - make_list [], + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |); + M.get_name (| globals, locals_stack, "right" |) + ], make_dict [] |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__pow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__pow__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "int" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.get_name (| globals, locals_stack, "exponent" |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__ipow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__neg__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "int" |), "__neg__" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__truediv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "self" |), + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "right" |), "multiplicative_inverse" |), + make_list [], + make_dict [] |) - |) in - M.pure Constant.None_)) - ); - ( - "multiplicative_inverse", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - BinOp.pow (| - M.get_name (| globals, locals_stack, "self" |), - UnOp.sub (| Constant.int 1 |) - |) - |) in - M.pure Constant.None_)) - ); - ( - "to_be_bytes32", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |) + |) in + M.pure Constant.None_)) + ); + ( + "multiplicative_inverse", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + BinOp.pow (| + M.get_name (| globals, locals_stack, "self" |), + UnOp.sub (| Constant.int 1 |) + |) + |) in + M.pure Constant.None_)) + ); + ( + "to_be_bytes32", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Converts this arbitrarily sized unsigned integer into its big endian representation with exactly 32 bytes. Returns @@ -657,25 +661,26 @@ Definition PrimeField : Value.t := big_endian : `Bytes32` Big endian (most significant bits first) representation. " in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "Bytes32" |), - make_list [ - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), - make_list [ - Constant.int 32; - Constant.str "big" - ], - make_dict [] - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "Bytes32" |), + make_list [ + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "to_bytes" |), + make_list [ + Constant.int 32; + Constant.str "big" + ], + make_dict [] + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. Definition U : Value.t := M.run ltac:(M.monadic ( M.call (| @@ -687,90 +692,92 @@ Definition U : Value.t := M.run ltac:(M.monadic ( |) )). -Definition GaloisField : Value.t := - builtins.make_klass - [(globals, "tuple"); (globals, "Field")] - [ - ( - "zero", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - BinOp.mult (| +Definition GaloisField : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "tuple"); + (globals, "Field") + ]; + Klass.class_methods := [ + ( + "zero", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + BinOp.mult (| + make_list [ + Constant.int 0 + ], + M.call (| + M.get_name (| globals, locals_stack, "len" |), make_list [ - Constant.int 0 + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) ], - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) - ], - make_dict [] - |) + make_dict [] |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "from_int", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - BinOp.add (| + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "from_int", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "n" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + BinOp.add (| + make_list [ + M.get_name (| globals, locals_stack, "n" |) + ], + BinOp.mult (| make_list [ - M.get_name (| globals, locals_stack, "n" |) + Constant.int 0 ], - BinOp.mult (| - make_list [ - Constant.int 0 - ], - BinOp.sub (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) - ], - make_dict [] - |), - Constant.int 1 - |) + BinOp.sub (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) + ], + make_dict [] + |), + Constant.int 1 |) |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "calculate_frobenius_coefficients", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "calculate_frobenius_coefficients", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls" ] in + ltac:(M.monadic ( + let _ := Constant.str " Calculate the coefficients needed by `frobenius()`. " in - let _ := M.assign_local (| - "coefficients" , - make_list [] - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + let _ := M.assign_local (| + "coefficients" , + make_list [] + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.call (| @@ -783,30 +790,30 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_local (| - "x" , - BinOp.mult (| + ltac:(M.monadic ( + let _ := M.assign_local (| + "x" , + BinOp.mult (| + make_list [ + Constant.int 0 + ], + M.call (| + M.get_name (| globals, locals_stack, "len" |), make_list [ - Constant.int 0 + M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) ], - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "cls" |), "MODULUS" |) - ], - make_dict [] - |) + make_dict [] |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x" |), - M.get_name (| globals, locals_stack, "i" |) - |), - Constant.int 1 - |) in - let _ := M.call (| + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x" |), + M.get_name (| globals, locals_stack, "i" |) + |), + Constant.int 1 + |) in + let _ := M.call (| M.get_field (| M.get_name (| globals, locals_stack, "coefficients" |), "append" |), make_list [ BinOp.pow (| @@ -823,42 +830,42 @@ Definition GaloisField : Value.t := ], make_dict [] |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.call (| - M.get_name (| globals, locals_stack, "tuple" |), - make_list [ - M.get_name (| globals, locals_stack, "coefficients" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ] - [ - ( - "__new__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "iterable" ] in - ltac:(M.monadic ( - let _ := M.assign_local (| - "self" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "tuple" |), "__new__" |), - make_list [ - M.get_name (| globals, locals_stack, "cls" |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" - ], - make_dict [] - |) - |) in - let _ := M.assert (| Compare.eq (| + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "tuple" |), + make_list [ + M.get_name (| globals, locals_stack, "coefficients" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ]; + Klass.methods := [ + ( + "__new__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "cls"; "iterable" ] in + ltac:(M.monadic ( + let _ := M.assign_local (| + "self" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "tuple" |), "__new__" |), + make_list [ + M.get_name (| globals, locals_stack, "cls" |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + let _ := M.assert (| Compare.eq (| M.call (| M.get_name (| globals, locals_stack, "len" |), make_list [ @@ -874,262 +881,262 @@ Definition GaloisField : Value.t := make_dict [] |) |) |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "self" |) - |) in - M.pure Constant.None_)) - ); - ( - "__add__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) - ], - make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__radd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__iadd__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "self" |) + |) in + M.pure Constant.None_)) + ); + ( + "__add__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_name (| globals, locals_stack, "right" |) + M.get_name (| globals, locals_stack, "right" |); + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__sub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), make_list [ - M.get_name (| globals, locals_stack, "right" |); - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in -(* At stmt: unsupported node type: AnnAssign *) -(* At stmt: unsupported node type: AnnAssign *) - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__radd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__iadd__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__add__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__sub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ + M.get_name (| globals, locals_stack, "right" |); M.call (| M.get_name (| globals, locals_stack, "type" |), make_list [ M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rsub__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - UnOp.not (| M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in +(* At stmt: unsupported node type: AnnAssign *) +(* At stmt: unsupported node type: AnnAssign *) + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), make_list [ - M.get_name (| globals, locals_stack, "left" |); - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |) |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rsub__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + UnOp.not (| M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ + M.get_name (| globals, locals_stack, "left" |); M.call (| M.get_name (| globals, locals_stack, "type" |), make_list [ M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__mul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + |) |), + (* then *) ltac:(M.monadic ( - let _ := M.assign_local (| - "modulus" , - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) - |) in - let _ := M.assign_local (| - "degree" , - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "modulus" |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "prime" , - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - |) in - let _ := M.assign_local (| - "mul" , + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__mul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.assign_local (| + "modulus" , + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) + |) in + let _ := M.assign_local (| + "degree" , + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "modulus" |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "prime" , + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + |) in + let _ := M.assign_local (| + "mul" , + BinOp.mult (| + make_list [ + Constant.int 0 + ], BinOp.mult (| - make_list [ - Constant.int 0 - ], - BinOp.mult (| - M.get_name (| globals, locals_stack, "degree" |), - Constant.int 2 - |) + M.get_name (| globals, locals_stack, "degree" |), + Constant.int 2 |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.get_name (| globals, locals_stack, "degree" |) ], make_dict [] |), - ltac:(M.monadic ( - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "j" |), - M.call (| + ltac:(M.monadic ( + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "j" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.get_name (| globals, locals_stack, "degree" |) ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op (| - BinOp.add, - M.get_subscript (| + ltac:(M.monadic ( + let _ := M.assign_op (| + BinOp.add, + M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), BinOp.add (| M.get_name (| globals, locals_stack, "i" |), M.get_name (| globals, locals_stack, "j" |) |) |), - BinOp.mult (| + BinOp.mult (| M.get_subscript (| M.get_name (| globals, locals_stack, "self" |), M.get_name (| globals, locals_stack, "i" |) @@ -1139,23 +1146,23 @@ Definition GaloisField : Value.t := M.get_name (| globals, locals_stack, "j" |) |) |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1173,11 +1180,11 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "j" |), - M.call (| + ltac:(M.monadic ( + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "j" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1188,14 +1195,14 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op (| - BinOp.sub, - M.get_subscript (| + ltac:(M.monadic ( + let _ := M.assign_op (| + BinOp.sub, + M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), M.get_name (| globals, locals_stack, "j" |) |), - BinOp.mod_ (| + BinOp.mod_ (| BinOp.mult (| M.get_subscript (| M.get_name (| globals, locals_stack, "mul" |), @@ -1214,153 +1221,153 @@ Definition GaloisField : Value.t := |), M.get_name (| globals, locals_stack, "prime" |) |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.slice (| - M.get_name (| globals, locals_stack, "mul" |), - Constant.None_, - M.get_name (| globals, locals_stack, "degree" |), - Constant.None_ - |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__rmul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "left" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__imul__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__truediv__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - BinOp.mult (| - M.get_name (| globals, locals_stack, "self" |), + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "right" |), "multiplicative_inverse" |), - make_list [], + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], make_dict [] + |); + M.slice (| + M.get_name (| globals, locals_stack, "mul" |), + Constant.None_, + M.get_name (| globals, locals_stack, "degree" |), + Constant.None_ |) - |) - |) in - M.pure Constant.None_)) - ); - ( - "__neg__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := M.return_ (| + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__rmul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "left" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "left" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__imul__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__mul__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__truediv__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "self" |), M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" - ], + M.get_field (| M.get_name (| globals, locals_stack, "right" |), "multiplicative_inverse" |), + make_list [], make_dict [] |) - |) in - M.pure Constant.None_)) - ); - ( - "scalar_mul", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "x" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |) + |) in + M.pure Constant.None_)) + ); + ( + "__neg__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "scalar_mul", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "x" ] in + ltac:(M.monadic ( + let _ := Constant.str " Multiply a field element by a integer. This is faster than using `from_int()` and field multiplication. " in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - Constant.str "(* At expr: unsupported node type: GeneratorExp *)" - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "deg", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + Constant.str "(* At expr: unsupported node type: GeneratorExp *)" + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "deg", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " This is a support function for `multiplicative_inverse()`. " in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1378,237 +1385,237 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.not_eq (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "self" |), - M.get_name (| globals, locals_stack, "i" |) - |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.not_eq (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "self" |), M.get_name (| globals, locals_stack, "i" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.raise (| Some (M.call (| - M.get_name (| globals, locals_stack, "ValueError" |), - make_list [ - Constant.str "deg() does not support zero" - ], - make_dict [] - |)) |) in - M.pure Constant.None_)) - ); - ( - "multiplicative_inverse", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "i" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.raise (| Some (M.call (| + M.get_name (| globals, locals_stack, "ValueError" |), + make_list [ + Constant.str "deg() does not support zero" + ], + make_dict [] + |)) |) in + M.pure Constant.None_)) + ); + ( + "multiplicative_inverse", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Calculate the multiplicative inverse. Uses the Euclidean algorithm. " in (* At stmt: unsupported node type: AnnAssign *) - let _ := M.assign_local (| - "p" , - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - |) in - let _ := M.assign (| - make_tuple [ M.get_name (| globals, locals_stack, "x1" |); M.get_name (| globals, locals_stack, "f1" |) ], - make_tuple [ M.call (| - M.get_name (| globals, locals_stack, "list" |), + let _ := M.assign_local (| + "p" , + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + |) in + let _ := M.assign (| + make_tuple [ M.get_name (| globals, locals_stack, "x1" |); M.get_name (| globals, locals_stack, "f1" |) ], + make_tuple [ M.call (| + M.get_name (| globals, locals_stack, "list" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) + ], + make_dict [] + |); BinOp.mult (| + make_list [ + Constant.int 0 + ], + M.call (| + M.get_name (| globals, locals_stack, "len" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) + M.get_name (| globals, locals_stack, "self" |) ], make_dict [] - |); BinOp.mult (| + |) + |) ] + |) in + let _ := M.assign (| + make_tuple [ M.get_name (| globals, locals_stack, "x2" |); M.get_name (| globals, locals_stack, "f2" |); M.get_name (| globals, locals_stack, "d2" |) ], + make_tuple [ M.call (| + M.get_name (| globals, locals_stack, "list" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); BinOp.add (| + make_list [ + Constant.int 1 + ], + BinOp.mult (| make_list [ Constant.int 0 ], - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |) - |) ] - |) in - let _ := M.assign (| - make_tuple [ M.get_name (| globals, locals_stack, "x2" |); M.get_name (| globals, locals_stack, "f2" |); M.get_name (| globals, locals_stack, "d2" |) ], - make_tuple [ M.call (| - M.get_name (| globals, locals_stack, "list" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); BinOp.add (| - make_list [ + BinOp.sub (| + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |), Constant.int 1 - ], - BinOp.mult (| - make_list [ - Constant.int 0 - ], - BinOp.sub (| - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |), - Constant.int 1 - |) |) - |); M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "deg" |), - make_list [], - make_dict [] - |) ] - |) in - let _ := M.assign_local (| - "q_0" , - M.call (| - M.get_name (| globals, locals_stack, "pow" |), - make_list [ - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - M.get_name (| globals, locals_stack, "d2" |) - |); - UnOp.sub (| Constant.int 1 |); - M.get_name (| globals, locals_stack, "p" |) - ], - make_dict [] |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |); M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "deg" |), + make_list [], + make_dict [] + |) ] + |) in + let _ := M.assign_local (| + "q_0" , + M.call (| + M.get_name (| globals, locals_stack, "pow" |), + make_list [ + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + M.get_name (| globals, locals_stack, "d2" |) + |); + UnOp.sub (| Constant.int 1 |); + M.get_name (| globals, locals_stack, "p" |) + ], + make_dict [] + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.get_name (| globals, locals_stack, "d2" |) ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - BinOp.sub (| - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "x1" |) - ], - make_dict [] - |) - |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |), - BinOp.mod_ (| - BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - BinOp.sub (| - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "x1" |) - ], - make_dict [] - |) - |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q_0" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - M.get_name (| globals, locals_stack, "i" |) - |) + ltac:(M.monadic ( + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + BinOp.sub (| + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "x1" |) + ], + make_dict [] |) |), - M.get_name (| globals, locals_stack, "p" |) + M.get_name (| globals, locals_stack, "d2" |) |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f1" |), - BinOp.sub (| - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "x1" |) - ], - make_dict [] - |) - |), - M.get_name (| globals, locals_stack, "d2" |) + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + BinOp.sub (| + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "x1" |) + ], + make_dict [] + |) + |), + M.get_name (| globals, locals_stack, "d2" |) + |) + |), + BinOp.mult (| + M.get_name (| globals, locals_stack, "q_0" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + M.get_name (| globals, locals_stack, "i" |) + |) |) |), - BinOp.mod_ (| - BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f1" |), - BinOp.sub (| - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_name (| globals, locals_stack, "x1" |) - ], - make_dict [] - |) - |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q_0" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "f2" |), - M.get_name (| globals, locals_stack, "i" |) - |) + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f1" |), + BinOp.sub (| + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "x1" |) + ], + make_dict [] |) |), - M.get_name (| globals, locals_stack, "p" |) + M.get_name (| globals, locals_stack, "d2" |) |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f1" |), + BinOp.sub (| + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_name (| globals, locals_stack, "x1" |) + ], + make_dict [] + |) + |), + M.get_name (| globals, locals_stack, "d2" |) + |) + |), + BinOp.mult (| + M.get_name (| globals, locals_stack, "q_0" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "f2" |), + M.get_name (| globals, locals_stack, "i" |) + |) + |) + |), + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1626,71 +1633,71 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.not_eq (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - M.get_name (| globals, locals_stack, "i" |) - |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "d1" , + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.not_eq (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), M.get_name (| globals, locals_stack, "i" |) - |) in - let _ := M.break (| |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.while (| - Constant.bool true, - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.eq (| - M.get_name (| globals, locals_stack, "d1" |), - Constant.int 0 |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "ans" , - M.get_name (| globals, locals_stack, "f1" |) - |) in - let _ := M.assign_local (| - "q" , + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "d1" , + M.get_name (| globals, locals_stack, "i" |) + |) in + let _ := M.break (| |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.while (| + Constant.bool true, + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.eq (| + M.get_name (| globals, locals_stack, "d1" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "ans" , + M.get_name (| globals, locals_stack, "f1" |) + |) in + let _ := M.assign_local (| + "q" , + M.call (| + M.get_name (| globals, locals_stack, "pow" |), + make_list [ + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + Constant.int 0 + |); + UnOp.sub (| Constant.int 1 |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + ], + make_dict [] + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), M.call (| - M.get_name (| globals, locals_stack, "pow" |), - make_list [ - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - Constant.int 0 - |); - UnOp.sub (| Constant.int 1 |); - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - ], - make_dict [] - |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.call (| @@ -1703,57 +1710,57 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op (| - BinOp.mult, - M.get_subscript (| + ltac:(M.monadic ( + let _ := M.assign_op (| + BinOp.mult, + M.get_subscript (| M.get_name (| globals, locals_stack, "ans" |), M.get_name (| globals, locals_stack, "i" |) |), - M.get_name (| globals, locals_stack, "q" |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.break (| |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.eq (| - M.get_name (| globals, locals_stack, "d2" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "ans" , - M.get_name (| globals, locals_stack, "f2" |) + M.get_name (| globals, locals_stack, "q" |) |) in - let _ := M.assign_local (| - "q" , + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.break (| |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.eq (| + M.get_name (| globals, locals_stack, "d2" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "ans" , + M.get_name (| globals, locals_stack, "f2" |) + |) in + let _ := M.assign_local (| + "q" , + M.call (| + M.get_name (| globals, locals_stack, "pow" |), + make_list [ + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + Constant.int 0 + |); + UnOp.sub (| Constant.int 1 |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + ], + make_dict [] + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), M.call (| - M.get_name (| globals, locals_stack, "pow" |), - make_list [ - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - Constant.int 0 - |); - UnOp.sub (| Constant.int 1 |); - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - ], - make_dict [] - |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ M.call (| @@ -1766,60 +1773,60 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op_local (| - BinOp.mult, - "ans", - M.get_name (| globals, locals_stack, "q" |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.break (| |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - )) |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "d1" |), - M.get_name (| globals, locals_stack, "d2" |) - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "q" , - BinOp.mult (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - M.get_name (| globals, locals_stack, "d2" |) - |), - M.call (| - M.get_name (| globals, locals_stack, "pow" |), - make_list [ - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - M.get_name (| globals, locals_stack, "d1" |) - |); - UnOp.sub (| Constant.int 1 |); - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - ], - make_dict [] - |) + ltac:(M.monadic ( + let _ := M.assign_op_local (| + BinOp.mult, + "ans", + M.get_name (| globals, locals_stack, "q" |) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.break (| |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + M.pure Constant.None_ + )) |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "d1" |), + M.get_name (| globals, locals_stack, "d2" |) + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "q" , + BinOp.mult (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + M.get_name (| globals, locals_stack, "d2" |) + |), + M.call (| + M.get_name (| globals, locals_stack, "pow" |), + make_list [ + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + M.get_name (| globals, locals_stack, "d1" |) + |); + UnOp.sub (| Constant.int 1 |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + ], + make_dict [] |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1838,130 +1845,130 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d2" |), - M.get_name (| globals, locals_stack, "d1" |) - |) - |) - |), - BinOp.mod_ (| + ltac:(M.monadic ( + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d2" |), - M.get_name (| globals, locals_stack, "d1" |) - |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - M.get_name (| globals, locals_stack, "i" |) + M.get_name (| globals, locals_stack, "d2" |), + M.get_name (| globals, locals_stack, "d1" |) + |) + |) + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "d2" |), + M.get_name (| globals, locals_stack, "d1" |) |) |) |), - M.get_name (| globals, locals_stack, "p" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f2" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d2" |), - M.get_name (| globals, locals_stack, "d1" |) + BinOp.mult (| + M.get_name (| globals, locals_stack, "q" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + M.get_name (| globals, locals_stack, "i" |) |) |) |), - BinOp.mod_ (| + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f2" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f2" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d2" |), - M.get_name (| globals, locals_stack, "d1" |) - |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "f1" |), - M.get_name (| globals, locals_stack, "i" |) + M.get_name (| globals, locals_stack, "d2" |), + M.get_name (| globals, locals_stack, "d1" |) + |) + |) + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f2" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "d2" |), + M.get_name (| globals, locals_stack, "d1" |) |) |) |), - M.get_name (| globals, locals_stack, "p" |) - |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.while (| - Compare.eq (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "q" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "f1" |), + M.get_name (| globals, locals_stack, "i" |) + |) + |) + |), + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.while (| + Compare.eq (| M.get_subscript (| M.get_name (| globals, locals_stack, "x2" |), M.get_name (| globals, locals_stack, "d2" |) |), Constant.int 0 |), - ltac:(M.monadic ( - let _ := M.assign_op_local (| - BinOp.sub, - "d2", - Constant.int 1 - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - let _ := M.assign_local (| - "q" , - BinOp.mult (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - M.get_name (| globals, locals_stack, "d1" |) - |), - M.call (| - M.get_name (| globals, locals_stack, "pow" |), - make_list [ - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - M.get_name (| globals, locals_stack, "d2" |) - |); - UnOp.sub (| Constant.int 1 |); - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) - ], - make_dict [] - |) + ltac:(M.monadic ( + let _ := M.assign_op_local (| + BinOp.sub, + "d2", + Constant.int 1 + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + let _ := M.assign_local (| + "q" , + BinOp.mult (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + M.get_name (| globals, locals_stack, "d1" |) + |), + M.call (| + M.get_name (| globals, locals_stack, "pow" |), + make_list [ + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + M.get_name (| globals, locals_stack, "d2" |) + |); + UnOp.sub (| Constant.int 1 |); + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "PRIME" |) + ], + make_dict [] |) - |) in - let _ := - M.for_ (| - M.get_name (| globals, locals_stack, "i" |), - M.call (| + |) + |) in + let _ := + M.for_ (| + M.get_name (| globals, locals_stack, "i" |), + M.call (| M.get_name (| globals, locals_stack, "range" |), make_list [ BinOp.sub (| @@ -1980,306 +1987,306 @@ Definition GaloisField : Value.t := ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d1" |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |) - |), - BinOp.mod_ (| + ltac:(M.monadic ( + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "x1" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d1" |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "x2" |), - M.get_name (| globals, locals_stack, "i" |) + M.get_name (| globals, locals_stack, "d1" |), + M.get_name (| globals, locals_stack, "d2" |) + |) + |) + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "x1" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "d1" |), + M.get_name (| globals, locals_stack, "d2" |) |) |) |), - M.get_name (| globals, locals_stack, "p" |) - |) - |) in - let _ := M.assign (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f1" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d1" |), - M.get_name (| globals, locals_stack, "d2" |) + BinOp.mult (| + M.get_name (| globals, locals_stack, "q" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "x2" |), + M.get_name (| globals, locals_stack, "i" |) |) |) |), - BinOp.mod_ (| + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + let _ := M.assign (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f1" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), BinOp.sub (| - M.get_subscript (| - M.get_name (| globals, locals_stack, "f1" |), - BinOp.add (| - M.get_name (| globals, locals_stack, "i" |), - BinOp.sub (| - M.get_name (| globals, locals_stack, "d1" |), - M.get_name (| globals, locals_stack, "d2" |) - |) - |) - |), - BinOp.mult (| - M.get_name (| globals, locals_stack, "q" |), - M.get_subscript (| - M.get_name (| globals, locals_stack, "f2" |), - M.get_name (| globals, locals_stack, "i" |) + M.get_name (| globals, locals_stack, "d1" |), + M.get_name (| globals, locals_stack, "d2" |) + |) + |) + |), + BinOp.mod_ (| + BinOp.sub (| + M.get_subscript (| + M.get_name (| globals, locals_stack, "f1" |), + BinOp.add (| + M.get_name (| globals, locals_stack, "i" |), + BinOp.sub (| + M.get_name (| globals, locals_stack, "d1" |), + M.get_name (| globals, locals_stack, "d2" |) |) |) |), - M.get_name (| globals, locals_stack, "p" |) - |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := - M.while (| - Compare.eq (| + BinOp.mult (| + M.get_name (| globals, locals_stack, "q" |), + M.get_subscript (| + M.get_name (| globals, locals_stack, "f2" |), + M.get_name (| globals, locals_stack, "i" |) + |) + |) + |), + M.get_name (| globals, locals_stack, "p" |) + |) + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := + M.while (| + Compare.eq (| M.get_subscript (| M.get_name (| globals, locals_stack, "x1" |), M.get_name (| globals, locals_stack, "d1" |) |), Constant.int 0 |), - ltac:(M.monadic ( - let _ := M.assign_op_local (| - BinOp.sub, - "d1", - Constant.int 1 - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - M.pure Constant.None_ - )) |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), - make_list [ - M.get_name (| globals, locals_stack, "self" |) - ], - make_dict [] - |); - M.get_name (| globals, locals_stack, "ans" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "__pow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in - ltac:(M.monadic ( - let _ := M.assign_local (| - "degree" , - M.call (| - M.get_name (| globals, locals_stack, "len" |), - make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) - ], - make_dict [] - |) - |) in - let _ := - (* if *) - M.if_then_else (| - Compare.lt (| - M.get_name (| globals, locals_stack, "exponent" |), - Constant.int 0 - |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_local (| - "self" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "multiplicative_inverse" |), - make_list [], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "exponent" , - UnOp.sub (| M.get_name (| globals, locals_stack, "exponent" |) |) - |) in + ltac:(M.monadic ( + let _ := M.assign_op_local (| + BinOp.sub, + "d1", + Constant.int 1 + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + M.pure Constant.None_ + )) |) in M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( + )), + ltac:(M.monadic ( M.pure Constant.None_ - )) |) in - let _ := M.assign_local (| - "res" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), - make_list [ - M.call (| - M.get_name (| globals, locals_stack, "type" |), + )) + |) in + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + M.get_name (| globals, locals_stack, "ans" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "__pow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "exponent" ] in + ltac:(M.monadic ( + let _ := M.assign_local (| + "degree" , + M.call (| + M.get_name (| globals, locals_stack, "len" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "MODULUS" |) + ], + make_dict [] + |) + |) in + let _ := + (* if *) + M.if_then_else (| + Compare.lt (| + M.get_name (| globals, locals_stack, "exponent" |), + Constant.int 0 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_local (| + "self" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "multiplicative_inverse" |), + make_list [], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "exponent" , + UnOp.sub (| M.get_name (| globals, locals_stack, "exponent" |) |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_local (| + "res" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__new__" |), + make_list [ + M.call (| + M.get_name (| globals, locals_stack, "type" |), + make_list [ + M.get_name (| globals, locals_stack, "self" |) + ], + make_dict [] + |); + BinOp.add (| + make_list [ + Constant.int 1 + ], + BinOp.mult (| make_list [ - M.get_name (| globals, locals_stack, "self" |) + Constant.int 0 ], - make_dict [] - |); - BinOp.add (| - make_list [ + BinOp.sub (| + M.get_name (| globals, locals_stack, "degree" |), Constant.int 1 - ], - BinOp.mult (| - make_list [ - Constant.int 0 - ], - BinOp.sub (| - M.get_name (| globals, locals_stack, "degree" |), - Constant.int 1 - |) |) |) - ], - make_dict [] - |) - |) in - let _ := M.assign_local (| - "s" , - M.get_name (| globals, locals_stack, "self" |) - |) in - let _ := - M.while (| - Compare.not_eq (| + |) + ], + make_dict [] + |) + |) in + let _ := M.assign_local (| + "s" , + M.get_name (| globals, locals_stack, "self" |) + |) in + let _ := + M.while (| + Compare.not_eq (| M.get_name (| globals, locals_stack, "exponent" |), Constant.int 0 |), - ltac:(M.monadic ( - let _ := - (* if *) - M.if_then_else (| - Compare.eq (| - BinOp.mod_ (| - M.get_name (| globals, locals_stack, "exponent" |), - Constant.int 2 - |), - Constant.int 1 + ltac:(M.monadic ( + let _ := + (* if *) + M.if_then_else (| + Compare.eq (| + BinOp.mod_ (| + M.get_name (| globals, locals_stack, "exponent" |), + Constant.int 2 |), - (* then *) - ltac:(M.monadic ( - let _ := M.assign_op_local (| - BinOp.mult, - "res", - M.get_name (| globals, locals_stack, "s" |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.assign_op_local (| - BinOp.mult, - "s", - M.get_name (| globals, locals_stack, "s" |) - |) in - let _ := M.assign_op_local (| - BinOp.floor_div, - "exponent", - Constant.int 2 - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "res" |) - |) in - M.pure Constant.None_)) - ); - ( - "__ipow__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in - ltac:(M.monadic ( - let _ := M.return_ (| - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), - make_list [ - M.get_name (| globals, locals_stack, "right" |) - ], - make_dict [] - |) - |) in - M.pure Constant.None_)) - ); - ( - "frobenius", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + Constant.int 1 + |), + (* then *) + ltac:(M.monadic ( + let _ := M.assign_op_local (| + BinOp.mult, + "res", + M.get_name (| globals, locals_stack, "s" |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.assign_op_local (| + BinOp.mult, + "s", + M.get_name (| globals, locals_stack, "s" |) + |) in + let _ := M.assign_op_local (| + BinOp.floor_div, + "exponent", + Constant.int 2 + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "res" |) + |) in + M.pure Constant.None_)) + ); + ( + "__ipow__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "right" ] in + ltac:(M.monadic ( + let _ := M.return_ (| + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "__pow__" |), + make_list [ + M.get_name (| globals, locals_stack, "right" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ); + ( + "frobenius", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " Returns `self ** p`. This function is known as the Frobenius endomorphism and has many special mathematical properties. In particular it is extremely cheap to compute compared to other exponentiations. " in - let _ := M.assign_local (| - "ans" , - M.call (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "from_int" |), - make_list [ - Constant.int 0 - ], - make_dict [] - |) - |) in + let _ := M.assign_local (| + "ans" , + M.call (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "from_int" |), + make_list [ + Constant.int 0 + ], + make_dict [] + |) + |) in (* At stmt: unsupported node type: AnnAssign *) - let _ := - M.for_ (| - make_tuple [ M.get_name (| globals, locals_stack, "i" |); M.get_name (| globals, locals_stack, "a" |) ], - M.call (| + let _ := + M.for_ (| + make_tuple [ M.get_name (| globals, locals_stack, "i" |); M.get_name (| globals, locals_stack, "a" |) ], + M.call (| M.get_name (| globals, locals_stack, "enumerate" |), make_list [ M.get_name (| globals, locals_stack, "self" |) ], make_dict [] |), - ltac:(M.monadic ( - let _ := M.assign_op_local (| - BinOp.add, - "ans", - M.call (| + ltac:(M.monadic ( + let _ := M.assign_op_local (| + BinOp.add, + "ans", + M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "cast" |), make_list [ @@ -2296,16 +2303,17 @@ Definition GaloisField : Value.t := ], make_dict [] |) - |) in - M.pure Constant.None_ - )), - ltac:(M.monadic ( - M.pure Constant.None_ - )) - |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "ans" |) - |) in - M.pure Constant.None_)) - ) - ]. + |) in + M.pure Constant.None_ + )), + ltac:(M.monadic ( + M.pure Constant.None_ + )) + |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "ans" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. diff --git a/CoqOfPython/ethereum/dao_fork/blocks.v b/CoqOfPython/ethereum/dao_fork/blocks.v index ddecfb8..ac202af 100644 --- a/CoqOfPython/ethereum/dao_fork/blocks.v +++ b/CoqOfPython/ethereum/dao_fork/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_dao_fork_fork_types_imports_Root : Axiom ethereum_dao_fork_transactions_imports_Transaction : IsImported globals "ethereum.dao_fork.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/dao_fork/fork.v b/CoqOfPython/ethereum/dao_fork/fork.v index c21ef9d..1d33802 100644 --- a/CoqOfPython/ethereum/dao_fork/fork.v +++ b/CoqOfPython/ethereum/dao_fork/fork.v @@ -179,15 +179,14 @@ Definition MAX_OMMER_DEPTH : Value.t := M.run ltac:(M.monadic ( Constant.int 6 )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -938,15 +937,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/dao_fork/fork_types.v b/CoqOfPython/ethereum/dao_fork/fork_types.v index 0a9b4d5..43454a9 100644 --- a/CoqOfPython/ethereum/dao_fork/fork_types.v +++ b/CoqOfPython/ethereum/dao_fork/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/dao_fork/state.v b/CoqOfPython/ethereum/dao_fork/state.v index 51f8471..86a5fa7 100644 --- a/CoqOfPython/ethereum/dao_fork/state.v +++ b/CoqOfPython/ethereum/dao_fork/state.v @@ -74,15 +74,14 @@ Axiom ethereum_dao_fork_trie_imports_trie_get : Axiom ethereum_dao_fork_trie_imports_trie_set : IsImported globals "ethereum.dao_fork.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/dao_fork/transactions.v b/CoqOfPython/ethereum/dao_fork/transactions.v index 3da1347..b17015b 100644 --- a/CoqOfPython/ethereum/dao_fork/transactions.v +++ b/CoqOfPython/ethereum/dao_fork/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/dao_fork/trie.v b/CoqOfPython/ethereum/dao_fork/trie.v index 876db76..5596053 100644 --- a/CoqOfPython/ethereum/dao_fork/trie.v +++ b/CoqOfPython/ethereum/dao_fork/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/dao_fork/vm/__init__.v b/CoqOfPython/ethereum/dao_fork/vm/__init__.v index e084d76..ecaadbd 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/__init__.v +++ b/CoqOfPython/ethereum/dao_fork/vm/__init__.v @@ -59,35 +59,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/dao_fork/vm/exceptions.v b/CoqOfPython/ethereum/dao_fork/vm/exceptions.v index 8544beb..2b70d8a 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/exceptions.v +++ b/CoqOfPython/ethereum/dao_fork/vm/exceptions.v @@ -22,59 +22,59 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -85,40 +85,41 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/dao_fork/vm/gas.v b/CoqOfPython/ethereum/dao_fork/vm/gas.v index e234492..8b52259 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/gas.v +++ b/CoqOfPython/ethereum/dao_fork/vm/gas.v @@ -424,25 +424,23 @@ Definition GAS_IDENTITY_WORD : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v b/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v index e8eadb1..1d762e0 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_dao_fork_vm_instructions_imports_storage : Axiom ethereum_dao_fork_vm_instructions_imports_system : IsImported globals "ethereum.dao_fork.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/dao_fork/vm/interpreter.v b/CoqOfPython/ethereum/dao_fork/vm/interpreter.v index fa172b4..b390d01 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/interpreter.v +++ b/CoqOfPython/ethereum/dao_fork/vm/interpreter.v @@ -119,15 +119,14 @@ Definition STACK_DEPTH_LIMIT : Value.t := M.run ltac:(M.monadic ( |) )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/exceptions.v b/CoqOfPython/ethereum/exceptions.v index 4823691..7d09bca 100644 --- a/CoqOfPython/ethereum/exceptions.v +++ b/CoqOfPython/ethereum/exceptions.v @@ -19,42 +19,42 @@ Introduction The Ethereum specification exception classes. ". -Definition EthereumException : Value.t := - builtins.make_klass - [(globals, "Exception")] - [ - - ] - [ - - ]. - -Definition InvalidBlock : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition RLPDecodingError : Value.t := - builtins.make_klass - [(globals, "InvalidBlock")] - [ - - ] - [ - - ]. - -Definition RLPEncodingError : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. +Definition EthereumException : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "Exception") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidBlock : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition RLPDecodingError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "InvalidBlock") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition RLPEncodingError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/fork_criteria.v b/CoqOfPython/ethereum/fork_criteria.v index f4745fa..8cf9130 100644 --- a/CoqOfPython/ethereum/fork_criteria.v +++ b/CoqOfPython/ethereum/fork_criteria.v @@ -31,257 +31,261 @@ Axiom typing_imports_Final : Axiom typing_imports_Tuple : IsImported globals "typing" "Tuple". -Definition ForkCriteria : Value.t := - builtins.make_klass - [(globals, "ABC")] - [ - - ] - [ - ( - "__eq__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition ForkCriteria : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ABC") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__eq__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in + ltac:(M.monadic ( + let _ := Constant.str " Equality for fork criteria. " in - let _ := - (* if *) - M.if_then_else (| - M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "other" |); - M.get_name (| globals, locals_stack, "ForkCriteria" |) - ], - make_dict [] - |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - Compare.eq (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), - M.get_field (| M.get_name (| globals, locals_stack, "other" |), "_internal" |) - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_)) - ); - ( - "__lt__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in + let _ := + (* if *) + M.if_then_else (| + M.call (| + M.get_name (| globals, locals_stack, "isinstance" |), + make_list [ + M.get_name (| globals, locals_stack, "other" |); + M.get_name (| globals, locals_stack, "ForkCriteria" |) + ], + make_dict [] + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Compare.eq (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), + M.get_field (| M.get_name (| globals, locals_stack, "other" |), "_internal" |) + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_)) + ); + ( + "__lt__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "other" ] in + ltac:(M.monadic ( + let _ := Constant.str " Ordering for fork criteria. Block number forks are before timestamp forks and scheduled forks are before unscheduled forks. " in - let _ := - (* if *) - M.if_then_else (| - M.call (| - M.get_name (| globals, locals_stack, "isinstance" |), - make_list [ - M.get_name (| globals, locals_stack, "other" |); - M.get_name (| globals, locals_stack, "ForkCriteria" |) - ], - make_dict [] - |), - (* then *) - ltac:(M.monadic ( - let _ := M.return_ (| - Compare.lt (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), - M.get_field (| M.get_name (| globals, locals_stack, "other" |), "_internal" |) - |) - |) in - M.pure Constant.None_ - (* else *) - )), ltac:(M.monadic ( - M.pure Constant.None_ - )) |) in - let _ := M.return_ (| - M.get_name (| globals, locals_stack, "NotImplemented" |) - |) in - M.pure Constant.None_)) - ); - ( - "__hash__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " - `ForkCriteria` is hashable, so it can be stored in dictionaries. - " in - let _ := M.return_ (| + let _ := + (* if *) + M.if_then_else (| M.call (| - M.get_name (| globals, locals_stack, "hash" |), + M.get_name (| globals, locals_stack, "isinstance" |), make_list [ - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |) + M.get_name (| globals, locals_stack, "other" |); + M.get_name (| globals, locals_stack, "ForkCriteria" |) ], make_dict [] - |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition ByBlockNumber : Value.t := - builtins.make_klass - [(globals, "ForkCriteria")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number" ] in - ltac:(M.monadic ( - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "BLOCK_NUMBER" |); M.get_name (| globals, locals_stack, "block_number" |) ] - |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "block_number" |), - M.get_name (| globals, locals_stack, "block_number" |) - |) in - M.pure Constant.None_)) - ); - ( - "check", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in + |), + (* then *) ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Compare.lt (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), + M.get_field (| M.get_name (| globals, locals_stack, "other" |), "_internal" |) + |) + |) in + M.pure Constant.None_ + (* else *) + )), ltac:(M.monadic ( + M.pure Constant.None_ + )) |) in + let _ := M.return_ (| + M.get_name (| globals, locals_stack, "NotImplemented" |) + |) in + M.pure Constant.None_)) + ); + ( + "__hash__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " + `ForkCriteria` is hashable, so it can be stored in dictionaries. + " in + let _ := M.return_ (| + M.call (| + M.get_name (| globals, locals_stack, "hash" |), + make_list [ + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |) + ], + make_dict [] + |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition ByBlockNumber : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ForkCriteria") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number" ] in + ltac:(M.monadic ( + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "BLOCK_NUMBER" |); M.get_name (| globals, locals_stack, "block_number" |) ] + |) in + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "block_number" |), + M.get_name (| globals, locals_stack, "block_number" |) + |) in + M.pure Constant.None_)) + ); + ( + "check", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in + ltac:(M.monadic ( + let _ := Constant.str " Check whether the block number has been reached. " in - let _ := M.return_ (| - Compare.gt_e (| - M.get_name (| globals, locals_stack, "block_number" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "block_number" |) - |) - |) in - M.pure Constant.None_)) - ); - ( - "__repr__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Compare.gt_e (| + M.get_name (| globals, locals_stack, "block_number" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "block_number" |) + |) + |) in + M.pure Constant.None_)) + ); + ( + "__repr__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " String representation of this object. " in - let _ := M.return_ (| - Constant.str "(* At expr: unsupported node type: JoinedStr *)" - |) in - M.pure Constant.None_)) - ) - ]. - -Definition ByTimestamp : Value.t := - builtins.make_klass - [(globals, "ForkCriteria")] - [ + let _ := M.return_ (| + Constant.str "(* At expr: unsupported node type: JoinedStr *)" + |) in + M.pure Constant.None_)) + ) + ] +|}. - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "timestamp" ] in - ltac:(M.monadic ( - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "TIMESTAMP" |); M.get_name (| globals, locals_stack, "timestamp" |) ] - |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "timestamp" |), - M.get_name (| globals, locals_stack, "timestamp" |) - |) in - M.pure Constant.None_)) - ); - ( - "check", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition ByTimestamp : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ForkCriteria") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "timestamp" ] in + ltac:(M.monadic ( + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "TIMESTAMP" |); M.get_name (| globals, locals_stack, "timestamp" |) ] + |) in + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "timestamp" |), + M.get_name (| globals, locals_stack, "timestamp" |) + |) in + M.pure Constant.None_)) + ); + ( + "check", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in + ltac:(M.monadic ( + let _ := Constant.str " Check whether the timestamp has been reached. " in - let _ := M.return_ (| - Compare.gt_e (| - M.get_name (| globals, locals_stack, "timestamp" |), - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "timestamp" |) - |) - |) in - M.pure Constant.None_)) - ); - ( - "__repr__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Compare.gt_e (| + M.get_name (| globals, locals_stack, "timestamp" |), + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "timestamp" |) + |) + |) in + M.pure Constant.None_)) + ); + ( + "__repr__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " String representation of this object. " in - let _ := M.return_ (| - Constant.str "(* At expr: unsupported node type: JoinedStr *)" - |) in - M.pure Constant.None_)) - ) - ]. - -Definition Unscheduled : Value.t := - builtins.make_klass - [(globals, "ForkCriteria")] - [ + let _ := M.return_ (| + Constant.str "(* At expr: unsupported node type: JoinedStr *)" + |) in + M.pure Constant.None_)) + ) + ] +|}. - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), - make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "UNSCHEDULED" |); Constant.int 0 ] - |) in - M.pure Constant.None_)) - ); - ( - "check", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in - ltac:(M.monadic ( - let _ := Constant.str " +Definition Unscheduled : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ForkCriteria") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "_internal" |), + make_tuple [ M.get_field (| M.get_name (| globals, locals_stack, "ForkCriteria" |), "UNSCHEDULED" |); Constant.int 0 ] + |) in + M.pure Constant.None_)) + ); + ( + "check", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "block_number"; "timestamp" ] in + ltac:(M.monadic ( + let _ := Constant.str " Unscheduled forks never occur. " in - let _ := M.return_ (| - Constant.bool false - |) in - M.pure Constant.None_)) - ); - ( - "__repr__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in - ltac:(M.monadic ( - let _ := Constant.str " + let _ := M.return_ (| + Constant.bool false + |) in + M.pure Constant.None_)) + ); + ( + "__repr__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self" ] in + ltac:(M.monadic ( + let _ := Constant.str " String representation of this object. " in - let _ := M.return_ (| - Constant.str "Unscheduled()" - |) in - M.pure Constant.None_)) - ) - ]. + let _ := M.return_ (| + Constant.str "Unscheduled()" + |) in + M.pure Constant.None_)) + ) + ] +|}. diff --git a/CoqOfPython/ethereum/frontier/blocks.v b/CoqOfPython/ethereum/frontier/blocks.v index e976a96..da1d440 100644 --- a/CoqOfPython/ethereum/frontier/blocks.v +++ b/CoqOfPython/ethereum/frontier/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_frontier_fork_types_imports_Root : Axiom ethereum_frontier_transactions_imports_Transaction : IsImported globals "ethereum.frontier.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/frontier/fork.v b/CoqOfPython/ethereum/frontier/fork.v index 3050de5..4b5e5ec 100644 --- a/CoqOfPython/ethereum/frontier/fork.v +++ b/CoqOfPython/ethereum/frontier/fork.v @@ -167,15 +167,14 @@ Definition MAX_OMMER_DEPTH : Value.t := M.run ltac:(M.monadic ( Constant.int 6 )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -876,15 +875,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/frontier/fork_types.v b/CoqOfPython/ethereum/frontier/fork_types.v index 36db524..362b97d 100644 --- a/CoqOfPython/ethereum/frontier/fork_types.v +++ b/CoqOfPython/ethereum/frontier/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/frontier/state.v b/CoqOfPython/ethereum/frontier/state.v index bafaf00..5458a05 100644 --- a/CoqOfPython/ethereum/frontier/state.v +++ b/CoqOfPython/ethereum/frontier/state.v @@ -74,15 +74,14 @@ Axiom ethereum_frontier_trie_imports_trie_get : Axiom ethereum_frontier_trie_imports_trie_set : IsImported globals "ethereum.frontier.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/frontier/transactions.v b/CoqOfPython/ethereum/frontier/transactions.v index 995a9a0..d7f6ab0 100644 --- a/CoqOfPython/ethereum/frontier/transactions.v +++ b/CoqOfPython/ethereum/frontier/transactions.v @@ -43,12 +43,11 @@ Definition TX_DATA_COST_PER_ZERO : Value.t := M.run ltac:(M.monadic ( Constant.int 4 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/frontier/trie.v b/CoqOfPython/ethereum/frontier/trie.v index ddc6426..2940eb7 100644 --- a/CoqOfPython/ethereum/frontier/trie.v +++ b/CoqOfPython/ethereum/frontier/trie.v @@ -148,35 +148,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -473,15 +470,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/frontier/vm/__init__.v b/CoqOfPython/ethereum/frontier/vm/__init__.v index 8324117..37261a4 100644 --- a/CoqOfPython/ethereum/frontier/vm/__init__.v +++ b/CoqOfPython/ethereum/frontier/vm/__init__.v @@ -59,35 +59,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/frontier/vm/exceptions.v b/CoqOfPython/ethereum/frontier/vm/exceptions.v index e226ebc..f645851 100644 --- a/CoqOfPython/ethereum/frontier/vm/exceptions.v +++ b/CoqOfPython/ethereum/frontier/vm/exceptions.v @@ -22,59 +22,59 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -85,40 +85,41 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/frontier/vm/gas.v b/CoqOfPython/ethereum/frontier/vm/gas.v index 8a4c58b..8e08ded 100644 --- a/CoqOfPython/ethereum/frontier/vm/gas.v +++ b/CoqOfPython/ethereum/frontier/vm/gas.v @@ -424,25 +424,23 @@ Definition GAS_IDENTITY_WORD : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v b/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v index 543b21d..1dadbbc 100644 --- a/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_frontier_vm_instructions_imports_storage : Axiom ethereum_frontier_vm_instructions_imports_system : IsImported globals "ethereum.frontier.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/frontier/vm/interpreter.v b/CoqOfPython/ethereum/frontier/vm/interpreter.v index 09c24c0..4f92e25 100644 --- a/CoqOfPython/ethereum/frontier/vm/interpreter.v +++ b/CoqOfPython/ethereum/frontier/vm/interpreter.v @@ -119,15 +119,14 @@ Definition STACK_DEPTH_LIMIT : Value.t := M.run ltac:(M.monadic ( |) )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/genesis.v b/CoqOfPython/ethereum/genesis.v index 0110c66..b62402d 100644 --- a/CoqOfPython/ethereum/genesis.v +++ b/CoqOfPython/ethereum/genesis.v @@ -67,15 +67,14 @@ Definition Address : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes20" |) )). -Definition GenesisConfiguration : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition GenesisConfiguration : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition get_genesis_configuration : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/blocks.v b/CoqOfPython/ethereum/gray_glacier/blocks.v index 2713c4f..292c7e1 100644 --- a/CoqOfPython/ethereum/gray_glacier/blocks.v +++ b/CoqOfPython/ethereum/gray_glacier/blocks.v @@ -50,42 +50,38 @@ Axiom ethereum_gray_glacier_fork_types_imports_Root : Axiom ethereum_gray_glacier_transactions_imports_LegacyTransaction : IsImported globals "ethereum.gray_glacier.transactions" "LegacyTransaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/gray_glacier/fork.v b/CoqOfPython/ethereum/gray_glacier/fork.v index 2ef29ca..779518e 100644 --- a/CoqOfPython/ethereum/gray_glacier/fork.v +++ b/CoqOfPython/ethereum/gray_glacier/fork.v @@ -216,15 +216,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1267,15 +1266,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/fork_types.v b/CoqOfPython/ethereum/gray_glacier/fork_types.v index 75bf012..ff279e1 100644 --- a/CoqOfPython/ethereum/gray_glacier/fork_types.v +++ b/CoqOfPython/ethereum/gray_glacier/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/gray_glacier/state.v b/CoqOfPython/ethereum/gray_glacier/state.v index 17cb1ef..ad2b023 100644 --- a/CoqOfPython/ethereum/gray_glacier/state.v +++ b/CoqOfPython/ethereum/gray_glacier/state.v @@ -76,15 +76,14 @@ Axiom ethereum_gray_glacier_trie_imports_trie_get : Axiom ethereum_gray_glacier_trie_imports_trie_set : IsImported globals "ethereum.gray_glacier.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/transactions.v b/CoqOfPython/ethereum/gray_glacier/transactions.v index 89d391d..5f42d2d 100644 --- a/CoqOfPython/ethereum/gray_glacier/transactions.v +++ b/CoqOfPython/ethereum/gray_glacier/transactions.v @@ -67,35 +67,32 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/gray_glacier/trie.v b/CoqOfPython/ethereum/gray_glacier/trie.v index 001f2f3..c260fef 100644 --- a/CoqOfPython/ethereum/gray_glacier/trie.v +++ b/CoqOfPython/ethereum/gray_glacier/trie.v @@ -157,35 +157,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -485,15 +482,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/vm/__init__.v b/CoqOfPython/ethereum/gray_glacier/vm/__init__.v index fcf36c9..56180a3 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v b/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v index 9455938..109b93b 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,80 +95,81 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/gray_glacier/vm/gas.v b/CoqOfPython/ethereum/gray_glacier/vm/gas.v index 6691103..6c9b778 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/gas.v @@ -446,25 +446,23 @@ Definition GAS_WARM_ACCESS : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v index aec2c0b..1ab1e7a 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_gray_glacier_vm_instructions_imports_storage : Axiom ethereum_gray_glacier_vm_instructions_imports_system : IsImported globals "ethereum.gray_glacier.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v b/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v index 3227434..b280e73 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v @@ -140,15 +140,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/blocks.v b/CoqOfPython/ethereum/homestead/blocks.v index a91ad83..e49e85b 100644 --- a/CoqOfPython/ethereum/homestead/blocks.v +++ b/CoqOfPython/ethereum/homestead/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_homestead_fork_types_imports_Root : Axiom ethereum_homestead_transactions_imports_Transaction : IsImported globals "ethereum.homestead.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/homestead/fork.v b/CoqOfPython/ethereum/homestead/fork.v index 4f70853..a729ff3 100644 --- a/CoqOfPython/ethereum/homestead/fork.v +++ b/CoqOfPython/ethereum/homestead/fork.v @@ -172,15 +172,14 @@ Definition MAX_OMMER_DEPTH : Value.t := M.run ltac:(M.monadic ( Constant.int 6 )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -881,15 +880,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/fork_types.v b/CoqOfPython/ethereum/homestead/fork_types.v index 59ba66d..9bfa9c5 100644 --- a/CoqOfPython/ethereum/homestead/fork_types.v +++ b/CoqOfPython/ethereum/homestead/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/homestead/state.v b/CoqOfPython/ethereum/homestead/state.v index cfc2954..f7d34b5 100644 --- a/CoqOfPython/ethereum/homestead/state.v +++ b/CoqOfPython/ethereum/homestead/state.v @@ -74,15 +74,14 @@ Axiom ethereum_homestead_trie_imports_trie_get : Axiom ethereum_homestead_trie_imports_trie_set : IsImported globals "ethereum.homestead.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/transactions.v b/CoqOfPython/ethereum/homestead/transactions.v index c51a67c..e2165b1 100644 --- a/CoqOfPython/ethereum/homestead/transactions.v +++ b/CoqOfPython/ethereum/homestead/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/homestead/trie.v b/CoqOfPython/ethereum/homestead/trie.v index 6cc6e14..d798a43 100644 --- a/CoqOfPython/ethereum/homestead/trie.v +++ b/CoqOfPython/ethereum/homestead/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/vm/__init__.v b/CoqOfPython/ethereum/homestead/vm/__init__.v index 4b090d3..4efff12 100644 --- a/CoqOfPython/ethereum/homestead/vm/__init__.v +++ b/CoqOfPython/ethereum/homestead/vm/__init__.v @@ -59,35 +59,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/vm/exceptions.v b/CoqOfPython/ethereum/homestead/vm/exceptions.v index 5a0a5b0..ee0188e 100644 --- a/CoqOfPython/ethereum/homestead/vm/exceptions.v +++ b/CoqOfPython/ethereum/homestead/vm/exceptions.v @@ -22,59 +22,59 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -85,40 +85,41 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/homestead/vm/gas.v b/CoqOfPython/ethereum/homestead/vm/gas.v index 51339bb..5d1ff40 100644 --- a/CoqOfPython/ethereum/homestead/vm/gas.v +++ b/CoqOfPython/ethereum/homestead/vm/gas.v @@ -424,25 +424,23 @@ Definition GAS_IDENTITY_WORD : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v b/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v index 258a081..4ca9fe3 100644 --- a/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_homestead_vm_instructions_imports_storage : Axiom ethereum_homestead_vm_instructions_imports_system : IsImported globals "ethereum.homestead.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/homestead/vm/interpreter.v b/CoqOfPython/ethereum/homestead/vm/interpreter.v index 3bca6f2..80c1596 100644 --- a/CoqOfPython/ethereum/homestead/vm/interpreter.v +++ b/CoqOfPython/ethereum/homestead/vm/interpreter.v @@ -119,15 +119,14 @@ Definition STACK_DEPTH_LIMIT : Value.t := M.run ltac:(M.monadic ( |) )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/blocks.v b/CoqOfPython/ethereum/istanbul/blocks.v index 50a1dcb..169e0d7 100644 --- a/CoqOfPython/ethereum/istanbul/blocks.v +++ b/CoqOfPython/ethereum/istanbul/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_istanbul_fork_types_imports_Root : Axiom ethereum_istanbul_transactions_imports_Transaction : IsImported globals "ethereum.istanbul.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/istanbul/fork.v b/CoqOfPython/ethereum/istanbul/fork.v index cfe8967..ab8fcae 100644 --- a/CoqOfPython/ethereum/istanbul/fork.v +++ b/CoqOfPython/ethereum/istanbul/fork.v @@ -192,15 +192,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -913,15 +912,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/fork_types.v b/CoqOfPython/ethereum/istanbul/fork_types.v index 028fcf9..9d7a542 100644 --- a/CoqOfPython/ethereum/istanbul/fork_types.v +++ b/CoqOfPython/ethereum/istanbul/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/istanbul/state.v b/CoqOfPython/ethereum/istanbul/state.v index 2ac67fd..7e564a9 100644 --- a/CoqOfPython/ethereum/istanbul/state.v +++ b/CoqOfPython/ethereum/istanbul/state.v @@ -76,15 +76,14 @@ Axiom ethereum_istanbul_trie_imports_trie_get : Axiom ethereum_istanbul_trie_imports_trie_set : IsImported globals "ethereum.istanbul.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/transactions.v b/CoqOfPython/ethereum/istanbul/transactions.v index b3f8e81..a52d49b 100644 --- a/CoqOfPython/ethereum/istanbul/transactions.v +++ b/CoqOfPython/ethereum/istanbul/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/istanbul/trie.v b/CoqOfPython/ethereum/istanbul/trie.v index ad14cf0..763792f 100644 --- a/CoqOfPython/ethereum/istanbul/trie.v +++ b/CoqOfPython/ethereum/istanbul/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/vm/__init__.v b/CoqOfPython/ethereum/istanbul/vm/__init__.v index d1881e2..c432932 100644 --- a/CoqOfPython/ethereum/istanbul/vm/__init__.v +++ b/CoqOfPython/ethereum/istanbul/vm/__init__.v @@ -66,35 +66,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/vm/exceptions.v b/CoqOfPython/ethereum/istanbul/vm/exceptions.v index 60bd736..6ef21b4 100644 --- a/CoqOfPython/ethereum/istanbul/vm/exceptions.v +++ b/CoqOfPython/ethereum/istanbul/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,70 +95,71 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/istanbul/vm/gas.v b/CoqOfPython/ethereum/istanbul/vm/gas.v index cab2efc..acabd15 100644 --- a/CoqOfPython/ethereum/istanbul/vm/gas.v +++ b/CoqOfPython/ethereum/istanbul/vm/gas.v @@ -476,25 +476,23 @@ Definition GAS_BLAKE2_PER_ROUND : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v b/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v index ac4aa10..29283c7 100644 --- a/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_istanbul_vm_instructions_imports_storage : Axiom ethereum_istanbul_vm_instructions_imports_system : IsImported globals "ethereum.istanbul.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/istanbul/vm/interpreter.v b/CoqOfPython/ethereum/istanbul/vm/interpreter.v index 1bd4026..aeaf533 100644 --- a/CoqOfPython/ethereum/istanbul/vm/interpreter.v +++ b/CoqOfPython/ethereum/istanbul/vm/interpreter.v @@ -138,15 +138,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/blocks.v b/CoqOfPython/ethereum/london/blocks.v index 9c5e31a..941065a 100644 --- a/CoqOfPython/ethereum/london/blocks.v +++ b/CoqOfPython/ethereum/london/blocks.v @@ -50,42 +50,38 @@ Axiom ethereum_london_fork_types_imports_Root : Axiom ethereum_london_transactions_imports_LegacyTransaction : IsImported globals "ethereum.london.transactions" "LegacyTransaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/london/fork.v b/CoqOfPython/ethereum/london/fork.v index 1ffb61f..fa6334c 100644 --- a/CoqOfPython/ethereum/london/fork.v +++ b/CoqOfPython/ethereum/london/fork.v @@ -222,15 +222,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1303,15 +1302,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/fork_types.v b/CoqOfPython/ethereum/london/fork_types.v index 7a3b0ad..6dfd489 100644 --- a/CoqOfPython/ethereum/london/fork_types.v +++ b/CoqOfPython/ethereum/london/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/london/state.v b/CoqOfPython/ethereum/london/state.v index 0a2ceac..20083ba 100644 --- a/CoqOfPython/ethereum/london/state.v +++ b/CoqOfPython/ethereum/london/state.v @@ -76,15 +76,14 @@ Axiom ethereum_london_trie_imports_trie_get : Axiom ethereum_london_trie_imports_trie_set : IsImported globals "ethereum.london.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/transactions.v b/CoqOfPython/ethereum/london/transactions.v index fad63b0..ee0068c 100644 --- a/CoqOfPython/ethereum/london/transactions.v +++ b/CoqOfPython/ethereum/london/transactions.v @@ -67,35 +67,32 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/london/trie.v b/CoqOfPython/ethereum/london/trie.v index f53ebf4..9af659f 100644 --- a/CoqOfPython/ethereum/london/trie.v +++ b/CoqOfPython/ethereum/london/trie.v @@ -157,35 +157,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -485,15 +482,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/vm/__init__.v b/CoqOfPython/ethereum/london/vm/__init__.v index b37bda2..a90b060 100644 --- a/CoqOfPython/ethereum/london/vm/__init__.v +++ b/CoqOfPython/ethereum/london/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/vm/exceptions.v b/CoqOfPython/ethereum/london/vm/exceptions.v index 9c5da7a..c132052 100644 --- a/CoqOfPython/ethereum/london/vm/exceptions.v +++ b/CoqOfPython/ethereum/london/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,80 +95,81 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/london/vm/gas.v b/CoqOfPython/ethereum/london/vm/gas.v index 43df28d..f28d0ab 100644 --- a/CoqOfPython/ethereum/london/vm/gas.v +++ b/CoqOfPython/ethereum/london/vm/gas.v @@ -446,25 +446,23 @@ Definition GAS_WARM_ACCESS : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/london/vm/instructions/__init__.v b/CoqOfPython/ethereum/london/vm/instructions/__init__.v index 3d27c13..0d2e30c 100644 --- a/CoqOfPython/ethereum/london/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/london/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_london_vm_instructions_imports_storage : Axiom ethereum_london_vm_instructions_imports_system : IsImported globals "ethereum.london.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/london/vm/interpreter.v b/CoqOfPython/ethereum/london/vm/interpreter.v index ef00b6b..3290e55 100644 --- a/CoqOfPython/ethereum/london/vm/interpreter.v +++ b/CoqOfPython/ethereum/london/vm/interpreter.v @@ -140,15 +140,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/blocks.v b/CoqOfPython/ethereum/muir_glacier/blocks.v index 7b797d3..e768dcb 100644 --- a/CoqOfPython/ethereum/muir_glacier/blocks.v +++ b/CoqOfPython/ethereum/muir_glacier/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_muir_glacier_fork_types_imports_Root : Axiom ethereum_muir_glacier_transactions_imports_Transaction : IsImported globals "ethereum.muir_glacier.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/muir_glacier/fork.v b/CoqOfPython/ethereum/muir_glacier/fork.v index 4b82429..bf0b5a3 100644 --- a/CoqOfPython/ethereum/muir_glacier/fork.v +++ b/CoqOfPython/ethereum/muir_glacier/fork.v @@ -192,15 +192,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -913,15 +912,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/fork_types.v b/CoqOfPython/ethereum/muir_glacier/fork_types.v index f598da2..dca4305 100644 --- a/CoqOfPython/ethereum/muir_glacier/fork_types.v +++ b/CoqOfPython/ethereum/muir_glacier/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/muir_glacier/state.v b/CoqOfPython/ethereum/muir_glacier/state.v index f13b998..a59fd61 100644 --- a/CoqOfPython/ethereum/muir_glacier/state.v +++ b/CoqOfPython/ethereum/muir_glacier/state.v @@ -76,15 +76,14 @@ Axiom ethereum_muir_glacier_trie_imports_trie_get : Axiom ethereum_muir_glacier_trie_imports_trie_set : IsImported globals "ethereum.muir_glacier.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/transactions.v b/CoqOfPython/ethereum/muir_glacier/transactions.v index b62f546..48b52fa 100644 --- a/CoqOfPython/ethereum/muir_glacier/transactions.v +++ b/CoqOfPython/ethereum/muir_glacier/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/muir_glacier/trie.v b/CoqOfPython/ethereum/muir_glacier/trie.v index 9c7cc58..4eaa303 100644 --- a/CoqOfPython/ethereum/muir_glacier/trie.v +++ b/CoqOfPython/ethereum/muir_glacier/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/vm/__init__.v b/CoqOfPython/ethereum/muir_glacier/vm/__init__.v index 39dd981..92df72a 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/__init__.v @@ -66,35 +66,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v b/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v index 7261cd7..0bda233 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,70 +95,71 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/muir_glacier/vm/gas.v b/CoqOfPython/ethereum/muir_glacier/vm/gas.v index 3bd7267..24ce14d 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/gas.v @@ -476,25 +476,23 @@ Definition GAS_BLAKE2_PER_ROUND : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v index 2e0d4f9..791c0aa 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_muir_glacier_vm_instructions_imports_storage : Axiom ethereum_muir_glacier_vm_instructions_imports_system : IsImported globals "ethereum.muir_glacier.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v b/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v index 5edf264..790dc2d 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v @@ -138,15 +138,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/blocks.v b/CoqOfPython/ethereum/paris/blocks.v index 0b69d9c..368b996 100644 --- a/CoqOfPython/ethereum/paris/blocks.v +++ b/CoqOfPython/ethereum/paris/blocks.v @@ -50,42 +50,38 @@ Axiom ethereum_paris_fork_types_imports_Root : Axiom ethereum_paris_transactions_imports_LegacyTransaction : IsImported globals "ethereum.paris.transactions" "LegacyTransaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/paris/fork.v b/CoqOfPython/ethereum/paris/fork.v index 1c063d1..7536413 100644 --- a/CoqOfPython/ethereum/paris/fork.v +++ b/CoqOfPython/ethereum/paris/fork.v @@ -171,15 +171,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1065,15 +1064,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/fork_types.v b/CoqOfPython/ethereum/paris/fork_types.v index 993db55..61229e8 100644 --- a/CoqOfPython/ethereum/paris/fork_types.v +++ b/CoqOfPython/ethereum/paris/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/paris/state.v b/CoqOfPython/ethereum/paris/state.v index 031eed2..1f9c6c8 100644 --- a/CoqOfPython/ethereum/paris/state.v +++ b/CoqOfPython/ethereum/paris/state.v @@ -76,15 +76,14 @@ Axiom ethereum_paris_trie_imports_trie_get : Axiom ethereum_paris_trie_imports_trie_set : IsImported globals "ethereum.paris.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/transactions.v b/CoqOfPython/ethereum/paris/transactions.v index bd79adc..c6ff854 100644 --- a/CoqOfPython/ethereum/paris/transactions.v +++ b/CoqOfPython/ethereum/paris/transactions.v @@ -67,35 +67,32 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/paris/trie.v b/CoqOfPython/ethereum/paris/trie.v index 3366830..385b2ac 100644 --- a/CoqOfPython/ethereum/paris/trie.v +++ b/CoqOfPython/ethereum/paris/trie.v @@ -157,35 +157,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -485,15 +482,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/vm/__init__.v b/CoqOfPython/ethereum/paris/vm/__init__.v index 5c7b2c3..78b4061 100644 --- a/CoqOfPython/ethereum/paris/vm/__init__.v +++ b/CoqOfPython/ethereum/paris/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/vm/exceptions.v b/CoqOfPython/ethereum/paris/vm/exceptions.v index 3b460e3..90fade9 100644 --- a/CoqOfPython/ethereum/paris/vm/exceptions.v +++ b/CoqOfPython/ethereum/paris/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,80 +95,81 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/paris/vm/gas.v b/CoqOfPython/ethereum/paris/vm/gas.v index b900f56..c039eda 100644 --- a/CoqOfPython/ethereum/paris/vm/gas.v +++ b/CoqOfPython/ethereum/paris/vm/gas.v @@ -446,25 +446,23 @@ Definition GAS_WARM_ACCESS : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/paris/vm/instructions/__init__.v b/CoqOfPython/ethereum/paris/vm/instructions/__init__.v index 14189e3..4d9a30f 100644 --- a/CoqOfPython/ethereum/paris/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/paris/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_paris_vm_instructions_imports_storage : Axiom ethereum_paris_vm_instructions_imports_system : IsImported globals "ethereum.paris.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/paris/vm/interpreter.v b/CoqOfPython/ethereum/paris/vm/interpreter.v index 77362be..fe2778f 100644 --- a/CoqOfPython/ethereum/paris/vm/interpreter.v +++ b/CoqOfPython/ethereum/paris/vm/interpreter.v @@ -142,15 +142,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/blocks.v b/CoqOfPython/ethereum/shanghai/blocks.v index ae02dbc..89fa766 100644 --- a/CoqOfPython/ethereum/shanghai/blocks.v +++ b/CoqOfPython/ethereum/shanghai/blocks.v @@ -52,52 +52,47 @@ Axiom ethereum_shanghai_fork_types_imports_Root : Axiom ethereum_shanghai_transactions_imports_LegacyTransaction : IsImported globals "ethereum.shanghai.transactions" "LegacyTransaction". -Definition Withdrawal : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Withdrawal : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/shanghai/fork.v b/CoqOfPython/ethereum/shanghai/fork.v index beccf17..ea839a7 100644 --- a/CoqOfPython/ethereum/shanghai/fork.v +++ b/CoqOfPython/ethereum/shanghai/fork.v @@ -180,15 +180,14 @@ Definition EMPTY_OMMER_HASH : Value.t := M.run ltac:(M.monadic ( |) )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -1086,15 +1085,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/fork_types.v b/CoqOfPython/ethereum/shanghai/fork_types.v index 79ab0bb..ebdf95a 100644 --- a/CoqOfPython/ethereum/shanghai/fork_types.v +++ b/CoqOfPython/ethereum/shanghai/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/shanghai/state.v b/CoqOfPython/ethereum/shanghai/state.v index 2ff575b..af12d3a 100644 --- a/CoqOfPython/ethereum/shanghai/state.v +++ b/CoqOfPython/ethereum/shanghai/state.v @@ -79,15 +79,14 @@ Axiom ethereum_shanghai_trie_imports_trie_get : Axiom ethereum_shanghai_trie_imports_trie_set : IsImported globals "ethereum.shanghai.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/transactions.v b/CoqOfPython/ethereum/shanghai/transactions.v index d8710f6..c7dac22 100644 --- a/CoqOfPython/ethereum/shanghai/transactions.v +++ b/CoqOfPython/ethereum/shanghai/transactions.v @@ -67,35 +67,32 @@ Definition TX_ACCESS_LIST_STORAGE_KEY_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 1900 )). -Definition LegacyTransaction : Value.t := - builtins.make_klass - [] - [ +Definition LegacyTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition AccessListTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition AccessListTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition FeeMarketTransaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition FeeMarketTransaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/CoqOfPython/ethereum/shanghai/trie.v b/CoqOfPython/ethereum/shanghai/trie.v index fc4508e..d38b6ab 100644 --- a/CoqOfPython/ethereum/shanghai/trie.v +++ b/CoqOfPython/ethereum/shanghai/trie.v @@ -166,35 +166,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -494,15 +491,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/vm/__init__.v b/CoqOfPython/ethereum/shanghai/vm/__init__.v index 7d9e4eb..f87921b 100644 --- a/CoqOfPython/ethereum/shanghai/vm/__init__.v +++ b/CoqOfPython/ethereum/shanghai/vm/__init__.v @@ -68,35 +68,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ] - [ +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/vm/exceptions.v b/CoqOfPython/ethereum/shanghai/vm/exceptions.v index b62f125..07fa5d1 100644 --- a/CoqOfPython/ethereum/shanghai/vm/exceptions.v +++ b/CoqOfPython/ethereum/shanghai/vm/exceptions.v @@ -22,69 +22,69 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition Revert : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Revert : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -95,80 +95,81 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition WriteInStaticContext : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfBoundsRead : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidParameter : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidContractPrefix : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition WriteInStaticContext : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfBoundsRead : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidParameter : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidContractPrefix : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/shanghai/vm/gas.v b/CoqOfPython/ethereum/shanghai/vm/gas.v index 948212e..1f4de0d 100644 --- a/CoqOfPython/ethereum/shanghai/vm/gas.v +++ b/CoqOfPython/ethereum/shanghai/vm/gas.v @@ -450,25 +450,23 @@ Definition GAS_INIT_CODE_WORD_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 2 )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v b/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v index 3e8b12d..47ad049 100644 --- a/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_shanghai_vm_instructions_imports_storage : Axiom ethereum_shanghai_vm_instructions_imports_system : IsImported globals "ethereum.shanghai.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/shanghai/vm/interpreter.v b/CoqOfPython/ethereum/shanghai/vm/interpreter.v index 5e4ca3c..37e75a0 100644 --- a/CoqOfPython/ethereum/shanghai/vm/interpreter.v +++ b/CoqOfPython/ethereum/shanghai/vm/interpreter.v @@ -142,15 +142,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/blocks.v b/CoqOfPython/ethereum/spurious_dragon/blocks.v index b0c41a7..a8dcdb7 100644 --- a/CoqOfPython/ethereum/spurious_dragon/blocks.v +++ b/CoqOfPython/ethereum/spurious_dragon/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_spurious_dragon_fork_types_imports_Root : Axiom ethereum_spurious_dragon_transactions_imports_Transaction : IsImported globals "ethereum.spurious_dragon.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/spurious_dragon/fork.v b/CoqOfPython/ethereum/spurious_dragon/fork.v index 5e200e3..76b279a 100644 --- a/CoqOfPython/ethereum/spurious_dragon/fork.v +++ b/CoqOfPython/ethereum/spurious_dragon/fork.v @@ -174,15 +174,14 @@ Definition MAX_OMMER_DEPTH : Value.t := M.run ltac:(M.monadic ( Constant.int 6 )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -887,15 +886,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/fork_types.v b/CoqOfPython/ethereum/spurious_dragon/fork_types.v index 53d3315..5ebfa8b 100644 --- a/CoqOfPython/ethereum/spurious_dragon/fork_types.v +++ b/CoqOfPython/ethereum/spurious_dragon/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/spurious_dragon/state.v b/CoqOfPython/ethereum/spurious_dragon/state.v index 67e6e39..da17ff9 100644 --- a/CoqOfPython/ethereum/spurious_dragon/state.v +++ b/CoqOfPython/ethereum/spurious_dragon/state.v @@ -74,15 +74,14 @@ Axiom ethereum_spurious_dragon_trie_imports_trie_get : Axiom ethereum_spurious_dragon_trie_imports_trie_set : IsImported globals "ethereum.spurious_dragon.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/transactions.v b/CoqOfPython/ethereum/spurious_dragon/transactions.v index d732447..4f7e8df 100644 --- a/CoqOfPython/ethereum/spurious_dragon/transactions.v +++ b/CoqOfPython/ethereum/spurious_dragon/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/spurious_dragon/trie.v b/CoqOfPython/ethereum/spurious_dragon/trie.v index 8186244..13f5c66 100644 --- a/CoqOfPython/ethereum/spurious_dragon/trie.v +++ b/CoqOfPython/ethereum/spurious_dragon/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v b/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v index 9e0ded2..f800f18 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v @@ -64,35 +64,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v b/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v index 324690f..7bf97a1 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v @@ -22,59 +22,59 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -85,40 +85,41 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/gas.v b/CoqOfPython/ethereum/spurious_dragon/vm/gas.v index a9c89f9..80962a1 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/gas.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/gas.v @@ -436,25 +436,23 @@ Definition GAS_IDENTITY_WORD : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v b/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v index e153214..c3fd68a 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_spurious_dragon_vm_instructions_imports_storage : Axiom ethereum_spurious_dragon_vm_instructions_imports_system : IsImported globals "ethereum.spurious_dragon.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v b/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v index 7491047..74b6936 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v @@ -134,15 +134,14 @@ Definition MAX_CODE_SIZE : Value.t := M.run ltac:(M.monadic ( Constant.int 24576 )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/blocks.v b/CoqOfPython/ethereum/tangerine_whistle/blocks.v index 17115ef..b349689 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/blocks.v +++ b/CoqOfPython/ethereum/tangerine_whistle/blocks.v @@ -48,42 +48,38 @@ Axiom ethereum_tangerine_whistle_fork_types_imports_Root : Axiom ethereum_tangerine_whistle_transactions_imports_Transaction : IsImported globals "ethereum.tangerine_whistle.transactions" "Transaction". -Definition Header : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Block : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Log : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Receipt : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Header : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Block : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Log : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Receipt : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/fork.v b/CoqOfPython/ethereum/tangerine_whistle/fork.v index 67fab1f..9e450f9 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/fork.v +++ b/CoqOfPython/ethereum/tangerine_whistle/fork.v @@ -172,15 +172,14 @@ Definition MAX_OMMER_DEPTH : Value.t := M.run ltac:(M.monadic ( Constant.int 6 )). -Definition BlockChain : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition BlockChain : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_fork : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => @@ -881,15 +880,14 @@ Definition make_receipt : Value.t -> Value.t -> M := Axiom make_receipt_in_globals : IsInGlobals globals "make_receipt" (make_function make_receipt). -Definition ApplyBodyOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ApplyBodyOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition apply_body : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/fork_types.v b/CoqOfPython/ethereum/tangerine_whistle/fork_types.v index eafa82a..850aba8 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/fork_types.v +++ b/CoqOfPython/ethereum/tangerine_whistle/fork_types.v @@ -55,15 +55,14 @@ Definition Bloom : Value.t := M.run ltac:(M.monadic ( M.get_name (| globals, locals_stack, "Bytes256" |) )). -Definition Account : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Account : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( M.call (| diff --git a/CoqOfPython/ethereum/tangerine_whistle/state.v b/CoqOfPython/ethereum/tangerine_whistle/state.v index 1f1a695..63aed57 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/state.v +++ b/CoqOfPython/ethereum/tangerine_whistle/state.v @@ -74,15 +74,14 @@ Axiom ethereum_tangerine_whistle_trie_imports_trie_get : Axiom ethereum_tangerine_whistle_trie_imports_trie_set : IsImported globals "ethereum.tangerine_whistle.trie" "trie_set". -Definition State : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition State : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition close_state : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/transactions.v b/CoqOfPython/ethereum/tangerine_whistle/transactions.v index 20fa717..60993f2 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/transactions.v +++ b/CoqOfPython/ethereum/tangerine_whistle/transactions.v @@ -47,12 +47,11 @@ Definition TX_CREATE_COST : Value.t := M.run ltac:(M.monadic ( Constant.int 32000 )). -Definition Transaction : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Transaction : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/trie.v b/CoqOfPython/ethereum/tangerine_whistle/trie.v index cf17d7f..9ccbfc8 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/trie.v +++ b/CoqOfPython/ethereum/tangerine_whistle/trie.v @@ -151,35 +151,32 @@ Definition V : Value.t := M.run ltac:(M.monadic ( |) )). -Definition LeafNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition ExtensionNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition BranchNode : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition LeafNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition ExtensionNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition BranchNode : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| @@ -479,15 +476,15 @@ Definition encode_node : Value.t -> Value.t -> M := Axiom encode_node_in_globals : IsInGlobals globals "encode_node" (make_function encode_node). -Definition Trie : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Subscript *)] - [ - - ] - [ - - ]. +Definition Trie : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Subscript *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition copy_trie : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v b/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v index 05e2952..d2c2a07 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v @@ -59,35 +59,32 @@ Definition __all__ : Value.t := M.run ltac:(M.monadic ( make_tuple [ Constant.str "Environment"; Constant.str "Evm"; Constant.str "Message" ] )). -Definition Environment : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Message : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition Evm : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition Environment : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Message : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition Evm : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v b/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v index 2f409fe..d63c896 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v @@ -22,59 +22,59 @@ Exceptions which cause the EVM to halt exceptionally. Axiom ethereum_exceptions_imports_EthereumException : IsImported globals "ethereum.exceptions" "EthereumException". -Definition ExceptionalHalt : Value.t := - builtins.make_klass - [(globals, "EthereumException")] - [ - - ] - [ - - ]. - -Definition StackUnderflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackOverflowError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition OutOfGasError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition InvalidOpcode : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - ( - "__init__", - fun (args kwargs : Value.t) => - let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in - ltac:(M.monadic ( - let _ := M.call (| +Definition ExceptionalHalt : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "EthereumException") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackUnderflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackOverflowError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OutOfGasError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition InvalidOpcode : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ( + "__init__", + fun (args kwargs : Value.t) => + let- locals_stack := M.create_locals locals_stack args kwargs [ "self"; "code" ] in + ltac:(M.monadic ( + let _ := M.call (| M.get_field (| M.call (| M.get_name (| globals, locals_stack, "super" |), make_list [], @@ -85,40 +85,41 @@ Definition InvalidOpcode : Value.t := ], make_dict [] |) in - let _ := M.assign (| - M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), - M.get_name (| globals, locals_stack, "code" |) - |) in - M.pure Constant.None_)) - ) - ]. - -Definition InvalidJumpDestError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition StackDepthLimitError : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. - -Definition AddressCollision : Value.t := - builtins.make_klass - [(globals, "ExceptionalHalt")] - [ - - ] - [ - - ]. + let _ := M.assign (| + M.get_field (| M.get_name (| globals, locals_stack, "self" |), "code" |), + M.get_name (| globals, locals_stack, "code" |) + |) in + M.pure Constant.None_)) + ) + ] +|}. + +Definition InvalidJumpDestError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition StackDepthLimitError : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition AddressCollision : Value.t := builtins.make_klass {| + Klass.bases := [ + (globals, "ExceptionalHalt") + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v b/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v index fe39510..ff2abd1 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v @@ -436,25 +436,23 @@ Definition GAS_IDENTITY_WORD : Value.t := M.run ltac:(M.monadic ( |) )). -Definition ExtendMemory : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition MessageCallGas : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition ExtendMemory : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition MessageCallGas : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition charge_gas : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v b/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v index 6e8a81f..874ac77 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v @@ -63,14 +63,14 @@ Axiom ethereum_tangerine_whistle_vm_instructions_imports_storage : Axiom ethereum_tangerine_whistle_vm_instructions_imports_system : IsImported globals "ethereum.tangerine_whistle.vm.instructions" "system". -Definition Ops : Value.t := - builtins.make_klass - [(* At base: unsupported node type: Attribute *)] - [ - - ] - [ - - ]. +Definition Ops : Value.t := builtins.make_klass {| + Klass.bases := [ + (* At base: unsupported node type: Attribute *) + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v b/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v index 9c806cb..60c1d7a 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v @@ -119,15 +119,14 @@ Definition STACK_DEPTH_LIMIT : Value.t := M.run ltac:(M.monadic ( |) )). -Definition MessageCallOutput : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition MessageCallOutput : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition process_message_call : Value.t -> Value.t -> M := fun (args kwargs : Value.t) => diff --git a/CoqOfPython/ethereum/trace.v b/CoqOfPython/ethereum/trace.v index 4e1cce6..a1337fb 100644 --- a/CoqOfPython/ethereum/trace.v +++ b/CoqOfPython/ethereum/trace.v @@ -31,95 +31,86 @@ Axiom typing_imports_Optional : Axiom typing_imports_Union : IsImported globals "typing" "Union". -Definition TransactionStart : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition TransactionEnd : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition PrecompileStart : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition PrecompileEnd : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition OpStart : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition OpEnd : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition OpException : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition EvmStop : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. - -Definition GasAndRefund : Value.t := - builtins.make_klass - [] - [ - - ] - [ - - ]. +Definition TransactionStart : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition TransactionEnd : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition PrecompileStart : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition PrecompileEnd : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OpStart : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OpEnd : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition OpException : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition EvmStop : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. + +Definition GasAndRefund : Value.t := builtins.make_klass {| + Klass.bases := [ + ]; + Klass.class_methods := [ + ]; + Klass.methods := [ + ] +|}. Definition TraceEvent : Value.t := M.run ltac:(M.monadic ( M.get_subscript (| diff --git a/main.py b/main.py index 8254005..adbd641 100644 --- a/main.py +++ b/main.py @@ -109,55 +109,61 @@ def generate_top_level_stmt(node: ast.stmt): elif isinstance(node, ast.AsyncFunctionDef): return generate_error("top_level_stmt", node) elif isinstance(node, ast.ClassDef): - text = f"Definition {generate_name(node.name)} : Value.t :=\n" - text += generate_indent(1) + "builtins.make_klass\n" + text = f"Definition {generate_name(node.name)} : Value.t := " + text += "builtins.make_klass {|\n" # Bases - text += generate_indent(2) + "[" + text += generate_indent(1) + "Klass.bases := [" not_first = False for base in node.bases: if not_first: - text += "; " + text += ";" + text += "\n" + text += generate_indent(2) if isinstance(base, ast.Name): text += f"(globals, \"{generate_name(base.id)}\")" else: text += generate_error("base", base) not_first = True - text += "]\n" + text += "\n" + text += generate_indent(1) + "];\n" # Class methods - text += generate_indent(2) + "[\n" + text += generate_indent(1) + "Klass.class_methods := [" not_first = False for stmt in node.body: if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 1: decorator = stmt.decorator_list[0] if isinstance(decorator, ast.Name) and decorator.id == "classmethod": if not_first: - text += ";\n" - text += generate_indent(3) + "(\n" - text += generate_indent(4) + f"\"{stmt.name}\"," + "\n" - text += generate_indent(4) - text += generate_function_def_body(4, stmt) + "\n" - text += generate_indent(3) + ")" + text += ";" + text += "\n" + text += generate_indent(2) + "(\n" + text += generate_indent(3) + f"\"{stmt.name}\"," + "\n" + text += generate_indent(3) + text += generate_function_def_body(3, stmt) + "\n" + text += generate_indent(2) + ")" not_first = True text += "\n" - text += generate_indent(2) + "]\n" + text += generate_indent(1) + "];\n" # Methods - text += generate_indent(2) + "[\n" + text += generate_indent(1) + "Klass.methods := [" not_first = False for stmt in node.body: if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 0: if not_first: - text += ";\n" - text += generate_indent(3) + "(\n" - text += generate_indent(4) + f"\"{stmt.name}\"," + "\n" - text += generate_indent(4) - text += generate_function_def_body(4, stmt) + "\n" - text += generate_indent(3) + ")" + text += ";" + text += "\n" + text += generate_indent(2) + "(\n" + text += generate_indent(3) + f"\"{stmt.name}\"," + "\n" + text += generate_indent(3) + text += generate_function_def_body(3, stmt) + "\n" + text += generate_indent(2) + ")" not_first = True text += "\n" - text += generate_indent(2) + "]." + text += generate_indent(1) + "]\n" + text += "|}." return text elif isinstance(node, ast.Assign): From 198fcc181b36e8d1c1adecb809b44cf82cf821b9 Mon Sep 17 00:00:00 2001 From: Guillaume Claret Date: Wed, 15 May 2024 17:29:14 +0200 Subject: [PATCH 2/2] Progress on the proofs --- CoqOfPython/CoqOfPython.v | 45 ++++-- CoqOfPython/ethereum/arrow_glacier/blocks.v | 8 +- CoqOfPython/ethereum/arrow_glacier/fork.v | 4 +- .../ethereum/arrow_glacier/fork_types.v | 2 +- CoqOfPython/ethereum/arrow_glacier/state.v | 2 +- .../ethereum/arrow_glacier/transactions.v | 6 +- CoqOfPython/ethereum/arrow_glacier/trie.v | 10 +- .../ethereum/arrow_glacier/vm/__init__.v | 6 +- .../ethereum/arrow_glacier/vm/exceptions.v | 26 ++-- CoqOfPython/ethereum/arrow_glacier/vm/gas.v | 4 +- .../arrow_glacier/vm/instructions/__init__.v | 4 +- .../ethereum/arrow_glacier/vm/interpreter.v | 2 +- CoqOfPython/ethereum/base_types.v | 30 ++-- CoqOfPython/ethereum/berlin/blocks.v | 8 +- CoqOfPython/ethereum/berlin/fork.v | 4 +- CoqOfPython/ethereum/berlin/fork_types.v | 2 +- CoqOfPython/ethereum/berlin/state.v | 2 +- CoqOfPython/ethereum/berlin/transactions.v | 4 +- CoqOfPython/ethereum/berlin/trie.v | 10 +- CoqOfPython/ethereum/berlin/vm/__init__.v | 6 +- CoqOfPython/ethereum/berlin/vm/exceptions.v | 24 +-- CoqOfPython/ethereum/berlin/vm/gas.v | 4 +- .../berlin/vm/instructions/__init__.v | 4 +- CoqOfPython/ethereum/berlin/vm/interpreter.v | 2 +- CoqOfPython/ethereum/byzantium/blocks.v | 8 +- CoqOfPython/ethereum/byzantium/fork.v | 4 +- CoqOfPython/ethereum/byzantium/fork_types.v | 2 +- CoqOfPython/ethereum/byzantium/state.v | 2 +- CoqOfPython/ethereum/byzantium/transactions.v | 2 +- CoqOfPython/ethereum/byzantium/trie.v | 10 +- CoqOfPython/ethereum/byzantium/vm/__init__.v | 6 +- .../ethereum/byzantium/vm/exceptions.v | 22 +-- CoqOfPython/ethereum/byzantium/vm/gas.v | 4 +- .../byzantium/vm/instructions/__init__.v | 4 +- .../ethereum/byzantium/vm/interpreter.v | 2 +- CoqOfPython/ethereum/cancun/blocks.v | 10 +- CoqOfPython/ethereum/cancun/fork.v | 4 +- CoqOfPython/ethereum/cancun/fork_types.v | 2 +- CoqOfPython/ethereum/cancun/state.v | 4 +- CoqOfPython/ethereum/cancun/transactions.v | 8 +- CoqOfPython/ethereum/cancun/trie.v | 10 +- CoqOfPython/ethereum/cancun/vm/__init__.v | 6 +- CoqOfPython/ethereum/cancun/vm/exceptions.v | 28 ++-- CoqOfPython/ethereum/cancun/vm/gas.v | 4 +- .../cancun/vm/instructions/__init__.v | 4 +- CoqOfPython/ethereum/cancun/vm/interpreter.v | 2 +- CoqOfPython/ethereum/constantinople/blocks.v | 8 +- CoqOfPython/ethereum/constantinople/fork.v | 4 +- .../ethereum/constantinople/fork_types.v | 2 +- CoqOfPython/ethereum/constantinople/state.v | 2 +- .../ethereum/constantinople/transactions.v | 2 +- CoqOfPython/ethereum/constantinople/trie.v | 10 +- .../ethereum/constantinople/vm/__init__.v | 6 +- .../ethereum/constantinople/vm/exceptions.v | 22 +-- CoqOfPython/ethereum/constantinople/vm/gas.v | 4 +- .../constantinople/vm/instructions/__init__.v | 4 +- .../ethereum/constantinople/vm/interpreter.v | 2 +- CoqOfPython/ethereum/crypto/alt_bn128.v | 24 +-- CoqOfPython/ethereum/crypto/blake2.v | 4 +- CoqOfPython/ethereum/crypto/elliptic_curve.v | 4 +- CoqOfPython/ethereum/crypto/finite_field.v | 6 +- CoqOfPython/ethereum/dao_fork/blocks.v | 8 +- CoqOfPython/ethereum/dao_fork/fork.v | 4 +- CoqOfPython/ethereum/dao_fork/fork_types.v | 2 +- CoqOfPython/ethereum/dao_fork/state.v | 2 +- CoqOfPython/ethereum/dao_fork/transactions.v | 2 +- CoqOfPython/ethereum/dao_fork/trie.v | 10 +- CoqOfPython/ethereum/dao_fork/vm/__init__.v | 6 +- CoqOfPython/ethereum/dao_fork/vm/exceptions.v | 16 +- CoqOfPython/ethereum/dao_fork/vm/gas.v | 4 +- .../dao_fork/vm/instructions/__init__.v | 4 +- .../ethereum/dao_fork/vm/interpreter.v | 2 +- CoqOfPython/ethereum/exceptions.v | 8 +- CoqOfPython/ethereum/fork_criteria.v | 8 +- CoqOfPython/ethereum/frontier/blocks.v | 8 +- CoqOfPython/ethereum/frontier/fork.v | 4 +- CoqOfPython/ethereum/frontier/fork_types.v | 2 +- CoqOfPython/ethereum/frontier/state.v | 2 +- CoqOfPython/ethereum/frontier/transactions.v | 2 +- CoqOfPython/ethereum/frontier/trie.v | 10 +- CoqOfPython/ethereum/frontier/vm/__init__.v | 6 +- CoqOfPython/ethereum/frontier/vm/exceptions.v | 16 +- CoqOfPython/ethereum/frontier/vm/gas.v | 4 +- .../frontier/vm/instructions/__init__.v | 4 +- .../ethereum/frontier/vm/interpreter.v | 2 +- CoqOfPython/ethereum/genesis.v | 2 +- CoqOfPython/ethereum/gray_glacier/blocks.v | 8 +- CoqOfPython/ethereum/gray_glacier/fork.v | 4 +- .../ethereum/gray_glacier/fork_types.v | 2 +- CoqOfPython/ethereum/gray_glacier/state.v | 2 +- .../ethereum/gray_glacier/transactions.v | 6 +- CoqOfPython/ethereum/gray_glacier/trie.v | 10 +- .../ethereum/gray_glacier/vm/__init__.v | 6 +- .../ethereum/gray_glacier/vm/exceptions.v | 26 ++-- CoqOfPython/ethereum/gray_glacier/vm/gas.v | 4 +- .../gray_glacier/vm/instructions/__init__.v | 4 +- .../ethereum/gray_glacier/vm/interpreter.v | 2 +- CoqOfPython/ethereum/homestead/blocks.v | 8 +- CoqOfPython/ethereum/homestead/fork.v | 4 +- CoqOfPython/ethereum/homestead/fork_types.v | 2 +- CoqOfPython/ethereum/homestead/state.v | 2 +- CoqOfPython/ethereum/homestead/transactions.v | 2 +- CoqOfPython/ethereum/homestead/trie.v | 10 +- CoqOfPython/ethereum/homestead/vm/__init__.v | 6 +- .../ethereum/homestead/vm/exceptions.v | 16 +- CoqOfPython/ethereum/homestead/vm/gas.v | 4 +- .../homestead/vm/instructions/__init__.v | 4 +- .../ethereum/homestead/vm/interpreter.v | 2 +- CoqOfPython/ethereum/istanbul/blocks.v | 8 +- CoqOfPython/ethereum/istanbul/fork.v | 4 +- CoqOfPython/ethereum/istanbul/fork_types.v | 2 +- CoqOfPython/ethereum/istanbul/state.v | 2 +- CoqOfPython/ethereum/istanbul/transactions.v | 2 +- CoqOfPython/ethereum/istanbul/trie.v | 10 +- CoqOfPython/ethereum/istanbul/vm/__init__.v | 6 +- CoqOfPython/ethereum/istanbul/vm/exceptions.v | 24 +-- CoqOfPython/ethereum/istanbul/vm/gas.v | 4 +- .../istanbul/vm/instructions/__init__.v | 4 +- .../ethereum/istanbul/vm/interpreter.v | 2 +- CoqOfPython/ethereum/london/blocks.v | 8 +- CoqOfPython/ethereum/london/fork.v | 4 +- CoqOfPython/ethereum/london/fork_types.v | 2 +- CoqOfPython/ethereum/london/state.v | 2 +- CoqOfPython/ethereum/london/transactions.v | 6 +- CoqOfPython/ethereum/london/trie.v | 10 +- CoqOfPython/ethereum/london/vm/__init__.v | 6 +- CoqOfPython/ethereum/london/vm/exceptions.v | 26 ++-- CoqOfPython/ethereum/london/vm/gas.v | 4 +- .../london/vm/instructions/__init__.v | 4 +- CoqOfPython/ethereum/london/vm/interpreter.v | 2 +- CoqOfPython/ethereum/muir_glacier/blocks.v | 8 +- CoqOfPython/ethereum/muir_glacier/fork.v | 4 +- .../ethereum/muir_glacier/fork_types.v | 2 +- CoqOfPython/ethereum/muir_glacier/state.v | 2 +- .../ethereum/muir_glacier/transactions.v | 2 +- CoqOfPython/ethereum/muir_glacier/trie.v | 10 +- .../ethereum/muir_glacier/vm/__init__.v | 6 +- .../ethereum/muir_glacier/vm/exceptions.v | 24 +-- CoqOfPython/ethereum/muir_glacier/vm/gas.v | 4 +- .../muir_glacier/vm/instructions/__init__.v | 4 +- .../ethereum/muir_glacier/vm/interpreter.v | 2 +- CoqOfPython/ethereum/paris/blocks.v | 8 +- CoqOfPython/ethereum/paris/fork.v | 4 +- CoqOfPython/ethereum/paris/fork_types.v | 2 +- CoqOfPython/ethereum/paris/state.v | 2 +- CoqOfPython/ethereum/paris/transactions.v | 6 +- CoqOfPython/ethereum/paris/trie.v | 10 +- CoqOfPython/ethereum/paris/vm/__init__.v | 6 +- CoqOfPython/ethereum/paris/vm/exceptions.v | 26 ++-- CoqOfPython/ethereum/paris/vm/gas.v | 4 +- .../ethereum/paris/vm/instructions/__init__.v | 4 +- .../paris/vm/instructions/proofs/arithmetic.v | 8 +- CoqOfPython/ethereum/paris/vm/interpreter.v | 2 +- CoqOfPython/ethereum/paris/vm/proofs/stack.v | 33 ---- .../ethereum/paris/vm/simulations/__init__.v | 20 ++- .../paris/vm/simulations/proofs/__init__.v | 34 +++++ .../paris/vm/simulations/proofs/stack.v | 66 ++++++++ CoqOfPython/ethereum/shanghai/blocks.v | 10 +- CoqOfPython/ethereum/shanghai/fork.v | 4 +- CoqOfPython/ethereum/shanghai/fork_types.v | 2 +- CoqOfPython/ethereum/shanghai/state.v | 2 +- CoqOfPython/ethereum/shanghai/transactions.v | 6 +- CoqOfPython/ethereum/shanghai/trie.v | 10 +- CoqOfPython/ethereum/shanghai/vm/__init__.v | 6 +- CoqOfPython/ethereum/shanghai/vm/exceptions.v | 26 ++-- CoqOfPython/ethereum/shanghai/vm/gas.v | 4 +- .../shanghai/vm/instructions/__init__.v | 4 +- .../ethereum/shanghai/vm/interpreter.v | 2 +- CoqOfPython/ethereum/simulations/base_types.v | 3 - .../ethereum/simulations/proofs/base_types.v | 13 ++ CoqOfPython/ethereum/spurious_dragon/blocks.v | 8 +- CoqOfPython/ethereum/spurious_dragon/fork.v | 4 +- .../ethereum/spurious_dragon/fork_types.v | 2 +- CoqOfPython/ethereum/spurious_dragon/state.v | 2 +- .../ethereum/spurious_dragon/transactions.v | 2 +- CoqOfPython/ethereum/spurious_dragon/trie.v | 10 +- .../ethereum/spurious_dragon/vm/__init__.v | 6 +- .../ethereum/spurious_dragon/vm/exceptions.v | 16 +- CoqOfPython/ethereum/spurious_dragon/vm/gas.v | 4 +- .../vm/instructions/__init__.v | 4 +- .../ethereum/spurious_dragon/vm/interpreter.v | 2 +- .../ethereum/tangerine_whistle/blocks.v | 8 +- CoqOfPython/ethereum/tangerine_whistle/fork.v | 4 +- .../ethereum/tangerine_whistle/fork_types.v | 2 +- .../ethereum/tangerine_whistle/state.v | 2 +- .../ethereum/tangerine_whistle/transactions.v | 2 +- CoqOfPython/ethereum/tangerine_whistle/trie.v | 10 +- .../ethereum/tangerine_whistle/vm/__init__.v | 6 +- .../tangerine_whistle/vm/exceptions.v | 16 +- .../ethereum/tangerine_whistle/vm/gas.v | 4 +- .../vm/instructions/__init__.v | 4 +- .../tangerine_whistle/vm/interpreter.v | 2 +- CoqOfPython/ethereum/trace.v | 18 +-- CoqOfPython/proofs/heap.v | 37 ----- .../{ => simulations}/proofs/CoqOfPython.v | 0 CoqOfPython/simulations/proofs/heap.v | 73 +++++++++ main.py | 143 +++++++++++------- 197 files changed, 923 insertions(+), 748 deletions(-) delete mode 100644 CoqOfPython/ethereum/paris/vm/proofs/stack.v create mode 100644 CoqOfPython/ethereum/paris/vm/simulations/proofs/__init__.v create mode 100644 CoqOfPython/ethereum/paris/vm/simulations/proofs/stack.v create mode 100644 CoqOfPython/ethereum/simulations/proofs/base_types.v delete mode 100644 CoqOfPython/proofs/heap.v rename CoqOfPython/{ => simulations}/proofs/CoqOfPython.v (100%) create mode 100644 CoqOfPython/simulations/proofs/heap.v diff --git a/CoqOfPython/CoqOfPython.v b/CoqOfPython/CoqOfPython.v index bb452a9..c2ee2da 100644 --- a/CoqOfPython/CoqOfPython.v +++ b/CoqOfPython/CoqOfPython.v @@ -112,19 +112,32 @@ Module Object. Arguments t : clear implicits. Arguments Build_t {_}. - Fixpoint fields_of_optional_dict {Value : Set} (optional_dict : list (string * option Value)) : + Fixpoint fields_of_dict_option {Value : Set} (optional_dict : list (string * option Value)) : Dict.t Value := match optional_dict with | [] => [] | (name, Some value) :: optional_dict => - Dict.write (fields_of_optional_dict optional_dict) name value - | (_, None) :: optional_dict => fields_of_optional_dict optional_dict + Dict.write (fields_of_dict_option optional_dict) name value + | (_, None) :: optional_dict => fields_of_dict_option optional_dict end. - Definition make {Value : Set} (optional_dict : list (string * option Value)) : t Value := + Definition make_option {Value : Set} (optional_dict : list (string * option Value)) : t Value := {| internal := None; - fields := fields_of_optional_dict optional_dict; + fields := fields_of_dict_option optional_dict; + |}. + + Fixpoint fields_of_dict {Value : Set} (dict : list (string * Value)) : Dict.t Value := + match dict with + | [] => [] + | (name, value) :: dict => + Dict.write (fields_of_dict dict) name value + end. + + Definition make {Value : Set} (dict : list (string * Value)) : t Value := + {| + internal := None; + fields := fields_of_dict dict; |}. (** When an object is just a wrapper around the [Data.t] type. *) @@ -247,6 +260,11 @@ Definition IsImported (globals : Globals.t) (import : Globals.t) (name : string) IsInGlobals import name value -> IsInGlobals globals name value. +(** The `builtins` module is accessible from anywhere. *) +Axiom builtins_is_imported : + forall (globals : Globals.t) (name : string), + IsImported globals "builtins" name. + Module M. Definition pure (v : Value.t) : M := LowM.Pure (inl v). @@ -513,10 +531,17 @@ Module Compare. Parameter not_in : Value.t -> Value.t -> M. End Compare. +Parameter make_list_concat : list Value.t -> M. + +Definition make_function (f : Value.t -> Value.t -> M) : Value.t := + Value.Make "builtins" "function" (Pointer.Imm (Object.wrapper (Data.Closure f))). + (** ** Builtins *) Module builtins. + Definition globals : Globals.t := "builtins". + Definition make_klass (klass : Klass.t Value.t M) : Value.t := - Value.Make "builtins" "type" (Pointer.Imm (Object.wrapper (Data.Klass klass))). + Value.Make "builtins" "type" (Pointer.Imm (Object.wrapper (Data.Klass klass))). Definition type : Value.t := make_klass {| @@ -541,9 +566,7 @@ Module builtins. Klass.methods := []; |}. Axiom str_in_globals : IsInGlobals "builtins" "str" str. -End builtins. -Parameter make_list_concat : list Value.t -> M. - -Definition make_function (f : Value.t -> Value.t -> M) : Value.t := - Value.Make "builtins" "function" (Pointer.Imm (Object.wrapper (Data.Closure f))). + Parameter len : Value.t -> Value.t -> M. + Axiom len_in_globals : IsInGlobals globals "len" (make_function len). +End builtins. diff --git a/CoqOfPython/ethereum/arrow_glacier/blocks.v b/CoqOfPython/ethereum/arrow_glacier/blocks.v index 5ff5fe8..6b15aca 100644 --- a/CoqOfPython/ethereum/arrow_glacier/blocks.v +++ b/CoqOfPython/ethereum/arrow_glacier/blocks.v @@ -56,7 +56,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -65,7 +65,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -83,5 +83,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/arrow_glacier/fork.v b/CoqOfPython/ethereum/arrow_glacier/fork.v index 13d8fec..1f0b5ba 100644 --- a/CoqOfPython/ethereum/arrow_glacier/fork.v +++ b/CoqOfPython/ethereum/arrow_glacier/fork.v @@ -222,7 +222,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1272,7 +1272,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/arrow_glacier/fork_types.v b/CoqOfPython/ethereum/arrow_glacier/fork_types.v index 5963abc..318d861 100644 --- a/CoqOfPython/ethereum/arrow_glacier/fork_types.v +++ b/CoqOfPython/ethereum/arrow_glacier/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/arrow_glacier/state.v b/CoqOfPython/ethereum/arrow_glacier/state.v index b2c8ca0..c860681 100644 --- a/CoqOfPython/ethereum/arrow_glacier/state.v +++ b/CoqOfPython/ethereum/arrow_glacier/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/arrow_glacier/transactions.v b/CoqOfPython/ethereum/arrow_glacier/transactions.v index c3881d3..5f8503e 100644 --- a/CoqOfPython/ethereum/arrow_glacier/transactions.v +++ b/CoqOfPython/ethereum/arrow_glacier/transactions.v @@ -73,7 +73,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/arrow_glacier/trie.v b/CoqOfPython/ethereum/arrow_glacier/trie.v index e922285..2384dcd 100644 --- a/CoqOfPython/ethereum/arrow_glacier/trie.v +++ b/CoqOfPython/ethereum/arrow_glacier/trie.v @@ -163,7 +163,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -484,12 +484,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v b/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v index 8de2b2a..3059faf 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v b/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v index c9bd752..7f3e8fa 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,5 +171,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/gas.v b/CoqOfPython/ethereum/arrow_glacier/vm/gas.v index c5b520d..8b0467c 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/gas.v @@ -452,7 +452,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -461,7 +461,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v index 7ba6a9b..1dc157f 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_arrow_glacier_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v b/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v index c3ff31f..2e4f67f 100644 --- a/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/arrow_glacier/vm/interpreter.v @@ -146,7 +146,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/base_types.v b/CoqOfPython/ethereum/base_types.v index 8332980..cf55478 100644 --- a/CoqOfPython/ethereum/base_types.v +++ b/CoqOfPython/ethereum/base_types.v @@ -57,7 +57,7 @@ Definition SlottedFreezable : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition U255_CEIL_VALUE : Value.t := M.run ltac:(M.monadic ( @@ -1521,7 +1521,7 @@ Definition Uint : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition T : Value.t := M.run ltac:(M.monadic ( @@ -3614,7 +3614,7 @@ Definition FixedUint : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition U256 : Value.t := builtins.make_klass {| @@ -3798,7 +3798,7 @@ Definition U256 : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. (* At top_level_stmt: unsupported node type: Assign *) @@ -3928,7 +3928,7 @@ Definition U32 : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. (* At top_level_stmt: unsupported node type: Assign *) @@ -4110,7 +4110,7 @@ Definition U64 : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. (* At top_level_stmt: unsupported node type: Assign *) @@ -4192,7 +4192,7 @@ Definition FixedBytes : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition Bytes0 : Value.t := builtins.make_klass {| @@ -4202,7 +4202,7 @@ Definition Bytes0 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes4 : Value.t := builtins.make_klass {| @@ -4212,7 +4212,7 @@ Definition Bytes4 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes8 : Value.t := builtins.make_klass {| @@ -4222,7 +4222,7 @@ Definition Bytes8 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes20 : Value.t := builtins.make_klass {| @@ -4232,7 +4232,7 @@ Definition Bytes20 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes32 : Value.t := builtins.make_klass {| @@ -4242,7 +4242,7 @@ Definition Bytes32 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes48 : Value.t := builtins.make_klass {| @@ -4252,7 +4252,7 @@ Definition Bytes48 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes64 : Value.t := builtins.make_klass {| @@ -4262,7 +4262,7 @@ Definition Bytes64 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes256 : Value.t := builtins.make_klass {| @@ -4272,7 +4272,7 @@ Definition Bytes256 : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Bytes : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/berlin/blocks.v b/CoqOfPython/ethereum/berlin/blocks.v index 0c44e10..cb1b225 100644 --- a/CoqOfPython/ethereum/berlin/blocks.v +++ b/CoqOfPython/ethereum/berlin/blocks.v @@ -56,7 +56,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -65,7 +65,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -83,5 +83,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/berlin/fork.v b/CoqOfPython/ethereum/berlin/fork.v index 082a045..3fa3d50 100644 --- a/CoqOfPython/ethereum/berlin/fork.v +++ b/CoqOfPython/ethereum/berlin/fork.v @@ -212,7 +212,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -962,7 +962,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/berlin/fork_types.v b/CoqOfPython/ethereum/berlin/fork_types.v index cb6f804..6b1c314 100644 --- a/CoqOfPython/ethereum/berlin/fork_types.v +++ b/CoqOfPython/ethereum/berlin/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/berlin/state.v b/CoqOfPython/ethereum/berlin/state.v index 3593ce7..8c2443d 100644 --- a/CoqOfPython/ethereum/berlin/state.v +++ b/CoqOfPython/ethereum/berlin/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/berlin/transactions.v b/CoqOfPython/ethereum/berlin/transactions.v index c359050..06042e5 100644 --- a/CoqOfPython/ethereum/berlin/transactions.v +++ b/CoqOfPython/ethereum/berlin/transactions.v @@ -76,7 +76,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -85,7 +85,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/berlin/trie.v b/CoqOfPython/ethereum/berlin/trie.v index 2bb2e9e..3430a28 100644 --- a/CoqOfPython/ethereum/berlin/trie.v +++ b/CoqOfPython/ethereum/berlin/trie.v @@ -163,7 +163,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -484,12 +484,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/berlin/vm/__init__.v b/CoqOfPython/ethereum/berlin/vm/__init__.v index b9f36dd..535a801 100644 --- a/CoqOfPython/ethereum/berlin/vm/__init__.v +++ b/CoqOfPython/ethereum/berlin/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/berlin/vm/exceptions.v b/CoqOfPython/ethereum/berlin/vm/exceptions.v index b26d9c6..c6e7b3f 100644 --- a/CoqOfPython/ethereum/berlin/vm/exceptions.v +++ b/CoqOfPython/ethereum/berlin/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -161,5 +161,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/berlin/vm/gas.v b/CoqOfPython/ethereum/berlin/vm/gas.v index a4d5a4f..b554ed4 100644 --- a/CoqOfPython/ethereum/berlin/vm/gas.v +++ b/CoqOfPython/ethereum/berlin/vm/gas.v @@ -462,7 +462,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -471,7 +471,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v b/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v index 9609257..21aefe0 100644 --- a/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/berlin/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_berlin_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/berlin/vm/interpreter.v b/CoqOfPython/ethereum/berlin/vm/interpreter.v index f8c554d..1ef64b4 100644 --- a/CoqOfPython/ethereum/berlin/vm/interpreter.v +++ b/CoqOfPython/ethereum/berlin/vm/interpreter.v @@ -144,7 +144,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/blocks.v b/CoqOfPython/ethereum/byzantium/blocks.v index f6b2650..32ea5a2 100644 --- a/CoqOfPython/ethereum/byzantium/blocks.v +++ b/CoqOfPython/ethereum/byzantium/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/byzantium/fork.v b/CoqOfPython/ethereum/byzantium/fork.v index 9b5dceb..a2d416d 100644 --- a/CoqOfPython/ethereum/byzantium/fork.v +++ b/CoqOfPython/ethereum/byzantium/fork.v @@ -198,7 +198,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -918,7 +918,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/fork_types.v b/CoqOfPython/ethereum/byzantium/fork_types.v index afcace7..3fdd452 100644 --- a/CoqOfPython/ethereum/byzantium/fork_types.v +++ b/CoqOfPython/ethereum/byzantium/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/byzantium/state.v b/CoqOfPython/ethereum/byzantium/state.v index 4c46cce..2ae605a 100644 --- a/CoqOfPython/ethereum/byzantium/state.v +++ b/CoqOfPython/ethereum/byzantium/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/transactions.v b/CoqOfPython/ethereum/byzantium/transactions.v index ff3525c..4307c3b 100644 --- a/CoqOfPython/ethereum/byzantium/transactions.v +++ b/CoqOfPython/ethereum/byzantium/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/byzantium/trie.v b/CoqOfPython/ethereum/byzantium/trie.v index 73d67a6..f59991d 100644 --- a/CoqOfPython/ethereum/byzantium/trie.v +++ b/CoqOfPython/ethereum/byzantium/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/vm/__init__.v b/CoqOfPython/ethereum/byzantium/vm/__init__.v index d9b85e0..fe506c8 100644 --- a/CoqOfPython/ethereum/byzantium/vm/__init__.v +++ b/CoqOfPython/ethereum/byzantium/vm/__init__.v @@ -70,7 +70,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -79,7 +79,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -88,7 +88,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/vm/exceptions.v b/CoqOfPython/ethereum/byzantium/vm/exceptions.v index 960f064..32b75c7 100644 --- a/CoqOfPython/ethereum/byzantium/vm/exceptions.v +++ b/CoqOfPython/ethereum/byzantium/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -151,5 +151,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/byzantium/vm/gas.v b/CoqOfPython/ethereum/byzantium/vm/gas.v index 41b20ec..d8849e4 100644 --- a/CoqOfPython/ethereum/byzantium/vm/gas.v +++ b/CoqOfPython/ethereum/byzantium/vm/gas.v @@ -452,7 +452,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -461,7 +461,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v b/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v index 04cec4f..785a0b1 100644 --- a/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/byzantium/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_byzantium_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/byzantium/vm/interpreter.v b/CoqOfPython/ethereum/byzantium/vm/interpreter.v index 264a316..03a8ce3 100644 --- a/CoqOfPython/ethereum/byzantium/vm/interpreter.v +++ b/CoqOfPython/ethereum/byzantium/vm/interpreter.v @@ -142,7 +142,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/blocks.v b/CoqOfPython/ethereum/cancun/blocks.v index 5011b58..25c6629 100644 --- a/CoqOfPython/ethereum/cancun/blocks.v +++ b/CoqOfPython/ethereum/cancun/blocks.v @@ -58,7 +58,7 @@ Definition Withdrawal : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Header : Value.t := builtins.make_klass {| @@ -67,7 +67,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -76,7 +76,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -85,7 +85,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -94,5 +94,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/cancun/fork.v b/CoqOfPython/ethereum/cancun/fork.v index 576c0bb..4888936 100644 --- a/CoqOfPython/ethereum/cancun/fork.v +++ b/CoqOfPython/ethereum/cancun/fork.v @@ -246,7 +246,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1514,7 +1514,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/fork_types.v b/CoqOfPython/ethereum/cancun/fork_types.v index b1c4e99..9dcd7c2 100644 --- a/CoqOfPython/ethereum/cancun/fork_types.v +++ b/CoqOfPython/ethereum/cancun/fork_types.v @@ -65,7 +65,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/cancun/state.v b/CoqOfPython/ethereum/cancun/state.v index 47003d7..f9cb4dd 100644 --- a/CoqOfPython/ethereum/cancun/state.v +++ b/CoqOfPython/ethereum/cancun/state.v @@ -87,7 +87,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition TransientStorage : Value.t := builtins.make_klass {| @@ -96,7 +96,7 @@ Definition TransientStorage : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/transactions.v b/CoqOfPython/ethereum/cancun/transactions.v index 7913268..85806bd 100644 --- a/CoqOfPython/ethereum/cancun/transactions.v +++ b/CoqOfPython/ethereum/cancun/transactions.v @@ -75,7 +75,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -84,7 +84,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -93,7 +93,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BlobTransaction : Value.t := builtins.make_klass {| @@ -102,7 +102,7 @@ Definition BlobTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/cancun/trie.v b/CoqOfPython/ethereum/cancun/trie.v index 51b853b..444d23a 100644 --- a/CoqOfPython/ethereum/cancun/trie.v +++ b/CoqOfPython/ethereum/cancun/trie.v @@ -172,7 +172,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -190,7 +190,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -493,12 +493,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/vm/__init__.v b/CoqOfPython/ethereum/cancun/vm/__init__.v index 7767482..c7cffd7 100644 --- a/CoqOfPython/ethereum/cancun/vm/__init__.v +++ b/CoqOfPython/ethereum/cancun/vm/__init__.v @@ -78,7 +78,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -87,7 +87,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -96,7 +96,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/vm/exceptions.v b/CoqOfPython/ethereum/cancun/vm/exceptions.v index f9f08e5..da9a54e 100644 --- a/CoqOfPython/ethereum/cancun/vm/exceptions.v +++ b/CoqOfPython/ethereum/cancun/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,7 +171,7 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition KZGProofError : Value.t := builtins.make_klass {| @@ -181,5 +181,5 @@ Definition KZGProofError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/cancun/vm/gas.v b/CoqOfPython/ethereum/cancun/vm/gas.v index eab6969..488b5cb 100644 --- a/CoqOfPython/ethereum/cancun/vm/gas.v +++ b/CoqOfPython/ethereum/cancun/vm/gas.v @@ -531,7 +531,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -540,7 +540,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v b/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v index be59c5f..4a7262f 100644 --- a/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/cancun/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_cancun_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/cancun/vm/interpreter.v b/CoqOfPython/ethereum/cancun/vm/interpreter.v index 8472122..8624fee 100644 --- a/CoqOfPython/ethereum/cancun/vm/interpreter.v +++ b/CoqOfPython/ethereum/cancun/vm/interpreter.v @@ -148,7 +148,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/blocks.v b/CoqOfPython/ethereum/constantinople/blocks.v index c607f39..a1cefb1 100644 --- a/CoqOfPython/ethereum/constantinople/blocks.v +++ b/CoqOfPython/ethereum/constantinople/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/constantinople/fork.v b/CoqOfPython/ethereum/constantinople/fork.v index c7e2dc1..5fe8373 100644 --- a/CoqOfPython/ethereum/constantinople/fork.v +++ b/CoqOfPython/ethereum/constantinople/fork.v @@ -198,7 +198,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -918,7 +918,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/fork_types.v b/CoqOfPython/ethereum/constantinople/fork_types.v index c85ea3c..9e41251 100644 --- a/CoqOfPython/ethereum/constantinople/fork_types.v +++ b/CoqOfPython/ethereum/constantinople/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/constantinople/state.v b/CoqOfPython/ethereum/constantinople/state.v index f25af54..8e9f935 100644 --- a/CoqOfPython/ethereum/constantinople/state.v +++ b/CoqOfPython/ethereum/constantinople/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/transactions.v b/CoqOfPython/ethereum/constantinople/transactions.v index 42d391a..f3330ed 100644 --- a/CoqOfPython/ethereum/constantinople/transactions.v +++ b/CoqOfPython/ethereum/constantinople/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/constantinople/trie.v b/CoqOfPython/ethereum/constantinople/trie.v index 5eb07ce..28e8585 100644 --- a/CoqOfPython/ethereum/constantinople/trie.v +++ b/CoqOfPython/ethereum/constantinople/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/vm/__init__.v b/CoqOfPython/ethereum/constantinople/vm/__init__.v index ba890a3..ddc1dbb 100644 --- a/CoqOfPython/ethereum/constantinople/vm/__init__.v +++ b/CoqOfPython/ethereum/constantinople/vm/__init__.v @@ -70,7 +70,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -79,7 +79,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -88,7 +88,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/vm/exceptions.v b/CoqOfPython/ethereum/constantinople/vm/exceptions.v index 1d9a174..ca5402f 100644 --- a/CoqOfPython/ethereum/constantinople/vm/exceptions.v +++ b/CoqOfPython/ethereum/constantinople/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -151,5 +151,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/constantinople/vm/gas.v b/CoqOfPython/ethereum/constantinople/vm/gas.v index 7ee84f5..ca07161 100644 --- a/CoqOfPython/ethereum/constantinople/vm/gas.v +++ b/CoqOfPython/ethereum/constantinople/vm/gas.v @@ -462,7 +462,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -471,7 +471,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v b/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v index 5747634..9c85ad8 100644 --- a/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/constantinople/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_constantinople_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/constantinople/vm/interpreter.v b/CoqOfPython/ethereum/constantinople/vm/interpreter.v index 1b511ad..eeec127 100644 --- a/CoqOfPython/ethereum/constantinople/vm/interpreter.v +++ b/CoqOfPython/ethereum/constantinople/vm/interpreter.v @@ -142,7 +142,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/crypto/alt_bn128.v b/CoqOfPython/ethereum/crypto/alt_bn128.v index 246b97e..6935c80 100644 --- a/CoqOfPython/ethereum/crypto/alt_bn128.v +++ b/CoqOfPython/ethereum/crypto/alt_bn128.v @@ -33,32 +33,32 @@ Definition ATE_PAIRING_COUNT_BITS : Value.t := M.run ltac:(M.monadic ( Definition BNF : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BNP : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BNF2 : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: Assign *) @@ -78,17 +78,17 @@ Definition expr_51 : Value.t := Definition BNP2 : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BNF12 : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; @@ -234,7 +234,7 @@ Definition BNF12 : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. (* At top_level_stmt: unsupported node type: Assign *) @@ -254,12 +254,12 @@ Definition expr_104 : Value.t := Definition BNP12 : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition bnf2_to_bnf12 : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/crypto/blake2.v b/CoqOfPython/ethereum/crypto/blake2.v index 0e8587d..58faead 100644 --- a/CoqOfPython/ethereum/crypto/blake2.v +++ b/CoqOfPython/ethereum/crypto/blake2.v @@ -814,7 +814,7 @@ Definition Blake2 : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition Blake2b : Value.t := builtins.make_klass {| @@ -824,5 +824,5 @@ Definition Blake2b : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/crypto/elliptic_curve.v b/CoqOfPython/ethereum/crypto/elliptic_curve.v index 775ea60..af7e473 100644 --- a/CoqOfPython/ethereum/crypto/elliptic_curve.v +++ b/CoqOfPython/ethereum/crypto/elliptic_curve.v @@ -191,7 +191,7 @@ Axiom secp256k1_recover_in_globals : Definition EllipticCurve : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ( @@ -784,5 +784,5 @@ Definition EllipticCurve : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. diff --git a/CoqOfPython/ethereum/crypto/finite_field.v b/CoqOfPython/ethereum/crypto/finite_field.v index 4c436a0..06681c1 100644 --- a/CoqOfPython/ethereum/crypto/finite_field.v +++ b/CoqOfPython/ethereum/crypto/finite_field.v @@ -160,7 +160,7 @@ Definition Field : Value.t := builtins.make_klass {| let _ := Constant.ellipsis in M.pure Constant.None_)) ) - ] + ]; |}. Definition T : Value.t := M.run ltac:(M.monadic ( @@ -679,7 +679,7 @@ Definition PrimeField : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition U : Value.t := M.run ltac:(M.monadic ( @@ -2315,5 +2315,5 @@ Definition GaloisField : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. diff --git a/CoqOfPython/ethereum/dao_fork/blocks.v b/CoqOfPython/ethereum/dao_fork/blocks.v index ac202af..901105e 100644 --- a/CoqOfPython/ethereum/dao_fork/blocks.v +++ b/CoqOfPython/ethereum/dao_fork/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/dao_fork/fork.v b/CoqOfPython/ethereum/dao_fork/fork.v index 1d33802..c0be8c2 100644 --- a/CoqOfPython/ethereum/dao_fork/fork.v +++ b/CoqOfPython/ethereum/dao_fork/fork.v @@ -185,7 +185,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -943,7 +943,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/dao_fork/fork_types.v b/CoqOfPython/ethereum/dao_fork/fork_types.v index 43454a9..5426a04 100644 --- a/CoqOfPython/ethereum/dao_fork/fork_types.v +++ b/CoqOfPython/ethereum/dao_fork/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/dao_fork/state.v b/CoqOfPython/ethereum/dao_fork/state.v index 86a5fa7..4ac6ba3 100644 --- a/CoqOfPython/ethereum/dao_fork/state.v +++ b/CoqOfPython/ethereum/dao_fork/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/dao_fork/transactions.v b/CoqOfPython/ethereum/dao_fork/transactions.v index b17015b..fb6a970 100644 --- a/CoqOfPython/ethereum/dao_fork/transactions.v +++ b/CoqOfPython/ethereum/dao_fork/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/dao_fork/trie.v b/CoqOfPython/ethereum/dao_fork/trie.v index 5596053..e4d9381 100644 --- a/CoqOfPython/ethereum/dao_fork/trie.v +++ b/CoqOfPython/ethereum/dao_fork/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/dao_fork/vm/__init__.v b/CoqOfPython/ethereum/dao_fork/vm/__init__.v index ecaadbd..eb4933c 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/__init__.v +++ b/CoqOfPython/ethereum/dao_fork/vm/__init__.v @@ -65,7 +65,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/dao_fork/vm/exceptions.v b/CoqOfPython/ethereum/dao_fork/vm/exceptions.v index 2b70d8a..45e7893 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/exceptions.v +++ b/CoqOfPython/ethereum/dao_fork/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -121,5 +121,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/dao_fork/vm/gas.v b/CoqOfPython/ethereum/dao_fork/vm/gas.v index 8b52259..9e50389 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/gas.v +++ b/CoqOfPython/ethereum/dao_fork/vm/gas.v @@ -430,7 +430,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -439,7 +439,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v b/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v index 1d762e0..f85f334 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/dao_fork/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_dao_fork_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/dao_fork/vm/interpreter.v b/CoqOfPython/ethereum/dao_fork/vm/interpreter.v index b390d01..44d8312 100644 --- a/CoqOfPython/ethereum/dao_fork/vm/interpreter.v +++ b/CoqOfPython/ethereum/dao_fork/vm/interpreter.v @@ -125,7 +125,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/exceptions.v b/CoqOfPython/ethereum/exceptions.v index 7d09bca..de5c425 100644 --- a/CoqOfPython/ethereum/exceptions.v +++ b/CoqOfPython/ethereum/exceptions.v @@ -26,7 +26,7 @@ Definition EthereumException : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidBlock : Value.t := builtins.make_klass {| @@ -36,7 +36,7 @@ Definition InvalidBlock : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition RLPDecodingError : Value.t := builtins.make_klass {| @@ -46,7 +46,7 @@ Definition RLPDecodingError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition RLPEncodingError : Value.t := builtins.make_klass {| @@ -56,5 +56,5 @@ Definition RLPEncodingError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/fork_criteria.v b/CoqOfPython/ethereum/fork_criteria.v index 8cf9130..f86f1c6 100644 --- a/CoqOfPython/ethereum/fork_criteria.v +++ b/CoqOfPython/ethereum/fork_criteria.v @@ -132,7 +132,7 @@ Definition ForkCriteria : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition ByBlockNumber : Value.t := builtins.make_klass {| @@ -186,7 +186,7 @@ Definition ByBlockNumber : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition ByTimestamp : Value.t := builtins.make_klass {| @@ -240,7 +240,7 @@ Definition ByTimestamp : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition Unscheduled : Value.t := builtins.make_klass {| @@ -287,5 +287,5 @@ Definition Unscheduled : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. diff --git a/CoqOfPython/ethereum/frontier/blocks.v b/CoqOfPython/ethereum/frontier/blocks.v index da1d440..ee97563 100644 --- a/CoqOfPython/ethereum/frontier/blocks.v +++ b/CoqOfPython/ethereum/frontier/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/frontier/fork.v b/CoqOfPython/ethereum/frontier/fork.v index 4b5e5ec..8f26495 100644 --- a/CoqOfPython/ethereum/frontier/fork.v +++ b/CoqOfPython/ethereum/frontier/fork.v @@ -173,7 +173,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -881,7 +881,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/frontier/fork_types.v b/CoqOfPython/ethereum/frontier/fork_types.v index 362b97d..4c6dbf8 100644 --- a/CoqOfPython/ethereum/frontier/fork_types.v +++ b/CoqOfPython/ethereum/frontier/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/frontier/state.v b/CoqOfPython/ethereum/frontier/state.v index 5458a05..1eefe65 100644 --- a/CoqOfPython/ethereum/frontier/state.v +++ b/CoqOfPython/ethereum/frontier/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/frontier/transactions.v b/CoqOfPython/ethereum/frontier/transactions.v index d7f6ab0..f4a87d7 100644 --- a/CoqOfPython/ethereum/frontier/transactions.v +++ b/CoqOfPython/ethereum/frontier/transactions.v @@ -49,5 +49,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/frontier/trie.v b/CoqOfPython/ethereum/frontier/trie.v index 2940eb7..30f5890 100644 --- a/CoqOfPython/ethereum/frontier/trie.v +++ b/CoqOfPython/ethereum/frontier/trie.v @@ -154,7 +154,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -163,7 +163,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -472,12 +472,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/frontier/vm/__init__.v b/CoqOfPython/ethereum/frontier/vm/__init__.v index 37261a4..7d5535d 100644 --- a/CoqOfPython/ethereum/frontier/vm/__init__.v +++ b/CoqOfPython/ethereum/frontier/vm/__init__.v @@ -65,7 +65,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/frontier/vm/exceptions.v b/CoqOfPython/ethereum/frontier/vm/exceptions.v index f645851..2bd4b0c 100644 --- a/CoqOfPython/ethereum/frontier/vm/exceptions.v +++ b/CoqOfPython/ethereum/frontier/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -121,5 +121,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/frontier/vm/gas.v b/CoqOfPython/ethereum/frontier/vm/gas.v index 8e08ded..04f03e6 100644 --- a/CoqOfPython/ethereum/frontier/vm/gas.v +++ b/CoqOfPython/ethereum/frontier/vm/gas.v @@ -430,7 +430,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -439,7 +439,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v b/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v index 1dadbbc..d6a4bb9 100644 --- a/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/frontier/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_frontier_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/frontier/vm/interpreter.v b/CoqOfPython/ethereum/frontier/vm/interpreter.v index 4f92e25..1a8ff25 100644 --- a/CoqOfPython/ethereum/frontier/vm/interpreter.v +++ b/CoqOfPython/ethereum/frontier/vm/interpreter.v @@ -125,7 +125,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/genesis.v b/CoqOfPython/ethereum/genesis.v index b62402d..f6931df 100644 --- a/CoqOfPython/ethereum/genesis.v +++ b/CoqOfPython/ethereum/genesis.v @@ -73,7 +73,7 @@ Definition GenesisConfiguration : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition get_genesis_configuration : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/blocks.v b/CoqOfPython/ethereum/gray_glacier/blocks.v index 292c7e1..175449c 100644 --- a/CoqOfPython/ethereum/gray_glacier/blocks.v +++ b/CoqOfPython/ethereum/gray_glacier/blocks.v @@ -56,7 +56,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -65,7 +65,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -83,5 +83,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/gray_glacier/fork.v b/CoqOfPython/ethereum/gray_glacier/fork.v index 779518e..2cf8ada 100644 --- a/CoqOfPython/ethereum/gray_glacier/fork.v +++ b/CoqOfPython/ethereum/gray_glacier/fork.v @@ -222,7 +222,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1272,7 +1272,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/fork_types.v b/CoqOfPython/ethereum/gray_glacier/fork_types.v index ff279e1..64be376 100644 --- a/CoqOfPython/ethereum/gray_glacier/fork_types.v +++ b/CoqOfPython/ethereum/gray_glacier/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/gray_glacier/state.v b/CoqOfPython/ethereum/gray_glacier/state.v index ad2b023..c2994b0 100644 --- a/CoqOfPython/ethereum/gray_glacier/state.v +++ b/CoqOfPython/ethereum/gray_glacier/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/transactions.v b/CoqOfPython/ethereum/gray_glacier/transactions.v index 5f42d2d..9ca1022 100644 --- a/CoqOfPython/ethereum/gray_glacier/transactions.v +++ b/CoqOfPython/ethereum/gray_glacier/transactions.v @@ -73,7 +73,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/gray_glacier/trie.v b/CoqOfPython/ethereum/gray_glacier/trie.v index c260fef..f8a9749 100644 --- a/CoqOfPython/ethereum/gray_glacier/trie.v +++ b/CoqOfPython/ethereum/gray_glacier/trie.v @@ -163,7 +163,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -484,12 +484,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/vm/__init__.v b/CoqOfPython/ethereum/gray_glacier/vm/__init__.v index 56180a3..5fa0be1 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v b/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v index 109b93b..b66a049 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,5 +171,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/gray_glacier/vm/gas.v b/CoqOfPython/ethereum/gray_glacier/vm/gas.v index 6c9b778..e233ef3 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/gas.v @@ -452,7 +452,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -461,7 +461,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v index 1ab1e7a..64ce997 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_gray_glacier_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v b/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v index b280e73..b7bad13 100644 --- a/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/gray_glacier/vm/interpreter.v @@ -146,7 +146,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/blocks.v b/CoqOfPython/ethereum/homestead/blocks.v index e49e85b..ad64b48 100644 --- a/CoqOfPython/ethereum/homestead/blocks.v +++ b/CoqOfPython/ethereum/homestead/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/homestead/fork.v b/CoqOfPython/ethereum/homestead/fork.v index a729ff3..6623546 100644 --- a/CoqOfPython/ethereum/homestead/fork.v +++ b/CoqOfPython/ethereum/homestead/fork.v @@ -178,7 +178,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -886,7 +886,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/fork_types.v b/CoqOfPython/ethereum/homestead/fork_types.v index 9bfa9c5..6b40124 100644 --- a/CoqOfPython/ethereum/homestead/fork_types.v +++ b/CoqOfPython/ethereum/homestead/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/homestead/state.v b/CoqOfPython/ethereum/homestead/state.v index f7d34b5..fff41b9 100644 --- a/CoqOfPython/ethereum/homestead/state.v +++ b/CoqOfPython/ethereum/homestead/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/transactions.v b/CoqOfPython/ethereum/homestead/transactions.v index e2165b1..f31e203 100644 --- a/CoqOfPython/ethereum/homestead/transactions.v +++ b/CoqOfPython/ethereum/homestead/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/homestead/trie.v b/CoqOfPython/ethereum/homestead/trie.v index d798a43..cbece9d 100644 --- a/CoqOfPython/ethereum/homestead/trie.v +++ b/CoqOfPython/ethereum/homestead/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/vm/__init__.v b/CoqOfPython/ethereum/homestead/vm/__init__.v index 4efff12..7af2a01 100644 --- a/CoqOfPython/ethereum/homestead/vm/__init__.v +++ b/CoqOfPython/ethereum/homestead/vm/__init__.v @@ -65,7 +65,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/vm/exceptions.v b/CoqOfPython/ethereum/homestead/vm/exceptions.v index ee0188e..c00fd7d 100644 --- a/CoqOfPython/ethereum/homestead/vm/exceptions.v +++ b/CoqOfPython/ethereum/homestead/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -121,5 +121,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/homestead/vm/gas.v b/CoqOfPython/ethereum/homestead/vm/gas.v index 5d1ff40..9e62674 100644 --- a/CoqOfPython/ethereum/homestead/vm/gas.v +++ b/CoqOfPython/ethereum/homestead/vm/gas.v @@ -430,7 +430,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -439,7 +439,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v b/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v index 4ca9fe3..1cb1118 100644 --- a/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/homestead/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_homestead_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/homestead/vm/interpreter.v b/CoqOfPython/ethereum/homestead/vm/interpreter.v index 80c1596..f8991c1 100644 --- a/CoqOfPython/ethereum/homestead/vm/interpreter.v +++ b/CoqOfPython/ethereum/homestead/vm/interpreter.v @@ -125,7 +125,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/blocks.v b/CoqOfPython/ethereum/istanbul/blocks.v index 169e0d7..cfc0ce5 100644 --- a/CoqOfPython/ethereum/istanbul/blocks.v +++ b/CoqOfPython/ethereum/istanbul/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/istanbul/fork.v b/CoqOfPython/ethereum/istanbul/fork.v index ab8fcae..b472d44 100644 --- a/CoqOfPython/ethereum/istanbul/fork.v +++ b/CoqOfPython/ethereum/istanbul/fork.v @@ -198,7 +198,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -918,7 +918,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/fork_types.v b/CoqOfPython/ethereum/istanbul/fork_types.v index 9d7a542..b1ab722 100644 --- a/CoqOfPython/ethereum/istanbul/fork_types.v +++ b/CoqOfPython/ethereum/istanbul/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/istanbul/state.v b/CoqOfPython/ethereum/istanbul/state.v index 7e564a9..b9d121c 100644 --- a/CoqOfPython/ethereum/istanbul/state.v +++ b/CoqOfPython/ethereum/istanbul/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/transactions.v b/CoqOfPython/ethereum/istanbul/transactions.v index a52d49b..4a6f2cc 100644 --- a/CoqOfPython/ethereum/istanbul/transactions.v +++ b/CoqOfPython/ethereum/istanbul/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/istanbul/trie.v b/CoqOfPython/ethereum/istanbul/trie.v index 763792f..4d72931 100644 --- a/CoqOfPython/ethereum/istanbul/trie.v +++ b/CoqOfPython/ethereum/istanbul/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/vm/__init__.v b/CoqOfPython/ethereum/istanbul/vm/__init__.v index c432932..545b3ba 100644 --- a/CoqOfPython/ethereum/istanbul/vm/__init__.v +++ b/CoqOfPython/ethereum/istanbul/vm/__init__.v @@ -72,7 +72,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -81,7 +81,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -90,7 +90,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/vm/exceptions.v b/CoqOfPython/ethereum/istanbul/vm/exceptions.v index 6ef21b4..81b4de4 100644 --- a/CoqOfPython/ethereum/istanbul/vm/exceptions.v +++ b/CoqOfPython/ethereum/istanbul/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -161,5 +161,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/istanbul/vm/gas.v b/CoqOfPython/ethereum/istanbul/vm/gas.v index acabd15..770139d 100644 --- a/CoqOfPython/ethereum/istanbul/vm/gas.v +++ b/CoqOfPython/ethereum/istanbul/vm/gas.v @@ -482,7 +482,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -491,7 +491,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v b/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v index 29283c7..091bc69 100644 --- a/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/istanbul/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_istanbul_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/istanbul/vm/interpreter.v b/CoqOfPython/ethereum/istanbul/vm/interpreter.v index aeaf533..674bbf9 100644 --- a/CoqOfPython/ethereum/istanbul/vm/interpreter.v +++ b/CoqOfPython/ethereum/istanbul/vm/interpreter.v @@ -144,7 +144,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/blocks.v b/CoqOfPython/ethereum/london/blocks.v index 941065a..1eb4910 100644 --- a/CoqOfPython/ethereum/london/blocks.v +++ b/CoqOfPython/ethereum/london/blocks.v @@ -56,7 +56,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -65,7 +65,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -83,5 +83,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/london/fork.v b/CoqOfPython/ethereum/london/fork.v index fa6334c..7ff1499 100644 --- a/CoqOfPython/ethereum/london/fork.v +++ b/CoqOfPython/ethereum/london/fork.v @@ -228,7 +228,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1308,7 +1308,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/fork_types.v b/CoqOfPython/ethereum/london/fork_types.v index 6dfd489..d1f8e38 100644 --- a/CoqOfPython/ethereum/london/fork_types.v +++ b/CoqOfPython/ethereum/london/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/london/state.v b/CoqOfPython/ethereum/london/state.v index 20083ba..95b197a 100644 --- a/CoqOfPython/ethereum/london/state.v +++ b/CoqOfPython/ethereum/london/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/transactions.v b/CoqOfPython/ethereum/london/transactions.v index ee0068c..24f71ac 100644 --- a/CoqOfPython/ethereum/london/transactions.v +++ b/CoqOfPython/ethereum/london/transactions.v @@ -73,7 +73,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/london/trie.v b/CoqOfPython/ethereum/london/trie.v index 9af659f..633ff7b 100644 --- a/CoqOfPython/ethereum/london/trie.v +++ b/CoqOfPython/ethereum/london/trie.v @@ -163,7 +163,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -484,12 +484,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/vm/__init__.v b/CoqOfPython/ethereum/london/vm/__init__.v index a90b060..202b1ce 100644 --- a/CoqOfPython/ethereum/london/vm/__init__.v +++ b/CoqOfPython/ethereum/london/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/vm/exceptions.v b/CoqOfPython/ethereum/london/vm/exceptions.v index c132052..0ffb04f 100644 --- a/CoqOfPython/ethereum/london/vm/exceptions.v +++ b/CoqOfPython/ethereum/london/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,5 +171,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/london/vm/gas.v b/CoqOfPython/ethereum/london/vm/gas.v index f28d0ab..2acdc1a 100644 --- a/CoqOfPython/ethereum/london/vm/gas.v +++ b/CoqOfPython/ethereum/london/vm/gas.v @@ -452,7 +452,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -461,7 +461,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/london/vm/instructions/__init__.v b/CoqOfPython/ethereum/london/vm/instructions/__init__.v index 0d2e30c..e7eafaf 100644 --- a/CoqOfPython/ethereum/london/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/london/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_london_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/london/vm/interpreter.v b/CoqOfPython/ethereum/london/vm/interpreter.v index 3290e55..be64f5f 100644 --- a/CoqOfPython/ethereum/london/vm/interpreter.v +++ b/CoqOfPython/ethereum/london/vm/interpreter.v @@ -146,7 +146,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/blocks.v b/CoqOfPython/ethereum/muir_glacier/blocks.v index e768dcb..b3ac716 100644 --- a/CoqOfPython/ethereum/muir_glacier/blocks.v +++ b/CoqOfPython/ethereum/muir_glacier/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/muir_glacier/fork.v b/CoqOfPython/ethereum/muir_glacier/fork.v index bf0b5a3..3e90793 100644 --- a/CoqOfPython/ethereum/muir_glacier/fork.v +++ b/CoqOfPython/ethereum/muir_glacier/fork.v @@ -198,7 +198,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -918,7 +918,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/fork_types.v b/CoqOfPython/ethereum/muir_glacier/fork_types.v index dca4305..4fe986d 100644 --- a/CoqOfPython/ethereum/muir_glacier/fork_types.v +++ b/CoqOfPython/ethereum/muir_glacier/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/muir_glacier/state.v b/CoqOfPython/ethereum/muir_glacier/state.v index a59fd61..0d259e1 100644 --- a/CoqOfPython/ethereum/muir_glacier/state.v +++ b/CoqOfPython/ethereum/muir_glacier/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/transactions.v b/CoqOfPython/ethereum/muir_glacier/transactions.v index 48b52fa..86b1aaa 100644 --- a/CoqOfPython/ethereum/muir_glacier/transactions.v +++ b/CoqOfPython/ethereum/muir_glacier/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/muir_glacier/trie.v b/CoqOfPython/ethereum/muir_glacier/trie.v index 4eaa303..0dd703c 100644 --- a/CoqOfPython/ethereum/muir_glacier/trie.v +++ b/CoqOfPython/ethereum/muir_glacier/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/vm/__init__.v b/CoqOfPython/ethereum/muir_glacier/vm/__init__.v index 92df72a..41ba1a6 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/__init__.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/__init__.v @@ -72,7 +72,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -81,7 +81,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -90,7 +90,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v b/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v index 0bda233..6b59648 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -161,5 +161,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/muir_glacier/vm/gas.v b/CoqOfPython/ethereum/muir_glacier/vm/gas.v index 24ce14d..9a337d7 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/gas.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/gas.v @@ -482,7 +482,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -491,7 +491,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v b/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v index 791c0aa..d23b1c7 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_muir_glacier_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v b/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v index 790dc2d..1bce312 100644 --- a/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v +++ b/CoqOfPython/ethereum/muir_glacier/vm/interpreter.v @@ -144,7 +144,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/blocks.v b/CoqOfPython/ethereum/paris/blocks.v index 368b996..3c7047b 100644 --- a/CoqOfPython/ethereum/paris/blocks.v +++ b/CoqOfPython/ethereum/paris/blocks.v @@ -56,7 +56,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -65,7 +65,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -83,5 +83,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/paris/fork.v b/CoqOfPython/ethereum/paris/fork.v index 7536413..6039806 100644 --- a/CoqOfPython/ethereum/paris/fork.v +++ b/CoqOfPython/ethereum/paris/fork.v @@ -177,7 +177,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1070,7 +1070,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/fork_types.v b/CoqOfPython/ethereum/paris/fork_types.v index 61229e8..fdfdc98 100644 --- a/CoqOfPython/ethereum/paris/fork_types.v +++ b/CoqOfPython/ethereum/paris/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/paris/state.v b/CoqOfPython/ethereum/paris/state.v index 1f9c6c8..927993a 100644 --- a/CoqOfPython/ethereum/paris/state.v +++ b/CoqOfPython/ethereum/paris/state.v @@ -82,7 +82,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/transactions.v b/CoqOfPython/ethereum/paris/transactions.v index c6ff854..7902af6 100644 --- a/CoqOfPython/ethereum/paris/transactions.v +++ b/CoqOfPython/ethereum/paris/transactions.v @@ -73,7 +73,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/paris/trie.v b/CoqOfPython/ethereum/paris/trie.v index 385b2ac..4c85ebe 100644 --- a/CoqOfPython/ethereum/paris/trie.v +++ b/CoqOfPython/ethereum/paris/trie.v @@ -163,7 +163,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -172,7 +172,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -484,12 +484,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/vm/__init__.v b/CoqOfPython/ethereum/paris/vm/__init__.v index 78b4061..284d69c 100644 --- a/CoqOfPython/ethereum/paris/vm/__init__.v +++ b/CoqOfPython/ethereum/paris/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/vm/exceptions.v b/CoqOfPython/ethereum/paris/vm/exceptions.v index 90fade9..7b6cda8 100644 --- a/CoqOfPython/ethereum/paris/vm/exceptions.v +++ b/CoqOfPython/ethereum/paris/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,5 +171,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/paris/vm/gas.v b/CoqOfPython/ethereum/paris/vm/gas.v index c039eda..e44d657 100644 --- a/CoqOfPython/ethereum/paris/vm/gas.v +++ b/CoqOfPython/ethereum/paris/vm/gas.v @@ -452,7 +452,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -461,7 +461,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/vm/instructions/__init__.v b/CoqOfPython/ethereum/paris/vm/instructions/__init__.v index 4d9a30f..2e28b99 100644 --- a/CoqOfPython/ethereum/paris/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/paris/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_paris_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/paris/vm/instructions/proofs/arithmetic.v b/CoqOfPython/ethereum/paris/vm/instructions/proofs/arithmetic.v index 053fffc..2b01216 100644 --- a/CoqOfPython/ethereum/paris/vm/instructions/proofs/arithmetic.v +++ b/CoqOfPython/ethereum/paris/vm/instructions/proofs/arithmetic.v @@ -34,15 +34,15 @@ Module AddLocals. result := None; |}. - Definition to_object (locals : t) : Object.t Value.t := + (* Definition to_object (locals : t) : Object.t Value.t := Object.make [ ("x", Option.map U256.to_value locals.(x)); ("y", Option.map U256.to_value locals.(y)); ("result", Option.map U256.to_value locals.(result)) - ]. + ]. *) End AddLocals. -Lemma run_add (stack : Stack.t) (heap : Heap.t) : +(* Lemma run_add (stack : Stack.t) (heap : Heap.t) : let '(result, evm') := simulations.arithmetic.add heap.(Heap.evm) in let result := match result with @@ -71,4 +71,4 @@ Proof. } { admit. } } -Admitted. +Admitted. *) diff --git a/CoqOfPython/ethereum/paris/vm/interpreter.v b/CoqOfPython/ethereum/paris/vm/interpreter.v index fe2778f..16a528c 100644 --- a/CoqOfPython/ethereum/paris/vm/interpreter.v +++ b/CoqOfPython/ethereum/paris/vm/interpreter.v @@ -148,7 +148,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/paris/vm/proofs/stack.v b/CoqOfPython/ethereum/paris/vm/proofs/stack.v deleted file mode 100644 index cb12120..0000000 --- a/CoqOfPython/ethereum/paris/vm/proofs/stack.v +++ /dev/null @@ -1,33 +0,0 @@ -Require Import CoqOfPython.CoqOfPython. -Require Import proofs.CoqOfPython. -Require Import simulations.CoqOfPython. -Require Import proofs.heap. - -Require ethereum.paris.vm.simulations.stack. -Require ethereum.paris.vm.stack. - -Require ethereum.paris.vm.simulations.__init__. -Module Evm := __init__.Evm. - -Import Run. - -Lemma run_pop (stack : Stack.t) (heap : Heap.t) : - let '(result, evm') := - StateError.lift_lens Evm.Lens.stack simulations.stack.pop heap.(Heap.evm) in - let result := - match result with - | inl s' => inl Constant.None_ - | inr exn => inr (Exception.Raise (Some Constant.None_)) - end in - let heap' := heap <| Heap.evm := evm' |> in - exists fresh_stack, - {{ stack, heap | - stack.pop (make_list []) (make_dict []) ⇓ - result - | stack ++ fresh_stack, heap' }}. -Proof. - destruct StateError.lift_lens as [result evm'] eqn:?. - unfold stack.pop, simulations.stack.pop in *. - cbn in *. - eexists. -Admitted. diff --git a/CoqOfPython/ethereum/paris/vm/simulations/__init__.v b/CoqOfPython/ethereum/paris/vm/simulations/__init__.v index 5fb9a63..18f512b 100644 --- a/CoqOfPython/ethereum/paris/vm/simulations/__init__.v +++ b/CoqOfPython/ethereum/paris/vm/simulations/__init__.v @@ -64,10 +64,10 @@ Module Evm. Record t : Set := { pc : Uint.t; stack : list (U256.t); - memory : list ascii; - code : Bytes.t; + (* memory : list ascii; + code : Bytes.t; *) gas_left : Uint.t; - env : Environment.t; + (* env : Environment.t; valid_jump_destinations : list Uint.t; logs : list unit; refund_counter : Z; @@ -78,7 +78,7 @@ Module Evm. return_data : Bytes.t; error : option Exception.t; accessed_addresses : list Address.t; - accessed_storage_keys : list (Address.t * Bytes32.t) + accessed_storage_keys : list (Address.t * Bytes32.t) *) }. End Rest. @@ -101,9 +101,19 @@ Module Evm. Lens.write '(Make message rest) stack := Make message rest<|Rest.stack := stack|>; |}. - Definition memory : Lens.t t (list ascii) := {| + (* Definition memory : Lens.t t (list ascii) := {| Lens.read '(Make _ rest) := rest.(Rest.memory); Lens.write '(Make message rest) memory := Make message rest<|Rest.memory := memory|>; |}. + + Definition code : Lens.t t Bytes.t := {| + Lens.read '(Make _ rest) := rest.(Rest.code); + Lens.write '(Make message rest) code := Make message rest<|Rest.code := code|>; + |}. *) + + Definition gas_left : Lens.t t Uint.t := {| + Lens.read '(Make _ rest) := rest.(Rest.gas_left); + Lens.write '(Make message rest) gas_left := Make message rest<|Rest.gas_left := gas_left|>; + |}. End Lens. End Evm. diff --git a/CoqOfPython/ethereum/paris/vm/simulations/proofs/__init__.v b/CoqOfPython/ethereum/paris/vm/simulations/proofs/__init__.v new file mode 100644 index 0000000..dc4ef44 --- /dev/null +++ b/CoqOfPython/ethereum/paris/vm/simulations/proofs/__init__.v @@ -0,0 +1,34 @@ +Require Import CoqOfPython.CoqOfPython. +Require Import simulations.CoqOfPython. +Require Import simulations.proofs.CoqOfPython. +Require Import simulations.proofs.heap. + +Require Import ethereum.paris.vm.simulations.__init__. + +Require ethereum.simulations.proofs.base_types. +Module Uint := base_types.Uint. +Module U256 := base_types.U256. + +Definition globals : Globals.t := "ethereum.paris.vm". + +Module Evm. + Definition stack_to_value : Value.t := + Value.Make "builtins" "list" (Pointer.Mutable (Pointer.Mutable.Heap + Address.stack + (fun (stack : list U256.t) => + Object.wrapper (Data.List (List.map U256.to_value stack)) + ) + )). + + Definition to_value : Value.t := + Value.Make globals "Evm" (Pointer.Mutable (Pointer.Mutable.Heap + Address.evm + (fun (evm : Heap.Evm.t) => + Object.make [ + ("pc", Uint.to_value evm.(Heap.Evm.pc)); + ("stack", stack_to_value); + ("gas_left", Uint.to_value evm.(Heap.Evm.gas_left)) + ] + ) + )). +End Evm. diff --git a/CoqOfPython/ethereum/paris/vm/simulations/proofs/stack.v b/CoqOfPython/ethereum/paris/vm/simulations/proofs/stack.v new file mode 100644 index 0000000..81f13e0 --- /dev/null +++ b/CoqOfPython/ethereum/paris/vm/simulations/proofs/stack.v @@ -0,0 +1,66 @@ +Require Import CoqOfPython.CoqOfPython. +Require Import proofs.CoqOfPython. +Require Import simulations.CoqOfPython. +Require Import proofs.heap. + +Require ethereum.paris.vm.simulations.stack. +Require ethereum.paris.vm.stack. + +Require ethereum.paris.vm.simulations.proofs.__init__. +Module Evm := __init__.Evm. + +Import Run. + +Module PopLocals. + Record t : Set := { + (* The stack is a pointer to some data in the heap. *) + stack : unit; + }. + + Definition init (evm : Evm.t) : t := + {| + stack := tt; + |}. + + Definition to_object (locals : t) : Object.t Value.t := + Object.make_option [ + ("stack", Some Evm.stack_to_value) + ]. +End PopLocals. + +Lemma run_pop (stack : Stack.t) (heap : Heap.t) : + let evm := Heap.to_evm heap in + let '(result, evm') := StateError.lift_lens Evm.Lens.stack simulations.stack.pop evm in + let result := + match result with + | inl s' => inl Constant.None_ + | inr exn => inr (Exception.Raise (Some Constant.None_)) + end in + exists fresh_stack heap', + {{ stack, heap | + stack.pop (make_list [Evm.stack_to_value]) (make_dict []) ⇓ + result + | stack ++ fresh_stack, heap' }} /\ + evm' = Heap.to_evm heap'. +Proof. + intros. + destruct StateError.lift_lens as [result evm'] eqn:?. + unfold stack.pop, simulations.stack.pop in *. + cbn in *. + repeat eexists. + { apply (Run.CallPrimitiveStateAllocStack (PopLocals.init evm) PopLocals.to_object). { + reflexivity. + } + cbn. + eapply Run.CallPrimitiveStateReadStack. { + erewrite Stack.read_length_eq. + reflexivity. + } + cbn. + eapply Run.CallPrimitiveGetInGlobals. { + apply builtins_is_imported. + admit. + } + admit. + } +Admitted. diff --git a/CoqOfPython/ethereum/shanghai/blocks.v b/CoqOfPython/ethereum/shanghai/blocks.v index 89fa766..9543017 100644 --- a/CoqOfPython/ethereum/shanghai/blocks.v +++ b/CoqOfPython/ethereum/shanghai/blocks.v @@ -58,7 +58,7 @@ Definition Withdrawal : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Header : Value.t := builtins.make_klass {| @@ -67,7 +67,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -76,7 +76,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -85,7 +85,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -94,5 +94,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/shanghai/fork.v b/CoqOfPython/ethereum/shanghai/fork.v index ea839a7..a0d8b94 100644 --- a/CoqOfPython/ethereum/shanghai/fork.v +++ b/CoqOfPython/ethereum/shanghai/fork.v @@ -186,7 +186,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -1091,7 +1091,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/shanghai/fork_types.v b/CoqOfPython/ethereum/shanghai/fork_types.v index ebdf95a..697703e 100644 --- a/CoqOfPython/ethereum/shanghai/fork_types.v +++ b/CoqOfPython/ethereum/shanghai/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/shanghai/state.v b/CoqOfPython/ethereum/shanghai/state.v index af12d3a..9eec4ac 100644 --- a/CoqOfPython/ethereum/shanghai/state.v +++ b/CoqOfPython/ethereum/shanghai/state.v @@ -85,7 +85,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/shanghai/transactions.v b/CoqOfPython/ethereum/shanghai/transactions.v index c7dac22..b64981e 100644 --- a/CoqOfPython/ethereum/shanghai/transactions.v +++ b/CoqOfPython/ethereum/shanghai/transactions.v @@ -73,7 +73,7 @@ Definition LegacyTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AccessListTransaction : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition AccessListTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition FeeMarketTransaction : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition FeeMarketTransaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Transaction : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/shanghai/trie.v b/CoqOfPython/ethereum/shanghai/trie.v index d38b6ab..0800770 100644 --- a/CoqOfPython/ethereum/shanghai/trie.v +++ b/CoqOfPython/ethereum/shanghai/trie.v @@ -172,7 +172,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -181,7 +181,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -190,7 +190,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -493,12 +493,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/shanghai/vm/__init__.v b/CoqOfPython/ethereum/shanghai/vm/__init__.v index f87921b..4c320c3 100644 --- a/CoqOfPython/ethereum/shanghai/vm/__init__.v +++ b/CoqOfPython/ethereum/shanghai/vm/__init__.v @@ -74,7 +74,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -92,7 +92,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/shanghai/vm/exceptions.v b/CoqOfPython/ethereum/shanghai/vm/exceptions.v index 07fa5d1..cfbbde9 100644 --- a/CoqOfPython/ethereum/shanghai/vm/exceptions.v +++ b/CoqOfPython/ethereum/shanghai/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Revert : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition Revert : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -69,7 +69,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -121,7 +121,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition WriteInStaticContext : Value.t := builtins.make_klass {| @@ -131,7 +131,7 @@ Definition WriteInStaticContext : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfBoundsRead : Value.t := builtins.make_klass {| @@ -141,7 +141,7 @@ Definition OutOfBoundsRead : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidParameter : Value.t := builtins.make_klass {| @@ -151,7 +151,7 @@ Definition InvalidParameter : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidContractPrefix : Value.t := builtins.make_klass {| @@ -161,7 +161,7 @@ Definition InvalidContractPrefix : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -171,5 +171,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/shanghai/vm/gas.v b/CoqOfPython/ethereum/shanghai/vm/gas.v index 1f4de0d..a5d371f 100644 --- a/CoqOfPython/ethereum/shanghai/vm/gas.v +++ b/CoqOfPython/ethereum/shanghai/vm/gas.v @@ -456,7 +456,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -465,7 +465,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v b/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v index 47ad049..de5ecb9 100644 --- a/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/shanghai/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_shanghai_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/shanghai/vm/interpreter.v b/CoqOfPython/ethereum/shanghai/vm/interpreter.v index 37e75a0..40f4ea9 100644 --- a/CoqOfPython/ethereum/shanghai/vm/interpreter.v +++ b/CoqOfPython/ethereum/shanghai/vm/interpreter.v @@ -148,7 +148,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/simulations/base_types.v b/CoqOfPython/ethereum/simulations/base_types.v index 864d5b2..4408677 100644 --- a/CoqOfPython/ethereum/simulations/base_types.v +++ b/CoqOfPython/ethereum/simulations/base_types.v @@ -64,9 +64,6 @@ Module U256. Definition to_Z (value : t) : Z := FixedUint.value (get value). - Definition to_value (value : t) : Value.t := - Value.Make globals "U256" (Pointer.Imm (Object.wrapper (Data.Integer (to_Z value)))). - Definition __add__ (self right_ : t) : M? Exception.t t := let? result := FixedUint.__add__ (get self) (get right_) in return? (Make result). diff --git a/CoqOfPython/ethereum/simulations/proofs/base_types.v b/CoqOfPython/ethereum/simulations/proofs/base_types.v new file mode 100644 index 0000000..6ecc71f --- /dev/null +++ b/CoqOfPython/ethereum/simulations/proofs/base_types.v @@ -0,0 +1,13 @@ +Require Import CoqOfPython.CoqOfPython. + +Require Import ethereum.simulations.base_types. + +Module Uint. + Definition to_value (value : Uint.t) : Value.t := + Value.Make globals "Uint" (Pointer.Imm (Object.wrapper (Data.Integer (Uint.get value)))). +End Uint. + +Module U256. + Definition to_value (value : U256.t) : Value.t := + Value.Make globals "U256" (Pointer.Imm (Object.wrapper (Data.Integer (U256.to_Z value)))). +End U256. diff --git a/CoqOfPython/ethereum/spurious_dragon/blocks.v b/CoqOfPython/ethereum/spurious_dragon/blocks.v index a8dcdb7..32307b5 100644 --- a/CoqOfPython/ethereum/spurious_dragon/blocks.v +++ b/CoqOfPython/ethereum/spurious_dragon/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/spurious_dragon/fork.v b/CoqOfPython/ethereum/spurious_dragon/fork.v index 76b279a..f3b0216 100644 --- a/CoqOfPython/ethereum/spurious_dragon/fork.v +++ b/CoqOfPython/ethereum/spurious_dragon/fork.v @@ -180,7 +180,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -892,7 +892,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/spurious_dragon/fork_types.v b/CoqOfPython/ethereum/spurious_dragon/fork_types.v index 5ebfa8b..cc6cdf7 100644 --- a/CoqOfPython/ethereum/spurious_dragon/fork_types.v +++ b/CoqOfPython/ethereum/spurious_dragon/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/spurious_dragon/state.v b/CoqOfPython/ethereum/spurious_dragon/state.v index da17ff9..6afcb8f 100644 --- a/CoqOfPython/ethereum/spurious_dragon/state.v +++ b/CoqOfPython/ethereum/spurious_dragon/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/spurious_dragon/transactions.v b/CoqOfPython/ethereum/spurious_dragon/transactions.v index 4f7e8df..e337b49 100644 --- a/CoqOfPython/ethereum/spurious_dragon/transactions.v +++ b/CoqOfPython/ethereum/spurious_dragon/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/spurious_dragon/trie.v b/CoqOfPython/ethereum/spurious_dragon/trie.v index 13f5c66..54cd897 100644 --- a/CoqOfPython/ethereum/spurious_dragon/trie.v +++ b/CoqOfPython/ethereum/spurious_dragon/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v b/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v index f800f18..eb0f8d3 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/__init__.v @@ -70,7 +70,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -79,7 +79,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -88,7 +88,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v b/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v index 7bf97a1..3d174d0 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -121,5 +121,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/gas.v b/CoqOfPython/ethereum/spurious_dragon/vm/gas.v index 80962a1..3f01696 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/gas.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/gas.v @@ -442,7 +442,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -451,7 +451,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v b/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v index c3fd68a..f0ada33 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_spurious_dragon_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v b/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v index 74b6936..93f11e5 100644 --- a/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v +++ b/CoqOfPython/ethereum/spurious_dragon/vm/interpreter.v @@ -140,7 +140,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/blocks.v b/CoqOfPython/ethereum/tangerine_whistle/blocks.v index b349689..ffdac53 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/blocks.v +++ b/CoqOfPython/ethereum/tangerine_whistle/blocks.v @@ -54,7 +54,7 @@ Definition Header : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Block : Value.t := builtins.make_klass {| @@ -63,7 +63,7 @@ Definition Block : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Log : Value.t := builtins.make_klass {| @@ -72,7 +72,7 @@ Definition Log : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Receipt : Value.t := builtins.make_klass {| @@ -81,5 +81,5 @@ Definition Receipt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/fork.v b/CoqOfPython/ethereum/tangerine_whistle/fork.v index 9e450f9..dbe2f2c 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/fork.v +++ b/CoqOfPython/ethereum/tangerine_whistle/fork.v @@ -178,7 +178,7 @@ Definition BlockChain : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_fork : Value.t -> Value.t -> M := @@ -886,7 +886,7 @@ Definition ApplyBodyOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition apply_body : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/fork_types.v b/CoqOfPython/ethereum/tangerine_whistle/fork_types.v index 850aba8..10ebcc4 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/fork_types.v +++ b/CoqOfPython/ethereum/tangerine_whistle/fork_types.v @@ -61,7 +61,7 @@ Definition Account : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EMPTY_ACCOUNT : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/ethereum/tangerine_whistle/state.v b/CoqOfPython/ethereum/tangerine_whistle/state.v index 63aed57..2c03d16 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/state.v +++ b/CoqOfPython/ethereum/tangerine_whistle/state.v @@ -80,7 +80,7 @@ Definition State : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition close_state : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/transactions.v b/CoqOfPython/ethereum/tangerine_whistle/transactions.v index 60993f2..280daae 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/transactions.v +++ b/CoqOfPython/ethereum/tangerine_whistle/transactions.v @@ -53,5 +53,5 @@ Definition Transaction : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/trie.v b/CoqOfPython/ethereum/tangerine_whistle/trie.v index 9ccbfc8..58c5914 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/trie.v +++ b/CoqOfPython/ethereum/tangerine_whistle/trie.v @@ -157,7 +157,7 @@ Definition LeafNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition ExtensionNode : Value.t := builtins.make_klass {| @@ -166,7 +166,7 @@ Definition ExtensionNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition BranchNode : Value.t := builtins.make_klass {| @@ -175,7 +175,7 @@ Definition BranchNode : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InternalNode : Value.t := M.run ltac:(M.monadic ( @@ -478,12 +478,12 @@ Axiom encode_node_in_globals : Definition Trie : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Subscript *) + (globals, "(* At base: unsupported node type: Subscript *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition copy_trie : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v b/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v index d2c2a07..2909761 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/__init__.v @@ -65,7 +65,7 @@ Definition Environment : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Message : Value.t := builtins.make_klass {| @@ -74,7 +74,7 @@ Definition Message : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition Evm : Value.t := builtins.make_klass {| @@ -83,7 +83,7 @@ Definition Evm : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition incorporate_child_on_success : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v b/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v index d63c896..2e2cd86 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/exceptions.v @@ -29,7 +29,7 @@ Definition ExceptionalHalt : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackUnderflowError : Value.t := builtins.make_klass {| @@ -39,7 +39,7 @@ Definition StackUnderflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackOverflowError : Value.t := builtins.make_klass {| @@ -49,7 +49,7 @@ Definition StackOverflowError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OutOfGasError : Value.t := builtins.make_klass {| @@ -59,7 +59,7 @@ Definition OutOfGasError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition InvalidOpcode : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition InvalidOpcode : Value.t := builtins.make_klass {| |) in M.pure Constant.None_)) ) - ] + ]; |}. Definition InvalidJumpDestError : Value.t := builtins.make_klass {| @@ -101,7 +101,7 @@ Definition InvalidJumpDestError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition StackDepthLimitError : Value.t := builtins.make_klass {| @@ -111,7 +111,7 @@ Definition StackDepthLimitError : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition AddressCollision : Value.t := builtins.make_klass {| @@ -121,5 +121,5 @@ Definition AddressCollision : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v b/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v index ff2abd1..bf6ca84 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/gas.v @@ -442,7 +442,7 @@ Definition ExtendMemory : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition MessageCallGas : Value.t := builtins.make_klass {| @@ -451,7 +451,7 @@ Definition MessageCallGas : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition charge_gas : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v b/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v index 874ac77..ef4d203 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/instructions/__init__.v @@ -65,12 +65,12 @@ Axiom ethereum_tangerine_whistle_vm_instructions_imports_system : Definition Ops : Value.t := builtins.make_klass {| Klass.bases := [ - (* At base: unsupported node type: Attribute *) + (globals, "(* At base: unsupported node type: Attribute *)") ]; Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. (* At top_level_stmt: unsupported node type: AnnAssign *) diff --git a/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v b/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v index 60c1d7a..5754fe2 100644 --- a/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v +++ b/CoqOfPython/ethereum/tangerine_whistle/vm/interpreter.v @@ -125,7 +125,7 @@ Definition MessageCallOutput : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition process_message_call : Value.t -> Value.t -> M := diff --git a/CoqOfPython/ethereum/trace.v b/CoqOfPython/ethereum/trace.v index a1337fb..0034f69 100644 --- a/CoqOfPython/ethereum/trace.v +++ b/CoqOfPython/ethereum/trace.v @@ -37,7 +37,7 @@ Definition TransactionStart : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition TransactionEnd : Value.t := builtins.make_klass {| @@ -46,7 +46,7 @@ Definition TransactionEnd : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition PrecompileStart : Value.t := builtins.make_klass {| @@ -55,7 +55,7 @@ Definition PrecompileStart : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition PrecompileEnd : Value.t := builtins.make_klass {| @@ -64,7 +64,7 @@ Definition PrecompileEnd : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OpStart : Value.t := builtins.make_klass {| @@ -73,7 +73,7 @@ Definition OpStart : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OpEnd : Value.t := builtins.make_klass {| @@ -82,7 +82,7 @@ Definition OpEnd : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition OpException : Value.t := builtins.make_klass {| @@ -91,7 +91,7 @@ Definition OpException : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition EvmStop : Value.t := builtins.make_klass {| @@ -100,7 +100,7 @@ Definition EvmStop : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition GasAndRefund : Value.t := builtins.make_klass {| @@ -109,7 +109,7 @@ Definition GasAndRefund : Value.t := builtins.make_klass {| Klass.class_methods := [ ]; Klass.methods := [ - ] + ]; |}. Definition TraceEvent : Value.t := M.run ltac:(M.monadic ( diff --git a/CoqOfPython/proofs/heap.v b/CoqOfPython/proofs/heap.v deleted file mode 100644 index 5d336c0..0000000 --- a/CoqOfPython/proofs/heap.v +++ /dev/null @@ -1,37 +0,0 @@ -(** * The memory that we use to interpret the translated Python code. *) -Require Import CoqOfPython.CoqOfPython. -Require Import proofs.CoqOfPython. - -Require ethereum.paris.vm.simulations.__init__. -Module Evm := __init__.Evm. - -Module Address. - Inductive t : Set := - | Evm. -End Address. - -Module Heap. - Record t : Set := { - evm : Evm.t; - }. - - Global Instance I : Heap.Trait Heap.t Address.t := { - get_Set a := - match a with - | Address.Evm => Evm.t - end; - read a h := - match a with - | Address.Evm => Some h.(evm) - end; - alloc_write a h := - match a with - | Address.Evm => fun v => Some (h <| evm := v |>) - end; - }. - - Lemma is_valid : Heap.Valid.t I. - Proof. - sauto. - Qed. -End Heap. diff --git a/CoqOfPython/proofs/CoqOfPython.v b/CoqOfPython/simulations/proofs/CoqOfPython.v similarity index 100% rename from CoqOfPython/proofs/CoqOfPython.v rename to CoqOfPython/simulations/proofs/CoqOfPython.v diff --git a/CoqOfPython/simulations/proofs/heap.v b/CoqOfPython/simulations/proofs/heap.v new file mode 100644 index 0000000..1df0da6 --- /dev/null +++ b/CoqOfPython/simulations/proofs/heap.v @@ -0,0 +1,73 @@ +(** * The memory that we use to interpret the translated Python code. *) +Require Import CoqOfPython.CoqOfPython. +Require Import simulations.CoqOfPython. +Require Import simulations.proofs.CoqOfPython. + +Require ethereum.simulations.base_types. +Module Uint := base_types.Uint. +Module U256 := base_types.U256. + +Require ethereum.paris.vm.simulations.__init__. +Module Evm := __init__.Evm. + +Module Address. + Inductive t : Set := + | evm + | stack. +End Address. + +Module Heap. + Module Evm. + Record t : Set := { + pc : Uint.t; + gas_left : Uint.t; + }. + End Evm. + + Record t : Set := { + evm : Evm.t; + stack : list U256.t; + }. + + Global Instance I : Heap.Trait Heap.t Address.t := { + get_Set a := + match a with + | Address.evm => Evm.t + | Address.stack => list U256.t + end; + read a h := + match a with + | Address.evm => Some h.(evm) + | Address.stack => Some h.(stack) + end; + alloc_write a h := + match a with + | Address.evm => fun v => Some (h <| evm := v |>) + | Address.stack => fun v => Some (h <| stack := v |>) + end; + }. + + Lemma is_valid : Heap.Valid.t I. + Proof. + sauto. + Qed. + + Definition to_message (heap : t) : __init__.Message.t __init__.Evm.t. + Admitted. (* TODO *) + + (*Definition of_evm (evm : ethereum.paris.vm.simulations.__init__.Evm.t) : t := + {| + evm := {| + Evm.pc := Evm.Lens.pc.(Lens.read) evm; + Evm.gas_left := Evm.Lens.gas_left.(Lens.read) evm; + |}; + stack := Evm.Lens.stack.(Lens.read) evm; + |}.*) + + Definition to_evm (heap : t) : __init__.Evm.t := + __init__.Evm.Make (to_message heap) {| + __init__.Evm.Rest.pc := heap.(evm).(Evm.pc); + __init__.Evm.Rest.stack := heap.(stack); + __init__.Evm.Rest.gas_left := heap.(evm).(Evm.gas_left); + |}. +End Heap. diff --git a/main.py b/main.py index adbd641..ba03d0d 100644 --- a/main.py +++ b/main.py @@ -99,6 +99,62 @@ def get_globals_of_import(node: ast.ImportFrom) -> str: return actual_path.replace("/", ".") +def generate_klass( + klass_name: str, + bases: list[str], + class_methods: list[tuple[str, str]], + methods: list[tuple[str, str]], +) -> str: + text = f"Definition {klass_name} : Value.t := " + text += "builtins.make_klass {|\n" + + # Bases + text += generate_indent(1) + "Klass.bases := [" + not_first = False + for base in bases: + if not_first: + text += ";" + text += "\n" + text += generate_indent(2) + f"(globals, \"{base}\")" + not_first = True + text += "\n" + text += generate_indent(1) + "];\n" + + # Class methods + text += generate_indent(1) + "Klass.class_methods := [" + not_first = False + for (name, body) in class_methods: + if not_first: + text += ";" + text += "\n" + text += generate_indent(2) + "(\n" + text += generate_indent(3) + f"\"{name}\"," + "\n" + text += generate_indent(3) + body + "\n" + text += generate_indent(2) + ")" + not_first = True + text += "\n" + text += generate_indent(1) + "];\n" + + # Methods + text += generate_indent(1) + "Klass.methods := [" + not_first = False + for (name, body) in methods: + if not_first: + text += ";" + text += "\n" + text += generate_indent(2) + "(\n" + text += generate_indent(3) + f"\"{name}\"," + "\n" + text += generate_indent(3) + body + "\n" + text += generate_indent(2) + ")" + not_first = True + text += "\n" + text += generate_indent(1) + "];\n" + + text += "|}." + + return text + + def generate_top_level_stmt(node: ast.stmt): if isinstance(node, ast.FunctionDef): return f"Definition {generate_name(node.name)} : Value.t -> Value.t -> M :=\n" + \ @@ -109,63 +165,36 @@ def generate_top_level_stmt(node: ast.stmt): elif isinstance(node, ast.AsyncFunctionDef): return generate_error("top_level_stmt", node) elif isinstance(node, ast.ClassDef): - text = f"Definition {generate_name(node.name)} : Value.t := " - text += "builtins.make_klass {|\n" - - # Bases - text += generate_indent(1) + "Klass.bases := [" - not_first = False - for base in node.bases: - if not_first: - text += ";" - text += "\n" - text += generate_indent(2) - if isinstance(base, ast.Name): - text += f"(globals, \"{generate_name(base.id)}\")" - else: - text += generate_error("base", base) - not_first = True - text += "\n" - text += generate_indent(1) + "];\n" - - # Class methods - text += generate_indent(1) + "Klass.class_methods := [" - not_first = False - for stmt in node.body: - if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 1: - decorator = stmt.decorator_list[0] - if isinstance(decorator, ast.Name) and decorator.id == "classmethod": - if not_first: - text += ";" - text += "\n" - text += generate_indent(2) + "(\n" - text += generate_indent(3) + f"\"{stmt.name}\"," + "\n" - text += generate_indent(3) - text += generate_function_def_body(3, stmt) + "\n" - text += generate_indent(2) + ")" - not_first = True - text += "\n" - text += generate_indent(1) + "];\n" - - # Methods - text += generate_indent(1) + "Klass.methods := [" - not_first = False - for stmt in node.body: - if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 0: - if not_first: - text += ";" - text += "\n" - text += generate_indent(2) + "(\n" - text += generate_indent(3) + f"\"{stmt.name}\"," + "\n" - text += generate_indent(3) - text += generate_function_def_body(3, stmt) + "\n" - text += generate_indent(2) + ")" - not_first = True - text += "\n" - text += generate_indent(1) + "]\n" - text += "|}." - - return text + name = generate_name(node.name) + + bases = [ + generate_name(base.id) + if isinstance(base, ast.Name) + else generate_error("base", base) + for base in node.bases + ] + class_methods = [ + (stmt.name, generate_function_def_body(3, stmt)) + for stmt in node.body + if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 1 and + isinstance(stmt.decorator_list[0], ast.Name) and + stmt.decorator_list[0].id == "classmethod" + + ] + methods = [ + (stmt.name, generate_function_def_body(3, stmt)) + for stmt in node.body + if isinstance(stmt, ast.FunctionDef) and len(stmt.decorator_list) == 0 + ] + + # If the class is a `@dataclass` + if len(node.decorator_list) == 1 and \ + isinstance(node.decorator_list[0], ast.Name) and \ + node.decorator_list[0].id == "dataclass": + # TODO: add an `__init__` function, ... + pass + + return generate_klass(name, bases, class_methods, methods) elif isinstance(node, ast.Assign): if len(node.targets) >= 2: return generate_error("top_level_stmt", node)