diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k index 2c076fb5b3..03475d5f6d 100644 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/evm-int-simplification.k @@ -145,10 +145,10 @@ module EVM-INT-SIMPLIFICATION rule [chop-resolve]: chop(I) => I requires #rangeUInt( 256 , I ) [simplification] - rule [chop-ub-lt]: X:Int true requires X true requires X <=Int 0 [simplification] - rule [chop-lb-lt]: chop(_V) true requires maxUInt256 true requires maxUInt256 <=Int X [simplification] + rule [chop-ub-lt]: X:Int true requires X true requires X <=Int 0 [simplification] + rule [chop-lb-lt]: chop(_V) true requires maxUInt256 true requires maxUInt256 <=Int X [simplification] rule [chop-add-left]: chop ( chop ( X:Int ) +Int Y:Int ) => chop ( X +Int Y ) [simplification] rule [chop-add-right]: chop ( X:Int +Int chop ( Y:Int ) ) => chop ( X +Int Y ) [simplification] diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/lemmas.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/lemmas.k index 661fa1c143..87cfc4ffd4 100644 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/lemmas.k +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/lemmas.k @@ -60,8 +60,10 @@ module LEMMAS-WITHOUT-SLOT-UPDATES [symbolic] // ######################## // Range - rule [b2w-lb]: 0 <=Int bool2Word(_) => true [simplification, smt-lemma] - rule [b2w-ub]: bool2Word(_) <=Int 1 => true [simplification, smt-lemma] + rule [b2w-lb-lt]: X:Int true requires X true requires X <=Int 0 [simplification] + rule [b2w-ub-lt]: bool2Word(_) true requires 1 true requires 1 <=Int X [simplification] // Relationship with equality rule [b2w-eq-zero]: bool2Word(B) ==Int 0 => notBool B [simplification(30), comm] @@ -118,8 +120,10 @@ module LEMMAS-WITHOUT-SLOT-UPDATES [symbolic] // Map Reasoning // ######################## - rule 0 <=Int #lookup( _M:Map , _ ) => true [simplification, smt-lemma] - rule #lookup( _M:Map , _ ) true [simplification, smt-lemma] + rule [lookup-lb-lt]: X:Int true requires X true requires X <=Int 0 [simplification] + rule [lookup-ub-lt]: #lookup( _M:Map , _ ) true requires maxUInt256 true requires maxUInt256 <=Int X [simplification] rule #lookup ( _M:Map [ K1 <- V1 ] , K2 ) => #lookup ( K1 |-> V1 , K1 ) requires K1 ==Int K2 [simplification] rule #lookup ( M:Map [ K1 <- _ ] , K2 ) => #lookup ( M , K2 ) requires notBool ( K1 ==Int K2 ) [simplification]