Skip to content

Commit 2da09fd

Browse files
authored
Small fixes to kevm-pyk library (#1462)
* kevm-pyk/kevm: correct klabel name * .github/solc_to_k: correct klabel usage * kevm-pyk/{kevm,solc-to-k}: correct some KTokens and fill in details * kevm-pyk/solc_to_k: more KToken => KApply corrections
1 parent fe0714f commit 2da09fd

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

kevm-pyk/src/kevm_pyk/kevm.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,14 +368,26 @@ def _patch_symbol_table(symbol_table: Dict[str, Any]) -> None:
368368

369369
@staticmethod
370370
def success(s: KInner, dst: KInner, r: KInner, c: KInner) -> KApply:
371-
return KApply('foundry_success ', [s, dst, r, c])
371+
return KApply('foundry_success', [s, dst, r, c])
372372

373373
@staticmethod
374374
def fail(s: KInner, dst: KInner, r: KInner, c: KInner) -> KApply:
375375
return notBool(Foundry.success(s, dst, r, c))
376376

377377
# address(uint160(uint256(keccak256("foundry default caller"))))
378378

379+
@staticmethod
380+
def loc_FOUNDRY_FAILED() -> KApply: # noqa: N802
381+
return KEVM.loc(
382+
KApply(
383+
'contract_access_field',
384+
[
385+
KApply('FoundryCheat_FOUNDRY-ACCOUNTS_FoundryContract'),
386+
KApply('Failed_FOUNDRY-ACCOUNTS_FoundryField'),
387+
],
388+
)
389+
)
390+
379391
@staticmethod
380392
def address_CALLER() -> KToken: # noqa: N802
381393
return intToken(0x1804C8AB1F12E6BBF3894D4083F33E07309D1F38)

kevm-pyk/src/kevm_pyk/solc_to_k.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,7 @@
1010
from pyk.cterm import CTerm
1111
from pyk.kast.inner import KApply, KAtt, KInner, KLabel, KRewrite, KSequence, KSort, KVariable, build_assoc
1212
from pyk.kast.manip import abstract_term_safely, substitute
13-
from pyk.kast.outer import (
14-
KFlatModule,
15-
KImport,
16-
KNonTerminal,
17-
KProduction,
18-
KProductionItem,
19-
KRule,
20-
KSentence,
21-
KTerminal,
22-
KToken,
23-
)
13+
from pyk.kast.outer import KFlatModule, KImport, KNonTerminal, KProduction, KProductionItem, KRule, KSentence, KTerminal
2414
from pyk.kcfg import KCFG
2515
from pyk.prelude.kbool import FALSE, TRUE, andBool, notBool
2616
from pyk.prelude.kint import intToken
@@ -337,11 +327,10 @@ def method_to_cfg(empty_config: KInner, contract: Contract, method: Contract.Met
337327

338328

339329
def _init_cterm(init_term: KInner) -> CTerm:
340-
key_dst = KEVM.loc(KToken('FoundryCheat . Failed', 'ContractAccess'))
341-
dst_failed_prev = KEVM.lookup(KVariable('CHEATCODE_STORAGE'), key_dst)
330+
dst_failed_prev = KEVM.lookup(KVariable('CHEATCODE_STORAGE'), Foundry.loc_FOUNDRY_FAILED())
342331
init_cterm = CTerm(init_term)
343332
init_cterm = KEVM.add_invariant(init_cterm)
344-
init_cterm = init_cterm.add_constraint(mlEqualsTrue(KApply('_==Int_', [dst_failed_prev, KToken('0', 'Int')])))
333+
init_cterm = init_cterm.add_constraint(mlEqualsTrue(KApply('_==Int_', [dst_failed_prev, intToken(0)])))
345334
return init_cterm
346335

347336

@@ -389,10 +378,10 @@ def _init_term(
389378
),
390379
),
391380
'LOCALMEM_CELL': KApply('.Memory_EVM-TYPES_Memory'),
392-
'PREVCALLER_CELL': KToken('.Account', 'K'),
393-
'PREVORIGIN_CELL': KToken('.Account', 'K'),
394-
'NEWCALLER_CELL': KToken('.Account', 'K'),
395-
'NEWORIGIN_CELL': KToken('.Account', 'K'),
381+
'PREVCALLER_CELL': KApply('.Account_EVM-TYPES_Account'),
382+
'PREVORIGIN_CELL': KApply('.Account_EVM-TYPES_Account'),
383+
'NEWCALLER_CELL': KApply('.Account_EVM-TYPES_Account'),
384+
'NEWORIGIN_CELL': KApply('.Account_EVM-TYPES_Account'),
396385
'ACTIVE_CELL': FALSE,
397386
'STATIC_CELL': FALSE,
398387
'MEMORYUSED_CELL': intToken(0),
@@ -412,10 +401,10 @@ def _init_term(
412401
'SINGLECALL_CELL': FALSE,
413402
'EXPECTEDREVERT_CELL': FALSE,
414403
'ISOPCODEEXPECTED_CELL': FALSE,
415-
'EXPECTEDADDRESS_CELL': KToken('.Account', 'K'),
404+
'EXPECTEDADDRESS_CELL': KApply('.Account_EVM-TYPES_Account'),
416405
'EXPECTEDVALUE_CELL': intToken(0),
417-
'EXPECTEDDATA_CELL': KToken('.ByteArray', 'K'),
418-
'OPCODETYPE_CELL': KToken('.OpcodeType', 'K'),
406+
'EXPECTEDDATA_CELL': KApply('.ByteArray_EVM-TYPES_ByteArray'),
407+
'OPCODETYPE_CELL': KApply('.OpcodeType_FOUNDRY-CHEAT-CODES_OpcodeType'),
419408
}
420409

421410
if calldata is not None:
@@ -429,8 +418,7 @@ def _init_term(
429418

430419
def _final_cterm(empty_config: KInner, contract_name: str, *, failing: bool, is_test: bool = True) -> CTerm:
431420
final_term = _final_term(empty_config, contract_name)
432-
key_dst = KEVM.loc(KToken('FoundryCheat . Failed', 'ContractAccess'))
433-
dst_failed_post = KEVM.lookup(KVariable('CHEATCODE_STORAGE_FINAL'), key_dst)
421+
dst_failed_post = KEVM.lookup(KVariable('CHEATCODE_STORAGE_FINAL'), Foundry.loc_FOUNDRY_FAILED())
434422
foundry_success = Foundry.success(
435423
KVariable('STATUSCODE_FINAL'),
436424
dst_failed_post,

0 commit comments

Comments
 (0)