Commit Graph

28 Commits

Author SHA1 Message Date
nishant-sachdeva
efbd3666a7 added optimization. shl comes out from being distributed over and 2022-11-11 01:16:14 +05:30
Matheus Aguiar
2282ea5e56 Added overflow checks after multiplication operation is executed. 2022-08-12 10:18:05 -03:00
Matheus Aguiar
4fd5c11af7 Checks for overflow/underflow after add/sub operations. 2022-06-23 14:41:12 -03:00
Daniel Kirchner
d1e382f2a8 Python Z3 proofs of the rules. 2022-06-22 09:26:09 +02:00
chriseth
4f02be110c Unused store eliminator. 2022-03-10 18:25:28 +01:00
Kamil Śliwak
784ae91b41 pylint: Enable and fix no-self-use warnings 2021-12-21 15:30:11 +01:00
Kamil Śliwak
4ed86edbc4 test/formal: Get rid of wildcard imports 2021-10-13 16:20:10 +02:00
Kamil Śliwak
b96de320e2 Fix the simplest pylint warnings (variables/imports, semicolons, etc) and re-enable them in pylintrc 2021-10-13 16:19:16 +02:00
chriseth
c6473ff32b Proof for rules. 2021-08-19 12:51:54 +02:00
hrkrshnn
59db0f1537 An equivalence check for SIGNEXTEND opcode
Checking the implementation of SIGNEXTEND using Z3's native SignExt and Extract
2021-08-16 18:54:33 +02:00
chriseth
5906d25a39 Formalization of SIGNEXTEND and rule proofs 2021-08-16 18:54:33 +02:00
hrkrshnn
a54addc2cb An equivalence check for the Byte opcode
Checks that the byte opcode (implemented using shift) is equivalent to a
canonical definition of byte using extract.
2021-08-10 11:00:29 +02:00
chriseth
f6789de9f8 Fix implementation of BYTE 2021-08-09 19:14:14 +02:00
chriseth
baf2ff2a6e Proof. 2021-03-18 08:42:49 +01:00
chriseth
40c27ccc22 Move AND with constant inside OR. 2021-03-09 15:26:19 +01:00
chriseth
d46da8e53c Optimize iszero(sub(x, y)) to eq(x, y). 2020-12-22 15:11:48 +01:00
Harikrishnan Mulackal
2b9f040c48 Optimize exp when base is -1 2020-09-29 17:44:09 +02:00
Harikrishnan Mulackal
64ddf2c699 Verify simplification rule exp(2, X) to shl(X, 1) 2020-09-16 17:36:39 +02:00
chriseth
a3a9630d8b Optimize byte-after-shr for shift amounts that are not multiples of 8. 2020-08-04 12:16:23 +02:00
chriseth
59f4989966 Optimize combination of byte and shl. 2020-07-08 20:26:46 +02:00
yoni206
4327434d07 Adding bit-vector NOT operation to the opcodes. 2020-04-28 09:43:31 -07:00
Leonardo Alt
606153ba71 Add optimizer rules for repeated and 2020-04-22 10:20:59 +02:00
Daniel Kirchner
c71fb76bb2 Proofs for the overflow and underflow conditions in checked arithmetic for Sol->Yul code generation. 2019-06-20 15:58:10 +02:00
Leonardo Alt
51ba7f5f17 Add CI job for optimization proofs 2019-06-19 22:29:23 +02:00
chriseth
633510eb04
Merge pull request #6935 from ethereum/subMaxValueXNotXRule
Add optimization rule SUB(~0, X) -> NOT(X).
2019-06-17 14:42:49 +02:00
Daniel Kirchner
5718072e10 Fix comparison opcodes and minor errors in proof scripts. 2019-06-14 17:04:50 +02:00
Daniel Kirchner
d3293cf0d0 Correctness proof for SUB(NOT(0),X)->NOT(X). 2019-06-14 14:08:21 +02:00
Leonardo Alt
5089d4ac28 Move optimization proofs repo to Solidity repo 2019-06-13 17:11:48 +02:00