Decision Procedures
An Algorithmic Point of View Equalities and Uninterpreted Functions
- D. Kroening
- O. Strichman
ETH/Technion
Decision Procedures An Algorithmic Point of View Equalities and - - PowerPoint PPT Presentation
Decision Procedures An Algorithmic Point of View Equalities and Uninterpreted Functions D. Kroening O. Strichman ETH/Technion Version 1.0, 2007 Part III Equalities and Uninterpreted Functions Outline 1 Introduction to Equality Logic
ETH/Technion
1 Introduction to Equality Logic
2 Reducing uninterpreted functions to Equality Logic 3 Using uninterpreted functions in proofs 4 Simplifications
Decision Procedures Version 1.0, 2007 3 / 47
Decision Procedures Version 1.0, 2007 4 / 47
Decision Procedures Version 1.0, 2007 5 / 47
Decision Procedures Version 1.0, 2007 6 / 47
Decision Procedures Version 1.0, 2007 7 / 47
Decision Procedures Version 1.0, 2007 8 / 47
Decision Procedures Version 1.0, 2007 9 / 47
1 ∧ . . . ∧ xn = x′ n
1, . . . , x′ n)
Decision Procedures Version 1.0, 2007 10 / 47
R1 I Latch Combi- national part
Decision Procedures Version 1.0, 2007 11 / 47
R1 I Latch Combi- national part
1
Decision Procedures Version 1.0, 2007 11 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 12 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
✛
Decision Procedures Version 1.0, 2007 12 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
✛
P P P P P P P P P ✐ ✏ ✏ ✏ ✏ ✏ ✏ ✮
Decision Procedures Version 1.0, 2007 12 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
✛
P P P P P P P P P ✐ ✏ ✏ ✏ ✏ ✏ ✏ ✮
❅ ❅ ❅ ❅ ❅ ❅ ■ ✑ ✑ ✑ ✑ ✑ ✑ ✰ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ☛
Decision Procedures Version 1.0, 2007 12 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
✛
P P P P P P P P P ✐ ✏ ✏ ✏ ✏ ✏ ✏ ✮
❅ ❅ ❅ ❅ ❅ ❅ ■ ✑ ✑ ✑ ✑ ✑ ✑ ✰ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ☛
✛
✛
Decision Procedures Version 1.0, 2007 12 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 13 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 13 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 13 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 13 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 14 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
Decision Procedures Version 1.0, 2007 14 / 47
1 L5 F L2 L1 H K G L3 L4 in C D
1 1 in F L′
2
L′
1
G C K L′
3
H L′
5
D
Decision Procedures Version 1.0, 2007 15 / 47
1
2
1)
3
1) ? g(L′ 1) : h(L′ 1)
5
2 ? k(L′ 3) : l(L′ 3)
Decision Procedures Version 1.0, 2007 16 / 47
1
2
1)
3
1) ? g(L′ 1) : h(L′ 1)
5
2 ? k(L′ 3) : l(L′ 3)
Decision Procedures Version 1.0, 2007 16 / 47
✲ F2( F1(x) ) = 0
Decision Procedures Version 1.0, 2007 17 / 47
✲ F2(
f1
✲ f2 = 0
Decision Procedures Version 1.0, 2007 17 / 47
✲ F2(
f1
✲ f2 = 0
✲
Decision Procedures Version 1.0, 2007 17 / 47
1 First number the function instances:
Decision Procedures Version 1.0, 2007 18 / 47
1 First number the function instances:
2 Replace each function with a new variable:
Decision Procedures Version 1.0, 2007 18 / 47
1 First number the function instances:
2 Replace each function with a new variable:
3 Add functional consistency constraints:
Decision Procedures Version 1.0, 2007 18 / 47
✲ F1(a) = F2(b)
Decision Procedures Version 1.0, 2007 19 / 47
✲ F1(a) = F2(b)
i
✲ F ∗
1 = F ∗ 2
Decision Procedures Version 1.0, 2007 19 / 47
✲ F1(a) = F2(b)
i
✲ F ∗
1 = F ∗ 2
i :=
case x1 = xi : f1 x2 = xi : f2 . . . xi−1 = xi: fi−1 true : fi
✲ f1 =
a = b: f1 true : f2
Decision Procedures Version 1.0, 2007 19 / 47
Decision Procedures Version 1.0, 2007 20 / 47
Decision Procedures Version 1.0, 2007 20 / 47
1 = F ∗ 2
1
2
1 = G∗ 2
1
2
Decision Procedures Version 1.0, 2007 20 / 47
Decision Procedures Version 1.0, 2007 21 / 47
Decision Procedures Version 1.0, 2007 21 / 47
1
Transform it into Equality Logic formula ϕE
2
If ϕE is unsatisfiable, return ’Unsatisfiable’
3
Else return ’Don’t know’
Decision Procedures Version 1.0, 2007 22 / 47
Decision Procedures Version 1.0, 2007 23 / 47
Decision Procedures Version 1.0, 2007 23 / 47
Decision Procedures Version 1.0, 2007 23 / 47
Decision Procedures Version 1.0, 2007 23 / 47
Two versions of a hardware design (one with and one without a pipeline) Source and target of a compiler (”Translation Validation”)
Decision Procedures Version 1.0, 2007 24 / 47
Two versions of a hardware design (one with and one without a pipeline) Source and target of a compiler (”Translation Validation”)
Decision Procedures Version 1.0, 2007 24 / 47
Decision Procedures Version 1.0, 2007 25 / 47
Decision Procedures Version 1.0, 2007 25 / 47
Decision Procedures Version 1.0, 2007 26 / 47
Decision Procedures Version 1.0, 2007 27 / 47
Decision Procedures Version 1.0, 2007 27 / 47
Decision Procedures Version 1.0, 2007 28 / 47
Decision Procedures Version 1.0, 2007 28 / 47
Decision Procedures Version 1.0, 2007 28 / 47
Decision Procedures Version 1.0, 2007 28 / 47
int power3(int in) {
for(i=0; i<2; i++)
return out; } int power3 new(int in) {
return out; }
Decision Procedures Version 1.0, 2007 29 / 47
Decision Procedures Version 1.0, 2007 30 / 47
Decision Procedures Version 1.0, 2007 31 / 47
Decision Procedures Version 1.0, 2007 31 / 47
int main() { int x, y, z; y=8; if(x) y--; else y++; z=y+1; }
Decision Procedures Version 1.0, 2007 32 / 47
int main() { int x, y, z; y=8; if(x) y--; else y++; z=y+1; } int main() { int x, y, z; y1=8; if(x0) y2=y1-1; else y3=y1+1; y4=φ(y2, y3); z1=y4+1; }
Decision Procedures Version 1.0, 2007 32 / 47
int main() { int x, y, z; y=8; if(x) y--; else y++; z=y+1; } int main() { int x, y, z; y1=8; if(x0) y2=y1-1; else y3=y1+1; y4=φ(y2, y3); z1=y4+1; }
Decision Procedures Version 1.0, 2007 32 / 47
void f(...) { ... while(cond) { BODY; } ... Remainder; }
Decision Procedures Version 1.0, 2007 33 / 47
void f(...) { ... if(cond) { BODY; while(cond) { BODY; } } ... Remainder; }
Decision Procedures Version 1.0, 2007 33 / 47
void f(...) { ... if(cond) { BODY; if(cond) { BODY; while(cond) { BODY; } } } ... Remainder; }
Decision Procedures Version 1.0, 2007 33 / 47
Decision Procedures Version 1.0, 2007 34 / 47
Decision Procedures Version 1.0, 2007 34 / 47
Decision Procedures Version 1.0, 2007 35 / 47
int power3(int in) {
for(i=0; i<2; i++)
return out; } int power3 new(int in) {
return out; }
Decision Procedures Version 1.0, 2007 36 / 47
int power3(int in) {
for(i=0; i<2; i++)
return out; } int power3 new(int in) {
return out; }
1 = (in ∗ in) ∗ in
1
Decision Procedures Version 1.0, 2007 36 / 47
1 = (in ∗ in) ∗ in
1 = F(F(in, in), in)
Decision Procedures Version 1.0, 2007 37 / 47
1 = (in ∗ in) ∗ in
1 = F(F(in, in), in)
1 = F4(F3(in, in), in)
Decision Procedures Version 1.0, 2007 37 / 47
1 = F4(F3(in, in), in)
Decision Procedures Version 1.0, 2007 38 / 47
1 = F4(F3(in, in), in)
a :
b : out′ 1 = f4
Decision Procedures Version 1.0, 2007 38 / 47
1 = F4(F3(in, in), in)
a :
b : out′ 1 = f4
a ∧ ϕE b
1
Decision Procedures Version 1.0, 2007 38 / 47
Decision Procedures Version 1.0, 2007 39 / 47
Decision Procedures Version 1.0, 2007 39 / 47
1, x2 = x′ 2, x3 = x′ 3, prove |
f2
1 + (b · x′ 2)
3 + 5 f4
Decision Procedures Version 1.0, 2007 40 / 47
1, x2 = x′ 2, x3 = x′ 3, prove |
f2
1 + (b · x′ 2)
3 + 5 f4
Decision Procedures Version 1.0, 2007 40 / 47
f2
1 + (b · x′ 2)
3 + 5 f4
Decision Procedures Version 1.0, 2007 41 / 47
f2
1 + (b · x′ 2)
3 + 5 f4
Decision Procedures Version 1.0, 2007 41 / 47
f2
1 + (b · x′ 2)
3 + 5 f4
❅ ❅ ❘
❅ ❅ ❘
❅ ❅ ❘
Decision Procedures Version 1.0, 2007 42 / 47
f2
1 + (b · x′ 2)
3 + 5 f4
+
❅ ❅ ❘
v ·
❅ ❅ ❘
v v
❄
+
❅ ❅ ❘
v 5
f2
1 + (b · x′ 2)
3 + 5 f4
+
❅ ❅ ❘
v ·
❅ ❅ ❘
v v
❄
+
❅ ❅ ❘
v 5
− → +
❅ ❅ ❘
v ·
❅ ❅ ❘
v +
❅ ❅ ❘
v 5 f1, f3
Decision Procedures Version 1.0, 2007 43 / 47
1 = F4(F3(in, in), in)
Decision Procedures Version 1.0, 2007 44 / 47
1 = F4(F3(in, in), in)
❅ ❅ ❘
❅ ❅ ❘
❅ ❅ ❘
Decision Procedures Version 1.0, 2007 44 / 47
1 = F4(F3(in, in), in)
a :
b : out′ 1 = f4
a ∧ ϕE b
1
Decision Procedures Version 1.0, 2007 45 / 47
1 = F4(F3(in, in), in)
a :
b : out′ 1 =
„ case in = out1: f1 true : f3 « = out2: f2 true : f4
a ∧ ϕE b ) −
1
Decision Procedures Version 1.0, 2007 46 / 47
1 It is expressible enough to state something
2 It is decidable and more efficiently solvable
3 Models which rely on infinite-type variables are
Decision Procedures Version 1.0, 2007 47 / 47