• Non ci sono risultati.

Course “An Introduction to SAT and SMT” Chapter 2: Satisfiability Modulo Theories

N/A
N/A
Protected

Academic year: 2021

Condividi "Course “An Introduction to SAT and SMT” Chapter 2: Satisfiability Modulo Theories"

Copied!
223
0
0

Testo completo

(1)

Course “An Introduction to SAT and SMT”

Chapter 2: Satisfiability Modulo Theories

Roberto Sebastiani

DISI, Università di Trento, Italy – roberto.sebastiani@unitn.it URL: http://disi.unitn.it/rseba/DIDATTICA/SAT_SMT2020/

Int. Graduate School on ICT, University of Trento, Academic year 2019-2020

last update: Friday 22ndMay, 2020

Copyright notice: some material contained in these slides is courtesy of Alessandro Cimatti, Alberto Griggio and Marco Roveri, who detain its copyright. All the other material is copyrighted by Roberto Sebastiani. Any commercial use of this material is strictly forbidden by the copyright laws without the authorization of the authors. No copy of these slides can be

displayed in public without containing this copyright notice.

(2)

Outline

1

Motivations and goals

2

Efficient SMT solving

Combining SAT with Theory Solvers Theory Solvers for theories of interest SMT for combinations of theories

3

Beyond Solving: advanced SMT functionalities Proofs and unsatisfiable cores

Interpolants

All-SMT & Predicate Abstraction

SMT with cost optimization (Optimization Modulo Theories)

4

Conclusions & current research directions

(3)

Outline

1

Motivations and goals

2

Efficient SMT solving

Combining SAT with Theory Solvers Theory Solvers for theories of interest SMT for combinations of theories

3

Beyond Solving: advanced SMT functionalities Proofs and unsatisfiable cores

Interpolants

All-SMT & Predicate Abstraction

SMT with cost optimization (Optimization Modulo Theories)

4

Conclusions & current research directions

(4)

Satisfiability Modulo Theories (SMT(T ))

Satisfiability Modulo Theories (SMT(T ))

The problem of deciding the satisfiability of (typically quantifier-free) formulas in some decidable first-order theory T

T can also be a combination of theories S

i

T

i

.

(5)

SMT(T ): theories of interest

Some theories of interest (e.g., for formal verification) Equality and Uninterpreted Functions (EU F ):

((x = y ) ∧ (y = f (z))) → (g(x ) = g(f (z)))

Difference logic (DL): ((x = y ) ∧ (y − z ≤ 4)) → (x − z ≤ 6) UTVPI (U T VPI): ((x = y ) ∧ (y − z ≤ 4)) → (x + z ≤ 6) Linear arithmetic over the rationals (LRA):

(T

δ

→ (s

1

= s

0

+ 3.4 · t − 3.4 · t

0

)) ∧ (¬T

δ

→ (s

1

= s

0

)) Linear arithmetic over the integers (LIA):

(x := x

l

+ 2

16

x

h

) ∧ (x ≥ 0) ∧ (x ≤ 2

16

− 1)

Arrays (AR): (i = j) ∨ read (write(a, i, e), j) = read (a, j) Bit vectors (BV):

x

[16]

[15 : 0] = (y

[16]

[15 : 8] :: z

[16]

[7 : 0]) << w

[8]

[3 : 0]

Non-Linear arithmetic over the reals (N LA(R)) :

((c = a · b) ∧ (a

1

= a − 1) ∧ (b

1

= b + 1)) → (c = a

1

· b

1

+ 1)

...

(6)

Satisfiability Modulo Theories (SMT(T )): Example

Example: SMT(LIA ∪ EU F ∪ AR)

ϕ

def

= (d ≥ 0) ∧ (d < 1)∧

((f (d ) = f (0)) → (read (write(V , i, x ), i + d ) = x + 1))

involves arithmetical, arrays, and uninterpreted function/predicate symbols, plus Boolean operators

Is it consistent?

No:

ϕ

=⇒

LIA

(d = 0)

=⇒

EU F

(f (d ) = f (0))

=⇒

Bool

(read (write(V , i, x ), i + d ) = x + 1)

=⇒

LIA

(read (write(V , i, x ), i) = x + 1)

=⇒

LIA

¬(read (write(V , i, x), i) = x)

=⇒

AR

(7)

Satisfiability Modulo Theories (SMT(T )): Example

Example: SMT(LIA ∪ EU F ∪ AR)

ϕ

def

= (d ≥ 0) ∧ (d < 1)∧

((f (d ) = f (0)) → (read (write(V , i, x ), i + d ) = x + 1))

involves arithmetical, arrays, and uninterpreted function/predicate symbols, plus Boolean operators

Is it consistent?

No:

ϕ

=⇒

LIA

(d = 0)

=⇒

EU F

(f (d ) = f (0))

=⇒

Bool

(read (write(V , i, x ), i + d ) = x + 1)

=⇒

LIA

(read (write(V , i, x ), i) = x + 1)

=⇒

LIA

¬(read (write(V , i, x), i) = x)

=⇒

AR

(8)

Satisfiability Modulo Theories (SMT(T )): Example

Example: SMT(LIA ∪ EU F ∪ AR)

ϕ

def

= (d ≥ 0) ∧ (d < 1)∧

((f (d ) = f (0)) → (read (write(V , i, x ), i + d ) = x + 1))

involves arithmetical, arrays, and uninterpreted function/predicate symbols, plus Boolean operators

Is it consistent?

No:

ϕ

=⇒

LIA

(d = 0)

=⇒

EU F

(f (d ) = f (0))

=⇒

Bool

(read (write(V , i, x ), i + d ) = x + 1)

=⇒

LIA

(read (write(V , i, x ), i) = x + 1)

=⇒

LIA

¬(read (write(V , i, x), i) = x)

=⇒

AR

(9)

Some Motivating Applications

Interest in SMT triggered by some real-word applications Verification of Hybrid & Timed Systems

Verification of RTL Circuit Designs & of Microcode SW Verification

Planning with Resources Temporal reasoning Scheduling

Compiler optimization

...

(10)

Verification of Timed Systems

T12

T21 x<=3 x>=1

x:=0 x <= 2

a

b

l1 l2

Bounded/inductive model checking of Timed Systems [6, 36, 58], ...

Timed Automata encoded into T -formulas:

discrete information (locations, transitions, events) with Boolean vars.

timed information (clocks, elapsed time) with differences (t

3

− x

3

≤ 2), equalities (x

4

= x

3

) and linear constraints (t

8

− x

8

= t

2

− x

2

) on Q

=⇒ SMT on DL(Q) or LRA required

(11)

Verification of Hybrid Systems ...

w = 2. T12

Grow Steady

cruise

Stable

w >=L

L <= w<= U

Bounded model checking of Hybrid Systems [5],...

Hybrid Automata encoded into L-formulas:

discrete information (locs, trans., events) with Boolean vars.

timed information (clocks, elapsed time) with differences (t

3

− x

3

≤ 2), equalities (x

4

= x

3

) and linear constraints (t

8

− x

8

= t

2

− x

2

) on Q

Evolution of Physical Variables (e.g., speed, pressure) with linear (ω

4

= 2ω

3

) and non-linear constraints (P

1

V

1

= 4T

1

) on Q

Undecidable under simple hypotheses!

=⇒ SMT on DL(Q), LRA or N LA(R) required

(12)

Verification of HW circuit designs & microcode

CK CK

B2 CK

Adder B3

B1

g = 2*f f’ = itea+2*e

itea’ = ITE(B1;a;0) c

a

f g itea

e’ = ITE(B2;b;0)+2*ite(B3;c;0) e control

L−Shifter

L−Shifter b

L−Shifter Adder

1 data 0

1 1

0

0

SAT/SMT-based Model Checking & Equiv. Checking of RTL designs, symbolic simulation of µ-code [25, 22, 42]

Control paths handled by Boolean reasoning

Data paths information abstracted into theory-specific terms words (bit-vectors, integers, EU F vars, ... ): a[31 : 0], a word operations : (BV, EU F , AR, LIA, N LA(Z) operators) x

[16]

[15 : 0] = (y

[16]

[15 : 8] :: z

[16]

[7 : 0]) << w

[8]

[3 : 0], (a = a

L

+ 2

16

a

H

), (m

1

= store(m

0

, l

0

, v

0

)), ...

Trades heavy Boolean reasoning (≈ 2

64

factors) with T -solving

=⇒ SMT on BV, EU F , AR, modulo-LIA [N LA(Z) ] required

(13)

Verification of SW systems

...

i = 0;

acc = 0.0;

while (i<dim) { acc += V[i];

i++;

} ...

.... ∧ (i

0

= 0)∧

(acc

0

= 0.0)∧

((i

0

< dim) → ( (acc

1

= acc

0

+ read (V , i

0

))∧

(i

1

= i

0

+ 1)))∧

(¬(i

0

< dim) → ( (acc

1

= acc

0

) ∧ (i

1

= i

0

)))∧

((i

1

< dim) → ( (acc

2

= acc

1

+ read (V , i

1

))∧

(i

2

= i

1

+ 1)))∧

(¬(i

1

< dim) → ( (acc

2

= acc

1

) ∧ (i

2

= i

1

)))∧

...

Verification of SW code

BMC, K-induction, Check of proof obligations, interpolation-based model checking, symbolic simulation, concolic testing, ...

=⇒ SMT on BV, EU F , AR, (modulo-)LIA [N LA(Z) ] required

(14)

Planning with Resources [82]

SAT-bases planning augmented with numerical constraints Straightforward to encode into into SMT(LRA)

Example (sketch) [82]

(Deliver ) ∧ // goal

(MaxLoad ) ∧ // load constraint

(MaxFuel) ∧ // fuel constraint

(Move → MinFuel) ∧ // move requires fuel

(Move → Deliver ) ∧ // move implies delivery

(GoodTrip → Deliver ) ∧ // a good trip requires

(GoodTrip → AllLoaded ) ∧ // a full delivery

(MaxLoad → (load ≤ 30)) ∧ // load limit

(MaxFuel → (fuel ≤ 15)) ∧ // fuel limit

(MinFuel → (fuel ≥ 7 + 0.5load )) ∧ // fuel constraint

(AllLoaded → (load = 45)) //

(15)

(Disjunctive) Temporal Reasoning [79, 2]

Temporal reasoning problems encoded as disjunctions of difference constraints

((x

1

− x

2

≤ 6) ∨ (x

3

− x

4

≤ −2)) ∧ ((x

2

− x

3

≤ −2) ∨ (x

4

− x

5

≤ 5)) ∧ ((x

2

− x

1

≤ 4) ∨ (x

3

− x

7

≤ −6)) ∧ ...

Straightforward to encode into into SMT(DL)

(16)

SMT and SMT solvers

Common fact about SMT problems from various applications

SMT requires capabilities for heavy Boolean reasoning combined with capabilities for reasoning in expressive decidable F.O. theories

SAT alone not expressive enough

standard automated theorem proving inadequate (e.g., arithmetic) may involve also numerical computation (e.g., simplex)

Modern SMT solvers

combine SAT solvers with decision procedures (theory solvers)

contributions from SAT, Automated Theorem Proving (ATP), formal

verification (FV) and operational research (OR)

(17)

SMT and SMT solvers

Common fact about SMT problems from various applications

SMT requires capabilities for heavy Boolean reasoning combined with capabilities for reasoning in expressive decidable F.O. theories

SAT alone not expressive enough

standard automated theorem proving inadequate (e.g., arithmetic) may involve also numerical computation (e.g., simplex)

Modern SMT solvers

combine SAT solvers with decision procedures (theory solvers)

contributions from SAT, Automated Theorem Proving (ATP), formal

verification (FV) and operational research (OR)

(18)

SMT and SMT solvers

Common fact about SMT problems from various applications

SMT requires capabilities for heavy Boolean reasoning combined with capabilities for reasoning in expressive decidable F.O. theories

SAT alone not expressive enough

standard automated theorem proving inadequate (e.g., arithmetic) may involve also numerical computation (e.g., simplex)

Modern SMT solvers

combine SAT solvers with decision procedures (theory solvers)

contributions from SAT, Automated Theorem Proving (ATP), formal

verification (FV) and operational research (OR)

(19)

SMT and SMT solvers

Common fact about SMT problems from various applications

SMT requires capabilities for heavy Boolean reasoning combined with capabilities for reasoning in expressive decidable F.O. theories

SAT alone not expressive enough

standard automated theorem proving inadequate (e.g., arithmetic) may involve also numerical computation (e.g., simplex)

Modern SMT solvers

combine SAT solvers with decision procedures (theory solvers)

contributions from SAT, Automated Theorem Proving (ATP), formal

verification (FV) and operational research (OR)

(20)

SMT and SMT solvers

Common fact about SMT problems from various applications

SMT requires capabilities for heavy Boolean reasoning combined with capabilities for reasoning in expressive decidable F.O. theories

SAT alone not expressive enough

standard automated theorem proving inadequate (e.g., arithmetic) may involve also numerical computation (e.g., simplex)

Modern SMT solvers

combine SAT solvers with decision procedures (theory solvers)

contributions from SAT, Automated Theorem Proving (ATP), formal

verification (FV) and operational research (OR)

(21)

Goal

Provide an overview of standard “lazy” SMT:

foundations

SMT-solving techniques

beyond solving: advanced SMT functionalities ongoing research

We do not cover related approaches like:

Eager SAT encodings Rewrite-based approaches

We refer to [71, 10] for an overview and references.

(22)

Goal

Provide an overview of standard “lazy” SMT:

foundations

SMT-solving techniques

beyond solving: advanced SMT functionalities ongoing research

We do not cover related approaches like:

Eager SAT encodings Rewrite-based approaches

We refer to [71, 10] for an overview and references.

(23)

Notational remark (1): most/all examples in LRA

For better readability, in most/all the examples of this presentation we will use the theory of linear arithmetic on rational numbers (LRA) because of its intuitive semantics. E.g.:

(¬A

1

∨ (3x

1

− 2x

2

− 3 ≤ 5)) ∧ (A

2

∨ (−2x

1

+ 4x

3

+ 2 = 3))

Nevertheless, analogous examples can be built with all other theories

of interest.

(24)

Notational remark (2): “constants” vs. “variables”

Consider, e.g., the formula:

(¬A

1

∨ (3x

1

− 2x

2

− 3 ≤ 5)) ∧ (A

2

∨ (−2x

1

+ 4x

3

+ 2 = 3)) How do we call A

1

, A

2

?:

(a) Boolean/propositional variables?

(b) uninterpreted 0-ary predicates?

How do we call x

1

, x

2

, x

3

?:

(a) domain variables?

(b) uninterpreted Skolem constants/0-ary uninterpreted functions?

Hint:

(a) typically used in SAT, CSP and OR communities (b) typically used in logic & ATP communities

Hereafter we call A

1

, A

2

“Boolean/propositional variables” and x

1

, x

2

, x

3

"domain variables” (logic purists, please forgive me!)

(25)

Notational remark (2): “constants” vs. “variables”

Consider, e.g., the formula:

(¬A

1

∨ (3x

1

− 2x

2

− 3 ≤ 5)) ∧ (A

2

∨ (−2x

1

+ 4x

3

+ 2 = 3)) How do we call A

1

, A

2

?:

(a) Boolean/propositional variables?

(b) uninterpreted 0-ary predicates?

How do we call x

1

, x

2

, x

3

?:

(a) domain variables?

(b) uninterpreted Skolem constants/0-ary uninterpreted functions?

Hint:

(a) typically used in SAT, CSP and OR communities (b) typically used in logic & ATP communities

Hereafter we call A

1

, A

2

“Boolean/propositional variables” and x

1

, x

2

, x

3

"domain variables” (logic purists, please forgive me!)

(26)

Notational remark (2): “constants” vs. “variables”

Consider, e.g., the formula:

(¬A

1

∨ (3x

1

− 2x

2

− 3 ≤ 5)) ∧ (A

2

∨ (−2x

1

+ 4x

3

+ 2 = 3)) How do we call A

1

, A

2

?:

(a) Boolean/propositional variables?

(b) uninterpreted 0-ary predicates?

How do we call x

1

, x

2

, x

3

?:

(a) domain variables?

(b) uninterpreted Skolem constants/0-ary uninterpreted functions?

Hint:

(a) typically used in SAT, CSP and OR communities (b) typically used in logic & ATP communities

Hereafter we call A

1

, A

2

“Boolean/propositional variables” and x

1

, x

2

, x

3

"domain variables” (logic purists, please forgive me!)

(27)

Outline

1

Motivations and goals

2

Efficient SMT solving

Combining SAT with Theory Solvers Theory Solvers for theories of interest SMT for combinations of theories

3

Beyond Solving: advanced SMT functionalities Proofs and unsatisfiable cores

Interpolants

All-SMT & Predicate Abstraction

SMT with cost optimization (Optimization Modulo Theories)

4

Conclusions & current research directions

(28)

Outline

1

Motivations and goals

2

Efficient SMT solving

Combining SAT with Theory Solvers Theory Solvers for theories of interest SMT for combinations of theories

3

Beyond Solving: advanced SMT functionalities Proofs and unsatisfiable cores

Interpolants

All-SMT & Predicate Abstraction

SMT with cost optimization (Optimization Modulo Theories)

4

Conclusions & current research directions

(29)

Modern “lazy” SMT(T ) solvers

A prominent “lazy” approach [45, 2, 82, 3, 8, 36] (aka “DPLL(T )”) a CDCL SAT solver is used to enumerate truth assignments µ

i

for (the Boolean abstraction of) the input formula ϕ

a theory-specific solver T -solver checks the T -consistency of the set of T -literals corresponding to each assignment

Many techniques to maximize the benefits of integration [71, 10]

Many lazy SMT tools available

( Barcelogic, CVC4, MathSAT, OpenSMT, Yices, Z3, . . . )

(30)

Basic schema: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6),

¬(2v

2

− v

3

> 2), ¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

=⇒ inconsistent in LRA =⇒ backtrack

(31)

Basic schema: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6),

¬(2v

2

− v

3

> 2), ¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

=⇒ inconsistent in LRA =⇒ backtrack

(32)

Basic schema: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

¬B

3

A

1

A

2

B

2

T

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6),

¬(2v

2

− v

3

> 2), ¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

=⇒ inconsistent in LRA =⇒ backtrack

(33)

Basic schema: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

¬B

3

A

1

A

2

B

2

T

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6),

¬(2v

2

− v

3

> 2), ¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

=⇒ inconsistent in LRA =⇒ backtrack

(34)

T -Backjumping & T -learning [50, 82, 3, 8, 36]

Similar to Boolean backjumping & learning important property of T -solver:

extraction of T -conflict sets: if µ is T -unsatisfiable, then T -solver (µ) returns the subset η of µ causing the T -inconsistency of µ (T -conflict set)

If so, the T -conflict clause C := ¬η is used to drive the backjumping & learning mechanism of the SAT solver

=⇒ lots of search saved

the less redundant is η, the more search is saved

¬l1∨ ¬l2∨ ¬l3∨ ¬l4∨ l5

l4

l3

l2 l1

l5

(35)

T -Backjumping & T -learning: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

T

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2),

¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

η = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

1

− v

5

≤ 1)}

η

p

= {¬B

5

, B

8

, B

2

}

(36)

T -Backjumping & T -learning: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

c

8

: B

5

∨ ¬B

8

∨ ¬B

2

T

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2),

¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

η = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

1

− v

5

≤ 1)}

η

p

= {¬B

5

, B

8

, B

2

}

(37)

T -Backjumping & T -learning: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

¬B

2

¬A

2

B

3

c

8

: B

5

∨ ¬B

8

∨ ¬B

2

T

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

, ¬B

3

, A

1

, A

2

, B

2

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2),

¬(3v

1

− 2v

2

≤ 3), (v

1

− v

5

≤ 1)}

η = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

1

− v

5

≤ 1)}

η

p

= {¬B

5

, B

8

, B

2

}

(38)

T -Backjumping & T -learning: example (2)

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

80

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ B

1

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

c

8

: B

5

∨ ¬B

8

∨ ¬B

2

T

¬B

5

B

8

B

6

¬B

1

c8:theory conflicting clause

z }| {

B

5

∨ ¬B

8

∨ ¬B

2

c2

z }| {

¬A

2

∨ B

2

B

5

∨ ¬B

8

∨ ¬A

2

(B

2

)

c3

z }| { B

3

∨ A

2

B

5

∨ ¬B

8

∨ B

3

(¬A

2

)

cT

z }| {

B

5

∨ B

1

∨ ¬B

3

B

5

∨ ¬B

8

∨ B

1

| {z }

c08:mixed Boolean+theory conflict clause

(B

3

)

(39)

T -Backjumping & T -learning: example (2)

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

80

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ B

1

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

T

¬B

5

B

8

B

6

¬B

1

c

80

: B

5

∨ ¬B

8

∨ B

1

A

1

B

1

c8:theory conflicting clause

z }| {

B

5

∨ ¬B

8

∨ ¬B

2

c2

z }| {

¬A

2

∨ B

2

B

5

∨ ¬B

8

∨ ¬A

2

(B

2

)

c3

z }| { B

3

∨ A

2

B

5

∨ ¬B

8

∨ B

3

(¬A

2

)

cT

z }| {

B

5

∨ B

1

∨ ¬B

3

B

5

∨ ¬B

8

∨ B

1

| {z }

c08:mixed Boolean+theory conflict clause

(B

3

)

(40)

T -Backjumping & T -learning: example (2)

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

c

80

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

c

8

: (3v

1

− v

3

≤ 6) ∨ ¬(v

3

= 3v

5

+ 4) ∨ ...

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

B

5

∨ ¬B

8

∨ B

1

B

5

∨ ¬B

8

∨ ¬B

2

¬B

3

A

1

A

2

B

2

T

¬B

5

B

8

B

6

¬B

1

B

1

A

1

c

80

: B

5

∨ ¬B

8

∨ B

1

c

8

: B

5

∨ ¬B

8

∨ ¬B

2

¬B

2

¬A

2

B

3

c8:theory conflicting clause

z }| {

B

5

∨ ¬B

8

∨ ¬B

2

c2

z }| {

¬A

2

∨ B

2

B

5

∨ ¬B

8

∨ ¬A

2

(B

2

)

c3

z }| { B

3

∨ A

2

B

5

∨ ¬B

8

∨ B

3

(¬A

2

)

cT

z }| {

B

5

∨ B

1

∨ ¬B

3

B

5

∨ ¬B

8

∨ B

1

| {z }

c08:mixed Boolean+theory conflict clause

(B

3

)

(41)

Early Pruning [45, 2, 82] I

Introduce a T -satisfiability test on intermediate assignments:

if T -solver returns UNSAT , the procedure backtracks.

benefit: prunes drastically the Boolean search Drawback: possibly many useless calls to T -solver

SAT

SAT

SAT SAT

SAT

SAT

SAT

SAT SAT

SAT SAT

SAT

SAT

SAT UNSAT

UNSAT

UNSAT UNSAT

UNSAT

UNSAT

UNSAT

UNSAT UNSAT UNSAT UNSAT

UNSAT UNSAT

UNSAT

UNSAT UNSAT Calls to T−Solve()

WITH EARLY−PRUNING WITHOUT EARLY−PRUNING

(42)

Early Pruning [45, 2, 82] II

Different strategies for interleaving Boolean search steps and T -solver calls

Eager E.P. [82, 11, 80, 44]): invoke T -solver every time a new T -atom is added to the assignment (unit propagations included) Selective E.P.: Do not call T -solver if the have been added only literals which hardly cause any T -conflict with the previous assignment (e.g., Boolean literals, disequalities (x − y 6= 3), T -literals introducing new variables (x − z = 3) )

Weakened E.P.: for intermediate checks only, use weaker but faster versions of T -solver (e.g., check µ on R rather than on Z):

{(x − y ≤ 4), (z − x ≤ −6), (z = y ), (3x + 2y − 3z = 4)}

(43)

Early pruning: example

ϕ = {¬(2v

2

− v

3

> 2) ∨ A

1

} ∧ {¬A

2

∨ (2v

1

− 4v

5

> 3)} ∧ {(3v

1

− 2v

2

≤ 3) ∨ A

2

} ∧

{¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

} ∧ {A

1

∨ (3v

1

− 2v

2

≤ 3)} ∧

{(v

1

− v

5

≤ 1) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

} ∧ {A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

}.

ϕ

p

= {¬B

1

∨ A

1

} ∧ {¬A

2

∨ B

2

} ∧ {B

3

∨ A

2

} ∧

{¬B

4

∨ ¬B

5

∨ ¬A

1

} ∧ {A

1

∨ B

3

} ∧

{B

6

∨ B

7

∨ ¬A

1

} ∧ {A

1

∨ B

8

∨ A

2

}.

Suppose it is built the intermediate assignment:

µ

0p

= ¬B

1

∧ ¬A

2

∧ B

3

∧ ¬B

5

.

corresponding to the following set of T -literals

µ

0

= ¬(2v

2

− v

3

> 2) ∧ ¬A

2

∧ (3v

1

− 2v

2

≤ 3) ∧ ¬(3v

1

− v

3

≤ 6).

If T -solver is invoked on µ

0

, then it returns UNSAT , and DPLL

backtracks without exploring any extension of µ

0

.

(44)

Early pruning: remark

Incrementality & Backtrackability of T -solvers

With early pruning, lots of incremental calls to T -solver:

T -solver (µ

1

) ⇒ Sat Undo µ

4

, µ

3

, µ

2

T -solver (µ

1

∪ µ

2

) ⇒ Sat T -solver (µ

1

∪ µ

02

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

) ⇒ Sat T -solver (µ

1

∪ µ

02

∪ µ

03

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

∪ µ

4

) ⇒ Unsat ...

=⇒ Desirable features of T -solvers:

incrementality: T -solver(µ

1

∪ µ

2

) reuses computation of T -solver(µ

1

) without restarting from scratch

backtrackability (resettability): T -solver can efficiently undo steps and return to a previous status on the stack

=⇒ T -solver requires a stack-based interface

(45)

Early pruning: remark

Incrementality & Backtrackability of T -solvers

With early pruning, lots of incremental calls to T -solver:

T -solver (µ

1

) ⇒ Sat Undo µ

4

, µ

3

, µ

2

T -solver (µ

1

∪ µ

2

) ⇒ Sat T -solver (µ

1

∪ µ

02

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

) ⇒ Sat T -solver (µ

1

∪ µ

02

∪ µ

03

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

∪ µ

4

) ⇒ Unsat ...

=⇒ Desirable features of T -solvers:

incrementality: T -solver(µ

1

∪ µ

2

) reuses computation of T -solver(µ

1

) without restarting from scratch

backtrackability (resettability): T -solver can efficiently undo steps and return to a previous status on the stack

=⇒ T -solver requires a stack-based interface

(46)

Early pruning: remark

Incrementality & Backtrackability of T -solvers

With early pruning, lots of incremental calls to T -solver:

T -solver (µ

1

) ⇒ Sat Undo µ

4

, µ

3

, µ

2

T -solver (µ

1

∪ µ

2

) ⇒ Sat T -solver (µ

1

∪ µ

02

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

) ⇒ Sat T -solver (µ

1

∪ µ

02

∪ µ

03

) ⇒ Sat T -solver (µ

1

∪ µ

2

∪ µ

3

∪ µ

4

) ⇒ Unsat ...

=⇒ Desirable features of T -solvers:

incrementality: T -solver(µ

1

∪ µ

2

) reuses computation of T -solver(µ

1

) without restarting from scratch

backtrackability (resettability): T -solver can efficiently undo steps and return to a previous status on the stack

=⇒ T -solver requires a stack-based interface

(47)

T -Propagation [2, 3, 44]

strictly related to early pruning important property of T -solver:

T -deduction: when a partial assignment µ is T -satisfiable, T -solver may be able to return also an assignment η to some unassigned atom occurring in ϕ s.t. µ |=

T

η.

If so:

the literal η is then unit-propagated;

optionally, a T -deduction clause C := µ

0

∨ η can be learned, µ

0

being the subset of µ which caused the deduction (µ

0

|=

T

η) lazy explanation: compute C only if needed for conflict analysis

=⇒ may prune drastically the search

Both T -deduction clauses and T -conflict clauses are called T -lemmas

since they are valid in T

(48)

T -Propagation [2, 3, 44]

strictly related to early pruning important property of T -solver:

T -deduction: when a partial assignment µ is T -satisfiable, T -solver may be able to return also an assignment η to some unassigned atom occurring in ϕ s.t. µ |=

T

η.

If so:

the literal η is then unit-propagated;

optionally, a T -deduction clause C := µ

0

∨ η can be learned, µ

0

being the subset of µ which caused the deduction (µ

0

|=

T

η) lazy explanation: compute C only if needed for conflict analysis

=⇒ may prune drastically the search

Both T -deduction clauses and T -conflict clauses are called T -lemmas

since they are valid in T

(49)

T -propagation: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2)}

|=

LRA

¬(3v

1

− 2v

2

≤ 3)

| {z }

¬B3

=⇒ propagate ¬B

3

[and learn the deduction clause B

5

∨ B

1

∨ ¬B

3

]

(50)

T -propagation: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

¬B

5

B

8

B

6

¬B

1

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2)}

|=

LRA

¬(3v

1

− 2v

2

≤ 3)

| {z }

¬B3

=⇒ propagate ¬B

3

[and learn the deduction clause B

5

∨ B

1

∨ ¬B

3

]

(51)

T -propagation: example

ϕ = ϕ

p

=

c

1

: ¬(2v

2

− v

3

> 2) ∨ A

1

c

2

: ¬A

2

∨ (v

1

− v

5

≤ 1) c

3

: (3v

1

− 2v

2

≤ 3) ∨ A

2

c

4

: ¬(2v

3

+ v

4

≥ 5) ∨ ¬(3v

1

− v

3

≤ 6) ∨ ¬A

1

c

5

: A

1

∨ (3v

1

− 2v

2

≤ 3)

c

6

: (v

2

− v

4

≤ 6) ∨ (v

5

= 5 − 3v

4

) ∨ ¬A

1

c

7

: A

1

∨ (v

3

= 3v

5

+ 4) ∨ A

2

true, false

¬B

1

∨ A

1

¬A

2

∨ B

2

B

3

∨ A

2

¬B

4

∨ ¬B

5

∨ ¬A

1

A

1

∨ B

3

B

6

∨ B

7

∨ ¬A

1

A

1

∨ B

8

∨ A

2

¬B

3

¬B

5

B

8

B

6

¬B

1

T -propagate

µ

p

= {¬B

5

, B

8

, B

6

, ¬B

1

}

µ = {¬(3v

1

− v

3

≤ 6), (v

3

= 3v

5

+ 4), (v

2

− v

4

≤ 6), ¬(2v

2

− v

3

> 2)}

|=

LRA

¬(3v

1

− 2v

2

≤ 3)

| {z }

¬B3

=⇒ propagate ¬B

3

[and learn the deduction clause B

5

∨ B

1

∨ ¬B

3

]

Riferimenti

Documenti correlati

automated reasoning, algorithms and combinatorics, artificial intelligence, bioinformatics, constraint programming, electronics, knowledge representation, formal verification of SW

Boolean circuits (Bounded) Planning (Bounded) Model Checking Cryptography.

Learning: in future branches, when all-but-one literals in η are assigned, the remaining literal is assigned to false

In Tools and Algorithms for the Construction and Analysis of Systems - 21st International Conference, TACAS 2015, Held as Part of the European Joint Conferences on Theory and

limited sensitivity: one good setting, does not require expert users much higher capacity (more variables) than BDD based techniques Various techniques: Bounded Model

all but one literals in η are as “old” as possible Learning: in future branches, when all-but-one literals in η are assigned, the remaining literal is assigned to false

(a) List the sequence of unit-propagations following after the last decision, each literal tagged (in square brackets) by its antecedent clause?. (b) Derive the conflict clause

Let LRA be the logic of linear arithmetic over the rationals and EUF be the logic of equality and uninterpreted functions9. (4) Thus, with either technique, we can conclude that φ