From 4d541d6f3021aa6de8f25807e36dc918cc3ce0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20Maksimovi=C4=87?= Date: Thu, 10 Oct 2024 06:01:35 +0100 Subject: [PATCH] Memory update lemma correction (#2641) * lemma correction * adding appropriate test * correction --- .../kproj/evm-semantics/lemmas/bytes-simplification.k | 2 +- tests/specs/functional/lemmas-spec.k | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k index 1a3e6b37a3..00ad215864 100644 --- a/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k +++ b/kevm-pyk/src/kevm_pyk/kproj/evm-semantics/lemmas/bytes-simplification.k @@ -228,7 +228,7 @@ module BYTES-SIMPLIFICATION [symbolic] [simplification] rule [memUpdate-concat-in-left]: (B1 +Bytes B2) [ S := B ] => (B1 [ S := B ]) +Bytes B2 - requires 0 <=Int S andBool S +Int lengthBytes(B) <=Int lengthBytes(B1) + requires 0 <=Int S andBool S +Int lengthBytes(B) B1 +Bytes (B2 [ S -Int lengthBytes(B1) := B ]) diff --git a/tests/specs/functional/lemmas-spec.k b/tests/specs/functional/lemmas-spec.k index bd5acfe8ae..58f2fb0983 100644 --- a/tests/specs/functional/lemmas-spec.k +++ b/tests/specs/functional/lemmas-spec.k @@ -361,6 +361,11 @@ module LEMMAS-SPEC runLemma( #range (#buf(8, X:Int), -3, _:Int) ) => doneLemma( .Bytes ) ... requires 0 <=Int X andBool X runLemma( b"\xaa" ==K #range ( ( BYTES:Bytes +Bytes b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ) [ ( lengthBytes ( BYTES:Bytes ) /Int 2 ) := b"\xaa" ] , ( lengthBytes ( BYTES:Bytes ) /Int 2 ) , 1 ) ) + => doneLemma(true) ... + requires lengthBytes ( BYTES:Bytes ) runLemma ( #asWord ( ( #range( #buf ( 32 , X ), 0, 28 ) ):Bytes ) ) => doneLemma ( 0 ) ... requires #rangeUInt(32, X)