Documentation

EvmEquivalence.Interfaces.GasInterface

Schedule Interface #

Interface for the «_<_>_SCHEDULE_Int_ScheduleConst_Schedule» and «_<<_>>_SCHEDULE_Bool_ScheduleFlag_Schedule» functions.

Needed (axiomatic) Instances #

We need the DecidableEq and LawfulBEq instances for SortK. At the moment, these instances are sorried out, but should be provable at some point.

Schedule Constants #

Interface for schedule constants on any given schedule.

theorem GasInterface.sched_default_def (const : SortScheduleConst) :
«_<_>_SCHEDULE_Int_ScheduleConst_Schedule» const SortSchedule.DEFAULT_EVM = match const with | SortScheduleConst.Gzero_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gbase_SCHEDULE_ScheduleConst => some 2 | SortScheduleConst.Gverylow_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Glow_SCHEDULE_ScheduleConst => some 5 | SortScheduleConst.Gmid_SCHEDULE_ScheduleConst => some 8 | SortScheduleConst.Ghigh_SCHEDULE_ScheduleConst => some 10 | SortScheduleConst.Gexp_SCHEDULE_ScheduleConst => some 10 | SortScheduleConst.Gexpbyte_SCHEDULE_ScheduleConst => some 10 | SortScheduleConst.Gsha3_SCHEDULE_ScheduleConst => some 30 | SortScheduleConst.Gsha3word_SCHEDULE_ScheduleConst => some 6 | SortScheduleConst.Gsload_SCHEDULE_ScheduleConst => some 50 | SortScheduleConst.Gsstoreset_SCHEDULE_ScheduleConst => some 20000 | SortScheduleConst.Gsstorereset_SCHEDULE_ScheduleConst => some 5000 | SortScheduleConst.Rsstoreclear_SCHEDULE_ScheduleConst => some 15000 | SortScheduleConst.Glog_SCHEDULE_ScheduleConst => some 375 | SortScheduleConst.Glogdata_SCHEDULE_ScheduleConst => some 8 | SortScheduleConst.Glogtopic_SCHEDULE_ScheduleConst => some 375 | SortScheduleConst.Gcall_SCHEDULE_ScheduleConst => some 40 | SortScheduleConst.Gcallstipend_SCHEDULE_ScheduleConst => some 2300 | SortScheduleConst.Gcallvalue_SCHEDULE_ScheduleConst => some 9000 | SortScheduleConst.Gnewaccount_SCHEDULE_ScheduleConst => some 25000 | SortScheduleConst.Gcreate_SCHEDULE_ScheduleConst => some 32000 | SortScheduleConst.Gcodedeposit_SCHEDULE_ScheduleConst => some 200 | SortScheduleConst.Gselfdestruct_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Rselfdestruct_SCHEDULE_ScheduleConst => some 24000 | SortScheduleConst.Gmemory_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Gquadcoeff_SCHEDULE_ScheduleConst => some 512 | SortScheduleConst.Gcopy_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Gquaddivisor_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gtransaction_SCHEDULE_ScheduleConst => some 21000 | SortScheduleConst.Gtxcreate_SCHEDULE_ScheduleConst => some 53000 | SortScheduleConst.Gtxdatazero_SCHEDULE_ScheduleConst => some 4 | SortScheduleConst.Gtxdatanonzero_SCHEDULE_ScheduleConst => some 68 | SortScheduleConst.Gjumpdest_SCHEDULE_ScheduleConst => some 1 | SortScheduleConst.Gbalance_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gblockhash_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gextcodesize_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gextcodecopy_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gecadd_SCHEDULE_ScheduleConst => some 500 | SortScheduleConst.Gecmul_SCHEDULE_ScheduleConst => some 40000 | SortScheduleConst.Gecpairconst_SCHEDULE_ScheduleConst => some 100000 | SortScheduleConst.Gecpaircoeff_SCHEDULE_ScheduleConst => some 80000 | SortScheduleConst.Gfround_SCHEDULE_ScheduleConst => some 1 | SortScheduleConst.maxCodeSize_SCHEDULE_ScheduleConst => some 4294967295 | SortScheduleConst.Rb_SCHEDULE_ScheduleConst => some 5000000000000000000 | SortScheduleConst.Gcoldsload_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gcoldaccountaccess_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gwarmstorageread_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gwarmstoragedirtystore_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gaccessliststoragekey_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gaccesslistaddress_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.maxInitCodeSize_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Ginitcodewordcost_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Rmaxquotient_SCHEDULE_ScheduleConst => some 2 | SortScheduleConst.Gpointeval_SCHEDULE_ScheduleConst => some 0
@[simp]
theorem GasInterface.cancun_def (const : SortScheduleConst) :
«_<_>_SCHEDULE_Int_ScheduleConst_Schedule» const SortSchedule.CANCUN_EVM = match const with | SortScheduleConst.Gzero_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gbase_SCHEDULE_ScheduleConst => some 2 | SortScheduleConst.Gverylow_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Glow_SCHEDULE_ScheduleConst => some 5 | SortScheduleConst.Gmid_SCHEDULE_ScheduleConst => some 8 | SortScheduleConst.Ghigh_SCHEDULE_ScheduleConst => some 10 | SortScheduleConst.Gexp_SCHEDULE_ScheduleConst => some 10 | SortScheduleConst.Gexpbyte_SCHEDULE_ScheduleConst => some 50 | SortScheduleConst.Gsha3_SCHEDULE_ScheduleConst => some 30 | SortScheduleConst.Gsha3word_SCHEDULE_ScheduleConst => some 6 | SortScheduleConst.Gsload_SCHEDULE_ScheduleConst => some 100 | SortScheduleConst.Gsstoreset_SCHEDULE_ScheduleConst => some 20000 | SortScheduleConst.Gsstorereset_SCHEDULE_ScheduleConst => some 2900 | SortScheduleConst.Rsstoreclear_SCHEDULE_ScheduleConst => some 4800 | SortScheduleConst.Glog_SCHEDULE_ScheduleConst => some 375 | SortScheduleConst.Glogdata_SCHEDULE_ScheduleConst => some 8 | SortScheduleConst.Glogtopic_SCHEDULE_ScheduleConst => some 375 | SortScheduleConst.Gcall_SCHEDULE_ScheduleConst => some 700 | SortScheduleConst.Gcallstipend_SCHEDULE_ScheduleConst => some 2300 | SortScheduleConst.Gcallvalue_SCHEDULE_ScheduleConst => some 9000 | SortScheduleConst.Gnewaccount_SCHEDULE_ScheduleConst => some 25000 | SortScheduleConst.Gcreate_SCHEDULE_ScheduleConst => some 32000 | SortScheduleConst.Gcodedeposit_SCHEDULE_ScheduleConst => some 200 | SortScheduleConst.Gselfdestruct_SCHEDULE_ScheduleConst => some 5000 | SortScheduleConst.Rselfdestruct_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gmemory_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Gquadcoeff_SCHEDULE_ScheduleConst => some 512 | SortScheduleConst.Gcopy_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Gquaddivisor_SCHEDULE_ScheduleConst => some 3 | SortScheduleConst.Gtransaction_SCHEDULE_ScheduleConst => some 21000 | SortScheduleConst.Gtxcreate_SCHEDULE_ScheduleConst => some 53000 | SortScheduleConst.Gtxdatazero_SCHEDULE_ScheduleConst => some 4 | SortScheduleConst.Gtxdatanonzero_SCHEDULE_ScheduleConst => some 16 | SortScheduleConst.Gjumpdest_SCHEDULE_ScheduleConst => some 1 | SortScheduleConst.Gbalance_SCHEDULE_ScheduleConst => some 700 | SortScheduleConst.Gblockhash_SCHEDULE_ScheduleConst => some 20 | SortScheduleConst.Gextcodesize_SCHEDULE_ScheduleConst => some 700 | SortScheduleConst.Gextcodecopy_SCHEDULE_ScheduleConst => some 700 | SortScheduleConst.Gecadd_SCHEDULE_ScheduleConst => some 150 | SortScheduleConst.Gecmul_SCHEDULE_ScheduleConst => some 6000 | SortScheduleConst.Gecpairconst_SCHEDULE_ScheduleConst => some 45000 | SortScheduleConst.Gecpaircoeff_SCHEDULE_ScheduleConst => some 34000 | SortScheduleConst.Gfround_SCHEDULE_ScheduleConst => some 1 | SortScheduleConst.maxCodeSize_SCHEDULE_ScheduleConst => some 24576 | SortScheduleConst.Rb_SCHEDULE_ScheduleConst => some 0 | SortScheduleConst.Gcoldsload_SCHEDULE_ScheduleConst => some 2100 | SortScheduleConst.Gcoldaccountaccess_SCHEDULE_ScheduleConst => some 2600 | SortScheduleConst.Gwarmstorageread_SCHEDULE_ScheduleConst => some 100 | SortScheduleConst.Gwarmstoragedirtystore_SCHEDULE_ScheduleConst => some 100 | SortScheduleConst.Gaccessliststoragekey_SCHEDULE_ScheduleConst => some 1900 | SortScheduleConst.Gaccesslistaddress_SCHEDULE_ScheduleConst => some 2400 | SortScheduleConst.maxInitCodeSize_SCHEDULE_ScheduleConst => some 49152 | SortScheduleConst.Ginitcodewordcost_SCHEDULE_ScheduleConst => some 2 | SortScheduleConst.Rmaxquotient_SCHEDULE_ScheduleConst => some 5 | SortScheduleConst.Gpointeval_SCHEDULE_ScheduleConst => some 50000
theorem GasInterface.flag_default_def (flag : SortScheduleFlag) :
«_<<_>>_SCHEDULE_Bool_ScheduleFlag_Schedule» flag SortSchedule.DEFAULT_EVM = match flag with | SortScheduleFlag.Gemptyisnonexistent_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasaccesslist_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasbasefee_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasbeaconroot_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasblobbasefee_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasblobhash_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghaschainid_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghascreate2_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasdirtysstore_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghaseip6780_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasextcodehash_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasmaxinitcodesize_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasmcopy_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasprevrandao_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghaspushzero_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasrejectedfirstbyte_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasreturndata_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasrevert_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasselfbalance_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasshift_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghassstorestipend_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghasstaticcall_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghastransient_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghaswarmcoinbase_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Ghaswithdrawals_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Gselfdestructnewaccount_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Gstaticcalldepth_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Gzerovaluenewaccountgas_SCHEDULE_ScheduleFlag => some true
@[simp]
theorem GasInterface.flag_cancun_def (flag : SortScheduleFlag) :
«_<<_>>_SCHEDULE_Bool_ScheduleFlag_Schedule» flag SortSchedule.CANCUN_EVM = match flag with | SortScheduleFlag.Gemptyisnonexistent_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasaccesslist_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasbasefee_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasbeaconroot_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasblobbasefee_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasblobhash_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghaschainid_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghascreate2_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasdirtysstore_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghaseip6780_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasextcodehash_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasmaxinitcodesize_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasmcopy_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasprevrandao_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghaspushzero_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasrejectedfirstbyte_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasreturndata_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasrevert_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasselfbalance_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasshift_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghassstorestipend_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghasstaticcall_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghastransient_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghaswarmcoinbase_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Ghaswithdrawals_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Gselfdestructnewaccount_SCHEDULE_ScheduleFlag => some true | SortScheduleFlag.Gstaticcalldepth_SCHEDULE_ScheduleFlag => some false | SortScheduleFlag.Gzerovaluenewaccountgas_SCHEDULE_ScheduleFlag => some false