- address : stateGetter_op
- origin : stateGetter_op
- caller : stateGetter_op
- gasprice : stateGetter_op
- coinbase : stateGetter_op
- timestamp : stateGetter_op
- number : stateGetter_op
- prevrandao : stateGetter_op
- gaslimit : stateGetter_op
- chainid : stateGetter_op
- selfbalance : stateGetter_op
- pc : stateGetter_op
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
Instances For
Equations
- StateGettersSummary.stateGetter_op.address.get = StateGettersSummary.address_instr
- StateGettersSummary.stateGetter_op.origin.get = StateGettersSummary.origin_instr
- StateGettersSummary.stateGetter_op.caller.get = StateGettersSummary.caller_instr
- StateGettersSummary.stateGetter_op.gasprice.get = StateGettersSummary.gasprice_instr
- StateGettersSummary.stateGetter_op.coinbase.get = StateGettersSummary.coinbase_instr
- StateGettersSummary.stateGetter_op.timestamp.get = StateGettersSummary.timestamp_instr
- StateGettersSummary.stateGetter_op.number.get = StateGettersSummary.number_instr
- StateGettersSummary.stateGetter_op.prevrandao.get = StateGettersSummary.prevrandao_instr
- StateGettersSummary.stateGetter_op.gaslimit.get = StateGettersSummary.gaslimit_instr
- StateGettersSummary.stateGetter_op.chainid.get = StateGettersSummary.chainid_instr
- StateGettersSummary.stateGetter_op.selfbalance.get = StateGettersSummary.selfbalance_instr
- StateGettersSummary.stateGetter_op.pc.get = StateGettersSummary.pc_instr
Instances For
Equations
- StateGettersSummary.stateGetter_op.address.t = (StateGettersSummary.address_instr.get StateGettersSummary.stateGetter_op.t.proof_1).1
- StateGettersSummary.stateGetter_op.origin.t = (StateGettersSummary.origin_instr.get StateGettersSummary.stateGetter_op.t.proof_2).1
- StateGettersSummary.stateGetter_op.caller.t = (StateGettersSummary.caller_instr.get StateGettersSummary.stateGetter_op.t.proof_3).1
- StateGettersSummary.stateGetter_op.gasprice.t = (StateGettersSummary.gasprice_instr.get StateGettersSummary.stateGetter_op.t.proof_4).1
- StateGettersSummary.stateGetter_op.coinbase.t = (StateGettersSummary.coinbase_instr.get StateGettersSummary.stateGetter_op.t.proof_5).1
- StateGettersSummary.stateGetter_op.timestamp.t = (StateGettersSummary.timestamp_instr.get StateGettersSummary.stateGetter_op.t.proof_6).1
- StateGettersSummary.stateGetter_op.number.t = (StateGettersSummary.number_instr.get StateGettersSummary.stateGetter_op.t.proof_7).1
- StateGettersSummary.stateGetter_op.prevrandao.t = (StateGettersSummary.prevrandao_instr.get StateGettersSummary.stateGetter_op.t.proof_8).1
- StateGettersSummary.stateGetter_op.gaslimit.t = (StateGettersSummary.gaslimit_instr.get StateGettersSummary.stateGetter_op.t.proof_9).1
- StateGettersSummary.stateGetter_op.chainid.t = (StateGettersSummary.chainid_instr.get StateGettersSummary.stateGetter_op.t.proof_10).1
- StateGettersSummary.stateGetter_op.selfbalance.t = (StateGettersSummary.selfbalance_instr.get StateGettersSummary.stateGetter_op.t.proof_11).1
- StateGettersSummary.stateGetter_op.pc.t = (StateGettersSummary.pc_instr.get StateGettersSummary.stateGetter_op.t.proof_12).1
Instances For
Equations
- StateGettersSummary.EVM.step_arith op gas gasCost = EvmYul.EVM.step gas gasCost op.get
Instances For
Equations
Instances For
Equations
- StateGettersSummary.stateGetter_op.address.do symState = EvmYul.UInt256.ofNat ↑symState.executionEnv.codeOwner
- StateGettersSummary.stateGetter_op.origin.do symState = EvmYul.UInt256.ofNat ↑symState.executionEnv.sender
- StateGettersSummary.stateGetter_op.caller.do symState = EvmYul.UInt256.ofNat ↑symState.executionEnv.source
- StateGettersSummary.stateGetter_op.gasprice.do symState = EvmYul.UInt256.ofNat symState.executionEnv.gasPrice
- StateGettersSummary.stateGetter_op.coinbase.do symState = EvmYul.UInt256.ofNat ↑symState.coinBase
- StateGettersSummary.stateGetter_op.timestamp.do symState = symState.timeStamp
- StateGettersSummary.stateGetter_op.number.do symState = symState.number
- StateGettersSummary.stateGetter_op.prevrandao.do symState = symState.executionEnv.header.prevRandao
- StateGettersSummary.stateGetter_op.gaslimit.do symState = symState.gasLimit
- StateGettersSummary.stateGetter_op.chainid.do symState = symState.chainId
- StateGettersSummary.stateGetter_op.selfbalance.do symState = symState.selfbalance
- StateGettersSummary.stateGetter_op.pc.do symState = symState.pc
Instances For
theorem
StateGettersSummary.EVM.step_add_to_step_add
(op : stateGetter_op)
(gas gasCost symGasPrice symTimestamp symNumber symGaslimit : ℕ)
(symStack : EvmYul.Stack EvmYul.UInt256)
(symPc symGasAvailable symRefund symActiveWords symPrevrandao : EvmYul.UInt256)
(symExecLength : ℕ)
(symReturnData symCode symMemory : ByteArray)
(symAccessedStorageKeys : Batteries.RBSet (EvmYul.AccountAddress × EvmYul.UInt256) EvmYul.Substate.storageKeysCmp)
(symAccounts : EvmYul.AccountMap)
(symCodeOwner symSender symSource symCoinbase : EvmYul.AccountAddress)
(symPerm : Bool)
(gpos : 0 < gas)
(symState : EvmYul.EVM.State)
(op_not_pc : op ≠ stateGetter_op.pc)
:
let ss :=
{ accountMap := symAccounts, σ₀ := symState.σ₀, totalGasUsedInBlock := symState.totalGasUsedInBlock,
transactionReceipts := symState.transactionReceipts,
substate :=
let __src := symState.substate;
{ selfDestructSet := __src.selfDestructSet, touchedAccounts := __src.touchedAccounts, refundBalance := symRefund,
accessedAccounts := __src.accessedAccounts, accessedStorageKeys := symAccessedStorageKeys,
logSeries := __src.logSeries },
executionEnv :=
let __src := symState.executionEnv;
{ codeOwner := symCodeOwner, sender := symSender, source := symSource, weiValue := __src.weiValue,
inputData := __src.inputData, code := symCode, gasPrice := symGasPrice,
header :=
let __src := symState.executionEnv.header;
{ parentHash := __src.parentHash, ommersHash := __src.ommersHash, beneficiary := symCoinbase,
stateRoot := __src.stateRoot, transRoot := __src.transRoot, receiptRoot := __src.receiptRoot,
logsBloom := __src.logsBloom, difficulty := __src.difficulty, number := symNumber, gasLimit := symGaslimit,
gasUsed := __src.gasUsed, timestamp := symTimestamp, extraData := __src.extraData, nonce := __src.nonce,
prevRandao := symPrevrandao, baseFeePerGas := __src.baseFeePerGas,
parentBeaconBlockRoot := __src.parentBeaconBlockRoot, withdrawalsRoot := __src.withdrawalsRoot,
blobGasUsed := __src.blobGasUsed, excessBlobGas := __src.excessBlobGas },
depth := __src.depth, perm := symPerm, blobVersionedHashes := __src.blobVersionedHashes },
blocks := symState.blocks, genesisBlockHeader := symState.genesisBlockHeader,
createdAccounts := symState.createdAccounts, gasAvailable := symGasAvailable, activeWords := symActiveWords,
memory := symMemory, returnData := symReturnData, H_return := symState.H_return, pc := symPc, stack := symStack,
execLength := symExecLength };
step_arith op gas gasCost ss = EvmYul.step_arith op
{ toState := ss.toState, gasAvailable := symGasAvailable - EvmYul.UInt256.ofNat gasCost,
activeWords := ss.activeWords, memory := ss.memory, returnData := ss.returnData, H_return := ss.H_return,
pc := ss.pc, stack := ss.stack, execLength := symExecLength + 1 }
theorem
StateGettersSummary.EVM.step_getter_summary
(op : stateGetter_op)
(gas gasCost symGasPrice symTimestamp symNumber symGaslimit : ℕ)
(symStack : EvmYul.Stack EvmYul.UInt256)
(symPc symGasAvailable symRefund symActiveWords symPrevrandao : EvmYul.UInt256)
(symExecLength : ℕ)
(symReturnData symCode symMemory : ByteArray)
(symAccessedStorageKeys : Batteries.RBSet (EvmYul.AccountAddress × EvmYul.UInt256) EvmYul.Substate.storageKeysCmp)
(symAccounts : EvmYul.AccountMap)
(symCodeOwner symSender symSource symCoinbase : EvmYul.AccountAddress)
(symPerm : Bool)
(gpos : 0 < gas)
(symState : EvmYul.EVM.State)
:
let ss :=
{ accountMap := symAccounts, σ₀ := symState.σ₀, totalGasUsedInBlock := symState.totalGasUsedInBlock,
transactionReceipts := symState.transactionReceipts,
substate :=
let __src := symState.substate;
{ selfDestructSet := __src.selfDestructSet, touchedAccounts := __src.touchedAccounts, refundBalance := symRefund,
accessedAccounts := __src.accessedAccounts, accessedStorageKeys := symAccessedStorageKeys,
logSeries := __src.logSeries },
executionEnv :=
let __src := symState.executionEnv;
{ codeOwner := symCodeOwner, sender := symSender, source := symSource, weiValue := __src.weiValue,
inputData := __src.inputData, code := symCode, gasPrice := symGasPrice,
header :=
let __src := symState.executionEnv.header;
{ parentHash := __src.parentHash, ommersHash := __src.ommersHash, beneficiary := symCoinbase,
stateRoot := __src.stateRoot, transRoot := __src.transRoot, receiptRoot := __src.receiptRoot,
logsBloom := __src.logsBloom, difficulty := __src.difficulty, number := symNumber, gasLimit := symGaslimit,
gasUsed := __src.gasUsed, timestamp := symTimestamp, extraData := __src.extraData, nonce := __src.nonce,
prevRandao := symPrevrandao, baseFeePerGas := __src.baseFeePerGas,
parentBeaconBlockRoot := __src.parentBeaconBlockRoot, withdrawalsRoot := __src.withdrawalsRoot,
blobGasUsed := __src.blobGasUsed, excessBlobGas := __src.excessBlobGas },
depth := __src.depth, perm := symPerm, blobVersionedHashes := __src.blobVersionedHashes },
blocks := symState.blocks, genesisBlockHeader := symState.genesisBlockHeader,
createdAccounts := symState.createdAccounts, gasAvailable := symGasAvailable, activeWords := symActiveWords,
memory := symMemory, returnData := symReturnData, H_return := symState.H_return, pc := symPc, stack := symStack,
execLength := symExecLength };
step_arith op gas gasCost ss = Except.ok
{ toState := ss.toState, gasAvailable := symGasAvailable - EvmYul.UInt256.ofNat gasCost,
activeWords := ss.activeWords, memory := ss.memory, returnData := ss.returnData, H_return := ss.H_return,
pc := symPc.add (EvmYul.UInt256.ofNat 1), stack := op.do ss :: symStack, execLength := symExecLength + 1 }
Equations
- StateGettersSummary.stateGetter_op.address.to_bin = { data := #[48] }
- StateGettersSummary.stateGetter_op.origin.to_bin = { data := #[50] }
- StateGettersSummary.stateGetter_op.caller.to_bin = { data := #[51] }
- StateGettersSummary.stateGetter_op.gasprice.to_bin = { data := #[58] }
- StateGettersSummary.stateGetter_op.coinbase.to_bin = { data := #[65] }
- StateGettersSummary.stateGetter_op.timestamp.to_bin = { data := #[66] }
- StateGettersSummary.stateGetter_op.number.to_bin = { data := #[67] }
- StateGettersSummary.stateGetter_op.prevrandao.to_bin = { data := #[68] }
- StateGettersSummary.stateGetter_op.gaslimit.to_bin = { data := #[69] }
- StateGettersSummary.stateGetter_op.chainid.to_bin = { data := #[70] }
- StateGettersSummary.stateGetter_op.selfbalance.to_bin = { data := #[71] }
- StateGettersSummary.stateGetter_op.pc.to_bin = { data := #[88] }
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
StateGettersSummary.memoryExpansionCost_arith
(op : stateGetter_op)
(symState : EvmYul.EVM.State)
:
Equations
Instances For
@[simp]
theorem
StateGettersSummary.X_getter_summary
(op : stateGetter_op)
(symGasPrice symTimestamp symNumber symGaslimit : ℕ)
(symStack : EvmYul.Stack EvmYul.UInt256)
(symGasAvailable symRefund symActiveWords symPrevrandao : EvmYul.UInt256)
(symExecLength : ℕ)
(symReturnData symCode symMemory : ByteArray)
(symAccessedStorageKeys : Batteries.RBSet (EvmYul.AccountAddress × EvmYul.UInt256) EvmYul.Substate.storageKeysCmp)
(symAccounts : EvmYul.AccountMap)
(symCodeOwner symSender symSource symCoinbase : EvmYul.AccountAddress)
(symPerm : Bool)
(symValidJumps : Array EvmYul.UInt256)
(enoughGas : op.C'_comp < symGasAvailable.toNat)
(symStack_ok : List.length symStack < 1024)
(code_h : symCode = op.to_bin)
(symState : EvmYul.EVM.State)
:
let ss :=
{ accountMap := symAccounts, σ₀ := symState.σ₀, totalGasUsedInBlock := symState.totalGasUsedInBlock,
transactionReceipts := symState.transactionReceipts,
substate :=
let __src := symState.substate;
{ selfDestructSet := __src.selfDestructSet, touchedAccounts := __src.touchedAccounts, refundBalance := symRefund,
accessedAccounts := __src.accessedAccounts, accessedStorageKeys := symAccessedStorageKeys,
logSeries := __src.logSeries },
executionEnv :=
let __src := symState.executionEnv;
{ codeOwner := symCodeOwner, sender := symSender, source := symSource, weiValue := __src.weiValue,
inputData := __src.inputData, code := symCode, gasPrice := symGasPrice,
header :=
let __src := symState.executionEnv.header;
{ parentHash := __src.parentHash, ommersHash := __src.ommersHash, beneficiary := symCoinbase,
stateRoot := __src.stateRoot, transRoot := __src.transRoot, receiptRoot := __src.receiptRoot,
logsBloom := __src.logsBloom, difficulty := __src.difficulty, number := symNumber, gasLimit := symGaslimit,
gasUsed := __src.gasUsed, timestamp := symTimestamp, extraData := __src.extraData, nonce := __src.nonce,
prevRandao := symPrevrandao, baseFeePerGas := __src.baseFeePerGas,
parentBeaconBlockRoot := __src.parentBeaconBlockRoot, withdrawalsRoot := __src.withdrawalsRoot,
blobGasUsed := __src.blobGasUsed, excessBlobGas := __src.excessBlobGas },
depth := __src.depth, perm := symPerm, blobVersionedHashes := __src.blobVersionedHashes },
blocks := symState.blocks, genesisBlockHeader := symState.genesisBlockHeader,
createdAccounts := symState.createdAccounts, gasAvailable := symGasAvailable, activeWords := symActiveWords,
memory := symMemory, returnData := symReturnData, H_return := symState.H_return, pc := EvmYul.UInt256.ofNat 0,
stack := symStack, execLength := symExecLength };
EvmYul.EVM.X symGasAvailable.toNat symValidJumps ss = Except.ok
(EvmYul.EVM.ExecutionResult.success
{ toState := ss.toState, gasAvailable := symGasAvailable - EvmYul.UInt256.ofNat op.C'_comp,
activeWords := ss.activeWords, memory := ss.memory, returnData := ByteArray.empty, H_return := ss.H_return,
pc := EvmYul.UInt256.ofNat 1, stack := op.do ss :: symStack, execLength := symExecLength + 2 }
ByteArray.empty)