Skip to content

Commit c6473ff

Browse files
committed
Proof for rules.
1 parent a467f32 commit c6473ff

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/formal/sub_sub.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from rule import Rule
2+
from opcodes import *
3+
4+
"""
5+
Rules:
6+
SUB(SUB(X, A), Y) -> SUB(SUB(X, Y), A)
7+
SUB(SUB(A, X), Y) -> SUB(A, ADD(X, Y))
8+
SUB(X, SUB(Y, A)) -> ADD(SUB(X, Y), A)
9+
SUB(X, SUB(A, Y)) -> ADD(ADD(X, Y), -A)
10+
"""
11+
12+
rule = Rule()
13+
14+
n_bits = 256
15+
16+
# Input vars
17+
X = BitVec('X', n_bits)
18+
Y = BitVec('Y', n_bits)
19+
A = BitVec('A', n_bits)
20+
21+
rule.check(
22+
SUB(SUB(X, A), Y),
23+
SUB(SUB(X, Y), A)
24+
)
25+
rule.check(
26+
SUB(SUB(A, X), Y),
27+
SUB(A, ADD(X, Y))
28+
)
29+
rule.check(
30+
SUB(X, SUB(Y, A)),
31+
ADD(SUB(X, Y), A)
32+
)
33+
rule.check(
34+
SUB(X, SUB(A, Y)),
35+
ADD(ADD(X, Y), SUB(0, A))
36+
)

0 commit comments

Comments
 (0)