47
1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

Embed Size (px)

Citation preview

Page 1: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

1

Decision ProceduresAn algorithmic point of view

Equality Logic andUninterpreted Functions

Page 2: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

2

Outline

Introduction Definition, complexity Reducing Uninterpreted Functions to Equality Logic Using Uninterpreted Functions in proofs Simplifications

Introduction to the decision procedures The framework: assumptions and normal forms General terms and notions Solving a conjunction of equalities Simplifications

Page 3: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

3

Equality Logic

A Boolean combination of Equalities and Propositionsx1=x2 Æ (x2 = x3 Ç : ((x1 = x3) Æ b Æ x1 = 2))

We will always push negations inside (NNF):x1=x2 Æ (x2 = x3 Ç ((x1 x3) Ç :b Ç x1 2))

Note: the set of Boolean variables is always separate from the set of term variables

Page 4: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

4

Equality Logic: the grammar

formula : formula Ç formula | : formula | atom

atom : term-variable = term-variable | term-variable = constant | Boolean-variable

term-variables are defined over some (possible infinite) domain.The constants are from the same domain.

Page 5: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

5

Expressiveness and complexity

Allows more natural description of systems, although technically it is as expressible as Propositional Logic.

Clearly NP-hard. In fact, it is in NP, and hence NP-complete, for

reasons we shall see later.

Page 6: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

6

Equality logic with uninterpreted functions formula : formula Ç formula

| : formula | atom

atom : term = term | Boolean-variable

term : term-variable| function ( list of terms )

term-variables are defined over some (possible infinite) domain.Note that constants are functions with empty list of terms.

Page 7: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

7

What is an uninterpreted function?

The signature includes in addition to equality, function and predicate symbols.

The theory restricts the interpretation of these symbols by a single axiom. For n-ary function F:

Sometimes, functional consistency is all that is needed for the proof.

Page 8: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

8

Uninterpreted Functions

Uninterpreted functions are used for abstraction. Example: replace ‘+’ with an uninterpreted

Binary function f (h1st argi , h 2nd arg i) For example:

x1 + x2 = x3+x4 is replaced with

f can represent any binary function, not just +.

Page 9: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

9

Example: Circuit Transformations

Circuits consist of combinationalgates and latches (registers)

The combinational gates can be modeled using functions

The latches can be modeled with variables

R1R1

I

Latch

Combi- national part

Page 10: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

10

Example: Circuit Transformations

Some function, say I >> 5

Some other function, say L1 & 100110001…

Some bitvector Input

Some condition on L2

Page 11: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

11

Example: Circuit Transformations

A pipeline processes data in stages Data is processed in parallel – as in

an assembly line Formal Model:

Stage 1Stage 1

Stage 3Stage 3

Stage 2Stage 2

Page 12: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

12

Example: Circuit Transformations

The maximum clock frequency depends on the longest path between two latches

Note that the output of g is usedas input to k

We want to speed up the design by postponing k to the third stage

Also note that the circuit only uses one of L3 or L4, never both

We can remove one of the latches

Page 13: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

13

Example: Circuit Transformations

==??

Page 14: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

14

Example: Circuit Transformations

Equivalence in this case holds regardless of the actual functions

Conclusion: can be decided using Equality Logic and Uninterpreted Functions

Page 15: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

15

For each function in UF: Number function instances

(from the inside out)

Replace each function instance with a new variable

Condition UF with a functional consistency constraint for every pair of instances of thesame function.

UFs Equality Logic: Ackermann’s reduction

F2(F1(x)) = 0

f2 = 0

F( ), G( ),…

((x = f1) f1 = f2 ) f2=0)

Given a formula UF with uninterpreted functions

f1

f2

Page 16: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

16

Ackermann’s reduction : Example

Given the formula

(x1 x2) Ç (F(x1) = F(x2)) Ç (F(x1) F(x3))

which we want to check for validity, we first number the function instances:

(x1 x2) Ç (F1(x1) = F2(x2)) Ç (F1(x1) F3(x3))

Page 17: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

17

Ackermann’s reduction : Example

(x1 x2) Ç (F1(x1) = F2(x2)) Ç (F1(x1) F3(x3))

Replace each function with a new variable,

(x1 x2) Ç (f1 = f2 ) Ç (f1 f3 )

Condition with Functional Consistency constraints:

Page 18: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

18

Given a formula UF with UFs For each function in UF:

Number function instances (from the inside out)

Replace a function instance Fi with an expression

case x1 = xi :f1

x2 = xi : f2

xi-1 =xi :fi-1

true :fi

UFs Equality Logic: Bryant’s reduction

F1(x1) = F2(x2)

F( ), G( ),…

case x1 = x2 : f1

true :f2

f1 =

Page 19: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

19

Given a formula UF with UFs For each function in UF:

Number function instances (from the inside out)

Replace a function instance Fi with an expression

case x1 = xi :f1

x2 = xi : f2

xi-1 =xi :fi-1

true :fi

UFs Equality Logic: Bryant’s reduction

F1(x1) = F2(x2)

F( ), G( ),…

(x1 = x2 → f1 = f1) Æ (x1 x2 → f1 = f2)

Page 20: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

20

Bryant’s reduction: Example

x1 = x2 F1(G1(x1)) = F2(G2(x2))

Replace each function with an expression where

Page 21: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

21

Using UFs in proofs

Uninterpreted functions gives us the ability to represent an abstract view of functions.

It over-approximates the concrete system.

1 + 1 = 1 is a contradiction

But

F (1,1) = 1 is satisfiable !

Conclusion: unless we are careful, we can give wrong answers and this way lose soundness.

Page 22: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

22

Using UFs in proofs

In general a sound and incomplete method is more useful than unsound and complete.

A sound but incomplete algorithm: Given a formula with uninterpreted functions UF

:

Transform it to Equality Logic formula E

If E is unsatisfiable return Unsatisfiable Else return ‘Don’t know’

Page 23: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

23

Using UFs in proofs

Question #1: is this useful ? Question #2: can it be made complete in some

cases ?

When the abstract view is sufficient for the proof, it enables (or simplifies) a mechanical proof.

So when is the abstract view sufficient ?

Page 24: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

24

Using UFs in proofs (cont’d)

(common) Proving equivalence between: Two versions of a hardware design

e.g., one with and one without a pipeline Source and target of a compiler (“Translation

Validation”) (rare) Proving properties that do not rely on the

exact functionality of some of the functions.

Page 25: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

25

Example: Translation Validation

Assume the source program has the statementz = (x1 + y1) (x2 + y2)

which the compiler turned into:u1 = x1 + y1;u2 = x2 + y2; z = u1 u2 ;

We need to prove that:(u1 = x1 + y1 u2 = x2 + y2 z = u1 u2) z = (x1 + y1) (x2 + y2)

Page 26: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

26

Example (cont’d)

(u1 = x1 + y1 u2 = x2 + y2 z = u1 u2) z = (x1 + y1) (x2 + y2)

(u1 = F1(x1,y1) u2 = F2(x2,y2) z = G1 (u1,u2)) z = G2(F1(x1,y1), F2(x2,y2))

Claim: is valid We will prove this by reducing it to an Equality Logic

formula

UF:

Page 27: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

27

Uninterpreted Functions: usability

Good: each function on the left can be mapped to a function on the right with equivalent arguments

Bad: almost all other cases Example:

Left Right

x + x 2x

Page 28: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

28

Uninterpreted Functions: usability

This is easy to prove:x1 = x2 y1 = y2 x1 + y1 = x2 + y2

This requires knowledge on commutativity:x1 = y2 y1= x2 x1 + y1 = x2 + y2

easy fix:((x1 = x2 y1 = y2) (x1 = y2 x2 = y1)) f1 = f2

What about other cases ? use Rewriting rules

Page 29: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

29

Example: equivalence of C programs (1/4)

These two functions return the same value regardless if

it is ‘*’ or any other function. Conclusion: we can prove equivalence by replacing ‘*’

with an Uninterpreted Function

Power3(int in) {out = in;for (i=0; i < 2; i++)

out = out * in;return out;

}

Power3_new(int in) {out = (in*in)*in;return out;

}

Page 30: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

30

Example: equivalence of C programs (1/4)

But first… we need to know how to write programs as

equations. We will learn one out of several options, namely

Static Single Assignment for Bounded programs.

Power3(int in) {out = in;for (i=0; i < 2; i++)

out = out * in;return out;

}

Power3_new(int in) {out = (in*in)*in;return out;

}

Page 31: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

31

From programs to equations

Static Single Assignment (SSA) form

Ma ze???

Page 32: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

32

Static Single Assignment form

In this case we can replace with a guard: y3 Ã x2 < 3 ? y1 : y2

Problem: What do we do with loops ?

Page 33: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

33

SSA for bounded programs

For each loop i in a given program, let ki be a bound on its iteration count.

Unroll the program according to the bounds. We are left with statements and conditions.

Page 34: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

34

SSA for bounded programs

:

x = 0;

while (x < y) {

x++;

z = z + y;

}

x = 0;

z = z * 2;

Let k1 = 2 … x0 = 0

guard0 = x0 < y0

x1 = guard0 ? x0 + 1:x0

z1 = guard0 ? z0 + y0:z0

guard1 = x1 < y0

x2 = guard1 ? x1 + 1: x1

z2 = guard1 ? z1 + y0: z1

x4 = 0

z3 = z2 * 2

Page 35: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

35

Example: equivalence of C programs (2/4)

Power3(int in) {out = in;for (i=0; i < 2; i++)

out = out * in;return out;

}

Power3_new(int in) {out = (in*in)*in;return out;

}

out0 = in Æout1 = out0 * in Æout2 = out1 * in

out’0 = (in’ * in’) * in’

Prove that both functions return the same value (out2 = out’0) given that in = in’

Static Single Assignment (SSA) form:

Page 36: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

36

Example: equivalence of C programs (3/4)

out0 = in Æout1 = out0 * in Æout2 = out1 * in

out’0 = (in’ * in’) * in’

With Uninterpreted Functions:

out0 = in Æout1 = F1 (out0 , in) Æ

out2 = F2 (out1 , in)

out’0 = F4(F3(in’ , in’) , in’)

Static Single Assignment (SSA) form:

Page 37: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

37

Example: equivalence of C programs (4/4)With Uninterpreted Functions:

out0 = in Æout1 = F1 (out0 , in) Æ

out2 = F2 (out1 , in)

out’0 = F4(F3(in’ , in’) , in’)

Ea : out0 = in Æ

out1 = f1 Æout2 = f2

Eb: out’0 = f4

Ackermann’s reduction:

The Verification Condition (“the proof obligation”)

((out0 = out1 Æ in = in) ! f1 = f2) Æ ((out0 = in’ Æ in = in’) ! f1 = f3) Æ ((out0 = f3 Æ in= in’) ! f1 = f4) Æ ((out1 = in’ Æ in= in’) ! f2 = f3) Æ ((out1 = f3 Æ in= in’) ! f2 = f4) Æ ((in’ = f3 Æ in’ = in’) ! f3 = f4)

Æ (in=in’) Æ

Ea Æ E

b ! out2 = out’0

Page 38: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

38

Uninterpreted Functions: simplifications

Let n be the number of function instances of F() Both reduction schemes require O(n2) comparisons This can be the bottleneck of the verification effort

Solution: try to guess the pairing of functions Still sound: wrong guess can only make a valid

formula invalid

Page 39: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

39

UFs: simplifications (1)

Given that x1 = x1’, x2 = x2’, x3 = x3’, prove ² o1 = o2

o1 = (x1 + (a ¢ x2)) a = x3 + 5 Left

f1 f2

o2 = (x1’ + (b ¢ x2’)) b = x3’ + 5 Right

f3 f4

4 function instances 6 comparisons

Page 40: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

40

UFs: simplifications (2)

o1 = (x1 + (a ¢ x2)) a = x3 + 5 Left

f1 f2

o2 = (x1’ + (b ¢ x2’)) b = x3’ + 5 Right

f3 f4

Guess: validity of equivalence does not rely onf1

= f2 or on f3

= f4

Conclusion: only enforce functional consistency of pairs (Left,Right)

Page 41: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

41

UFs: simplifications (3)

Down to 4 comparisons… (from n(n-1)/2 to n2/4) Another Guess: validity of equivalence only

depends on f1 = f3

and f2 = f4

Pattern matching can be useful here ...

o1 = (x1 + (a ¢ x2)) a = x3 + 5 Left

f1 f2

o2 = (x1’ + (b ¢ x2’)) b = x3’ + 5 Right

f3 f4

Page 42: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

42

UFs: simplifications (4)

+

¢in

in in

f1, f3

+

in 5

f2, f4

Match accordingto patterns (‘signatures’):

Down to 2 comparisons…

o1 = (x1 + (a ¢ x2)) a = x3 + 5 Left

f1 f2

o2 = (x1’ + (b ¢ x2’)) b = x3’ + 5 Right

f3 f4

Page 43: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

43

UFs: simplifications (5)

f1, f3

Propagate through intermediate variables:

+

in

in

in

¢

o1 = (x1 + (a ¢ x2)) a = x3 + 5 Left

f1 f2

o2 = (x1’ + (b ¢ x2’)) b = x3’ + 5 Right

f3 f4

var

+

5

+

in

in

in

¢

+

5

Page 44: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

44

Same example

map F1 to F3

out0 = in Æout1 = out0 * in Æout2 = out1 * in

out’0 = (in’ * in’) * in’

With Uninterpreted Functions:

out0 = in Æout1 = F1 (out0 , in) Æ

out2 = F2 (out1 , in)

out’0 = F4(F3(in’ , in’) , in’)

Static Single Assignment (SSA) form:

F

inin

F

Fin

in in

map F2 to F4

Page 45: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

45

Same example, smaller Verification Condition

With Uninterpreted Functions:

out0 = in Æout1 = F1 (out0 , in) Æ

out2 = F2 (out1 , in)

out’0 = F4(F3(in’ , in’) , in’)

Ea : out0 = in Æ

out1 = f1 Æout2 = f2

Eb: out’0 = f4

Ackermann’s reduction:

The Verification Condition has shrunk:

((out0 = in’ Æ in = in’) ! f1 = f3) Æ ((out1 = f3 Æ in= in’) ! f2 = f4)

Æ (in=in’) Æ Ea Æ E

b ! out2 = out’0

Page 46: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

46

now with Bryant’s reduction:With Uninterpreted Functions:

out0 = in Æout1 = F1 (out0 , in) Æ

out2 = F2 (out1 , in)

out’0 = F4(F3(in’ , in’) , in’)

Ea : out0 = in Æ

out1 = f1 Æout2 = f2

Eb: out’0 =

case case in’=outo Æ in’=in : f1

true : f3 =out1

Æ in’=in: : f2

true : f4

Bryant’s reduction:

The Verification Condition (“the proof obligation”)

Prove validity of: Ea Æ E

b Æ in = in’) ! out2 = out’0

Page 47: 1 Decision Procedures An algorithmic point of view Equality Logic and Uninterpreted Functions

47

So is Equality Logic with UFs interesting ?

1. It is expressible enough to state something interesting.

2. It is decidable and more efficiently solvable than richer logics, for example in which some functions are interpreted.

3. On the other, hand replacing functions with UF is an abstraction.

4. Models which rely on infinite-type variables are more naturally expressed in this logic in comparison with Propositional Logic.