Practical SAT Solving

Werbung
Practical SAT Solving
Lecture 11
Carsten Sinz, Tomáš Balyo | July 24, 2017
INSTITUTE FOR THEORETICAL COMPUTER SCIENCE
KIT – University of the State of Baden-Wuerttemberg and
National Laboratory of the Helmholtz Association
www.kit.edu
Lecture Outline
Introduction: Satisfiability Modulo Theory (SMT)
DPLL(T)
QF BV
Outline
(Slides from Stephan Falke)
(Slides from Stephan Falke)
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
2/44
SMT: Motivation
Propositional logic quite “low-level” for encoding many practical
problems
Often arithmetic involved (e.g. in hardware / program verification)
Examples:
Linear (integer/real) arithmetic:
x + y < 5 ∧ (2x − y > 4 ∨ x + y > 7)
Non-linear arithmetic:
x2 + y2 = 4 ∧ x − y = 3
“Program arithmetic”:
x 2 ≡ 31
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(mod 232 )
DPLL(T)
QF ABV
July 24, 2017
3/44
SMT: Motivation
Propositional logic quite “low-level” for encoding many practical
problems
Often arithmetic involved (e.g. in hardware / program verification)
Examples:
Linear (integer/real) arithmetic:
x + y < 5 ∧ (2x − y > 4 ∨ x + y > 7)
Non-linear arithmetic:
x2 + y2 = 4 ∧ x − y = 3
“Program arithmetic”:
x 2 ≡ 31
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(mod 232 )
DPLL(T)
QF ABV
July 24, 2017
3/44
What is SMT?
Extend propositional logic by certain theories of first-order logic.
Theories are mainly about arithmetic (linear integer arithmetic,
non-linear real arithmetic, etc.)
In most cases quantifier-free fragment of first-order logic (because of
decidability).
Note: The first-order theory of reals with +, ∗, = and < is decidable
(Tarski).
Syntax and semantics of SMT standardized in SMT-LIB standard.
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
4/44
SMT-LIB
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
5/44
SMT-LIB: Logics
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
6/44
Theorien 1
Definition
Eine Theorie T besteht aus
einer Signatur Σ bestehend aus Konstanten-, Funktions-, und
Prädikatensymbolen
einer Menge Ax von Axiomen (Sätze der Prädikatenlogik)
Die Symbole in Σ haben keine festgelegte Bedeutung
Die Bedeutung wird erst durch Ax fest gelegt
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
7/44
Theorien 1
Definition
Eine Theorie T besteht aus
einer Signatur Σ bestehend aus Konstanten-, Funktions-, und
Prädikatensymbolen
einer Menge Ax von Axiomen (Sätze der Prädikatenlogik)
Die Symbole in Σ haben keine festgelegte Bedeutung
Die Bedeutung wird erst durch Ax fest gelegt
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
7/44
Theorien 1
Definition
Eine Theorie T besteht aus
einer Signatur Σ bestehend aus Konstanten-, Funktions-, und
Prädikatensymbolen
einer Menge Ax von Axiomen (Sätze der Prädikatenlogik)
Die Symbole in Σ haben keine festgelegte Bedeutung
Die Bedeutung wird erst durch Ax fest gelegt
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
7/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Theorie der Uninterpretierten
Funktionen
Beispiel
Σ = {=, a, b, c , . . . , f , g , h, . . .}
Axiome Ax:
1
∀x . x = x
2
∀x , y . x = y → y = x
3
∀x , y , z . x = y ∧ y = z → x = z
4
(Reflexivität)
(Symmetrie)
(Transitivität)
für jedes n-stellige Funktionssymbol
f ∈ Σ:
Vn
x
=
y
→
f (x1 , . . . , xn ) = f (y1 , . . . , yn )
i
i =1 i
(Kongruenz)
∀x1 , . . . , xn , y1 , . . . , yn .
(Kongruenz) ist ein Axiomschema das unendliche viele Axiome
repräsentiert
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
8/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 1
Beispiel
(Peano Arithmetik)
Σ = {=, 0, 1, +, ∗}
Axiome Ax:
1
2
3
4
5
6
7
8
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
∀x . x ∗ 0 = 0
(Multiplikation Null)
∀x , y . x ∗ (y + 1) = (x ∗ y ) + x
(Multiplikation Nachfolger)
(Induktion) ist ein Axiomschema
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
9/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Arithmetische Theorien 2
Beispiel
(Presburger Arithmetik)
Σ = {=, 0, 1, +}
keine Multiplikation!
Axiome Ax:
1
2
3
4
5
6
Axiome der Theorie der Uninterpretierten Funktionen
∀x . ¬(x + 1 = 0)
(Null)
∀x , y . x + 1 = y + 1 → x = y
(Nachfolger)
F [0] ∧ (∀x . F [x ] → F [x + 1]) → ∀x . F [x ]
(Induktion)
∀x . x + 0 = x
(Plus Null)
∀x , y . x + (y + 1) = (x + y ) + 1
(Plus Nachfolger)
(Induktion) ist ein Axiomschema
Beispiel
(Lineare Arithmetik ganzer Zahlen)
Σ = {=, >, +, −, . . . , −2, −1, 0, 1, 2, . . .}
keine Multiplikation!
Axiome Ax: . . .
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
10/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorie der Arrays
Beispiel
Σ = {=, read, write}
Axiome Ax:
1
∀x . x = x
(Reflexivität)
2
∀x , y . x = y → y = x
(Symmetrie)
3
∀x , y , z . x = y ∧ y = z → x = z
(Transitivität)
4
∀a, i , j . i = j → read(a, i ) = read(a, j )
(Array Kongruenz)
5
∀a, v , i , j . i = j → read(write(a, i , v ), j ) = v
(read-über-write 1)
6
∀a, v , i , j . i 6= j → read(write(a, i , v ), j ) = read(a, j ) (read-über-write
7
Outline
2)
∀a, b. a = b ↔ (∀i . read(a, i ) = read(b, i ))
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
(Extensionalität)
DPLL(T)
QF ABV
July 24, 2017
11/44
Theorien 2
Definition
Eine Σ-Formel F ist T -erfüllbar gdw. Ax ∪ {F } erfüllbar ist
Definition
Eine Σ-Formel F ist T -gültig gdw. Ax |= F
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
12/44
Theorien 2
Definition
Eine Σ-Formel F ist T -erfüllbar gdw. Ax ∪ {F } erfüllbar ist
Definition
Eine Σ-Formel F ist T -gültig gdw. Ax |= F
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
12/44
Theorien 3
Definition
Eine Theorie T ist entscheidbar gdw. T -Erfüllbarkeit für jede Σ-Formel
entschieden werden kann
Definition
Ein Fragment einer Theorie T ist eine syntaktisch eingeschränkte Teilmenge aller Σ-Formeln
Beispiel: Quantoren-freies Fragment (QFF)
Definition
Eine Fragment einer Theorie T ist entscheidbar gdw. T -Erfüllbarkeit
für jede Σ-Formel des Fragments entschieden werden kann
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
13/44
Theorien 3
Definition
Eine Theorie T ist entscheidbar gdw. T -Erfüllbarkeit für jede Σ-Formel
entschieden werden kann
Definition
Ein Fragment einer Theorie T ist eine syntaktisch eingeschränkte Teilmenge aller Σ-Formeln
Beispiel: Quantoren-freies Fragment (QFF)
Definition
Eine Fragment einer Theorie T ist entscheidbar gdw. T -Erfüllbarkeit
für jede Σ-Formel des Fragments entschieden werden kann
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
13/44
Theorien 3
Definition
Eine Theorie T ist entscheidbar gdw. T -Erfüllbarkeit für jede Σ-Formel
entschieden werden kann
Definition
Ein Fragment einer Theorie T ist eine syntaktisch eingeschränkte Teilmenge aller Σ-Formeln
Beispiel: Quantoren-freies Fragment (QFF)
Definition
Eine Fragment einer Theorie T ist entscheidbar gdw. T -Erfüllbarkeit
für jede Σ-Formel des Fragments entschieden werden kann
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
13/44
Entscheidbarkeit
Theorie
Uninterpretierte Funktionen
Peano Arithmetik
Presburger Arithmetik
Lineare Arithmetik ganzer Zahlen
Arrays
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Entscheidbar?
QFF entscheidbar?
—
—
—
√
√
√
√
√
√
—
DPLL(T)
QF ABV
July 24, 2017
14/44
DPLL(T ): Idee
Im folgenden: nur quantoren-freie Σ-Formeln
Benutze DPLL um Konjunktionen von T -Literalen zu erzeugen
diese T -Literale erfüllen das Boolesche Skelett der Formel
Prüfe ob die Konjunktion konsistent in T ist
Falls ja, extrahiere ein T -Modell
Falls nein, schließe diesen “Kandidaten” aus
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
15/44
DPLL(T ): Idee
Im folgenden: nur quantoren-freie Σ-Formeln
Benutze DPLL um Konjunktionen von T -Literalen zu erzeugen
diese T -Literale erfüllen das Boolesche Skelett der Formel
Prüfe ob die Konjunktion konsistent in T ist
Falls ja, extrahiere ein T -Modell
Falls nein, schließe diesen “Kandidaten” aus
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
15/44
DPLL(T ): Idee
Im folgenden: nur quantoren-freie Σ-Formeln
Benutze DPLL um Konjunktionen von T -Literalen zu erzeugen
diese T -Literale erfüllen das Boolesche Skelett der Formel
Prüfe ob die Konjunktion konsistent in T ist
Falls ja, extrahiere ein T -Modell
Falls nein, schließe diesen “Kandidaten” aus
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
15/44
DPLL(T ): Idee
Im folgenden: nur quantoren-freie Σ-Formeln
Benutze DPLL um Konjunktionen von T -Literalen zu erzeugen
diese T -Literale erfüllen das Boolesche Skelett der Formel
Prüfe ob die Konjunktion konsistent in T ist
Falls ja, extrahiere ein T -Modell
Falls nein, schließe diesen “Kandidaten” aus
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
15/44
DPLL(T ): Idee
Im folgenden: nur quantoren-freie Σ-Formeln
Benutze DPLL um Konjunktionen von T -Literalen zu erzeugen
diese T -Literale erfüllen das Boolesche Skelett der Formel
Prüfe ob die Konjunktion konsistent in T ist
Falls ja, extrahiere ein T -Modell
Falls nein, schließe diesen “Kandidaten” aus
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
15/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ ( x < 0 ∨ y < 1) ∧ ( x ≥ 0 ∨ y < 0)
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E )
Modell für das Boolesche Skelett:
A, C , E
Entsprechende T -Literale:
y ≥ 1, y < 1, y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥1∧y <1∧y <0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 1)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
16/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C )
Modell für das Boolesche Skelett:
A, ¬C , B , D
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, x ≥ 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ x ≥ 0
Schließe diesen “Kandidaten” aus:
¬(x < 0) ∨ ¬(x ≥ 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
17/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D )
Modell für das Boolesche Skelett:
A, ¬ C , B , ¬ D , E
Entsprechende T -Literale:
y ≥ 1, ¬(y < 1), x < 0, ¬(x ≥ 0), y < 0
Inkonsistente Konjunktion von T -Literalen:
y ≥ 1 ∧ ¬(y < 1) ∧ x < 0 ∧ ¬(x ≥ 0) ∧ y < 0
Schließe diesen “Kandidaten” aus:
¬(y ≥ 1) ∨ ¬(y < 0)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
18/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
∧ [¬(y ≥ 1) ∨ ¬(y < 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D ) ∧ (¬A ∨ ¬E )
Boolesches Skelett hat kein Modell
=⇒ Ursprüngliche Formel hat kein T -Modell
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
19/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
∧ [¬(y ≥ 1) ∨ ¬(y < 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D ) ∧ (¬A ∨ ¬E )
Boolesches Skelett hat kein Modell
=⇒ Ursprüngliche Formel hat kein T -Modell
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
19/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
∧ [¬(y ≥ 1) ∨ ¬(y < 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D ) ∧ (¬A ∨ ¬E )
Boolesches Skelett hat kein Modell
=⇒ Ursprüngliche Formel hat kein T -Modell
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
19/44
Beispiel
Lineare Arithmetik ganzer Zahlen:
y ≥ 1 ∧ (x < 0 ∨ y < 1) ∧ (x ≥ 0 ∨ y < 0) ∧ [¬(y ≥ 1) ∨ ¬(y < 1)] ∧ [¬(x < 0) ∨ ¬(x ≥ 0)]
∧ [¬(y ≥ 1) ∨ ¬(y < 0)]
Boolesches Skelett:
A ∧ (B ∨ C ) ∧ (D ∨ E ) ∧ (¬A ∨ ¬C ) ∧ (¬B ∨ ¬D ) ∧ (¬A ∨ ¬E )
Boolesches Skelett hat kein Modell
=⇒ Ursprüngliche Formel hat kein T -Modell
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
19/44
Inhalt
Outline
1
Wieso Bitvektoren?
2
Entscheidungsverfahren für Bitvektoren
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
20/44
Inhalt
Outline
1
Wieso Bitvektoren?
2
Entscheidungsverfahren für Bitvektoren
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
20/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Was gibt das folgende Programm aus?
...
unsigned char number = 200;
number = number + 100;
p r i n t f ( ” Sum: %d \ n ” , number ) ;
...
300?
44?
42?
Falls unsigned char 8 bit belegt:
11001000 200
+ 01100100 100
00101100
44
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
Überlauf!
DPLL(T)
QF ABV
July 24, 2017
21/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist x − y > 0 ∧ ¬(x > y ) LIA-erfüllbar?
NEIN
Aber: Assertion schlägt fehl, falls x = −2147483648 und y = 1
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
22/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist x − y > 0 ∧ ¬(x > y ) LIA-erfüllbar?
NEIN
Aber: Assertion schlägt fehl, falls x = −2147483648 und y = 1
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
22/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist x − y > 0 ∧ ¬(x > y ) LIA-erfüllbar?
NEIN
Aber: Assertion schlägt fehl, falls x = −2147483648 und y = 1
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
22/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist x − y > 0 ∧ ¬(x > y ) LIA-erfüllbar?
NEIN
Aber: Assertion schlägt fehl, falls x = −2147483648 und y = 1
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
22/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Bitvektorlogik
Theorie
Funktionssymbole:
(bvn,k )n>0∧0≤k ≤2n −1
concat, (extracti ,j )0≤j <i
(zero extendn )n>0 , (sign extendn )n>0
bvnot, bvand, bvor
bvshl, bvlshr, bvashr
bvadd, bvsub, bvmul
...
Prädikatensymbole:
=, bvult, bvule, bvslt, bvsle
Axiome:
...
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
23/44
Werte
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor. Die Breite von b ist |b| = n
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenlose
Wert von b ist
hbiU =
n −1
X
bi ∗ 2i
i =0
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenbehaftete Wert (Zweierkomplement) von b ist
hbiS = −2n−1 ∗ bn−1 +
n −2
X
bi ∗ 2i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
24/44
Werte
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor. Die Breite von b ist |b| = n
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenlose
Wert von b ist
hbiU =
n −1
X
bi ∗ 2i
i =0
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenbehaftete Wert (Zweierkomplement) von b ist
hbiS = −2n−1 ∗ bn−1 +
n −2
X
bi ∗ 2i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
24/44
Werte
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor. Die Breite von b ist |b| = n
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenlose
Wert von b ist
hbiU =
n −1
X
bi ∗ 2i
i =0
Definition
Sei b = (bn−1 · · · b0 ) ein Bitvektor der Breite n > 0. Der vorzeichenbehaftete Wert (Zweierkomplement) von b ist
hbiS = −2n−1 ∗ bn−1 +
n −2
X
bi ∗ 2i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
24/44
Semantik 1
|bvn,k | = n
hbvn,k iU = k
Intuition:
concat (xn−1 · · · x0 ) (ym−1 · · · y0 ) = (xn−1 · · · x0 ym−1 · · · y0 )
|concat x y | = |x | + |y |
(
(concat x y )k =
yk
0 ≤ k < |y |
xk −|y |
|y | ≤ k < |x | + |y |
Intuition: extracti ,j (xn−1 · · · x0 ) = (xi · · · xj )
extracti ,j x ist nur definiert falls i < |x |
|extracti ,j x | = i − j + 1
(extracti ,j x )k = xj +k
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
25/44
Semantik 1
|bvn,k | = n
hbvn,k iU = k
Intuition:
concat (xn−1 · · · x0 ) (ym−1 · · · y0 ) = (xn−1 · · · x0 ym−1 · · · y0 )
|concat x y | = |x | + |y |
(
(concat x y )k =
yk
0 ≤ k < |y |
xk −|y |
|y | ≤ k < |x | + |y |
Intuition: extracti ,j (xn−1 · · · x0 ) = (xi · · · xj )
extracti ,j x ist nur definiert falls i < |x |
|extracti ,j x | = i − j + 1
(extracti ,j x )k = xj +k
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
25/44
Semantik 1
|bvn,k | = n
hbvn,k iU = k
Intuition:
concat (xn−1 · · · x0 ) (ym−1 · · · y0 ) = (xn−1 · · · x0 ym−1 · · · y0 )
|concat x y | = |x | + |y |
(
(concat x y )k =
yk
0 ≤ k < |y |
xk −|y |
|y | ≤ k < |x | + |y |
Intuition: extracti ,j (xn−1 · · · x0 ) = (xi · · · xj )
extracti ,j x ist nur definiert falls i < |x |
|extracti ,j x | = i − j + 1
(extracti ,j x )k = xj +k
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
25/44
Semantik 1
|bvn,k | = n
hbvn,k iU = k
Intuition:
concat (xn−1 · · · x0 ) (ym−1 · · · y0 ) = (xn−1 · · · x0 ym−1 · · · y0 )
|concat x y | = |x | + |y |
(
(concat x y )k =
yk
0 ≤ k < |y |
xk −|y |
|y | ≤ k < |x | + |y |
Intuition: extracti ,j (xn−1 · · · x0 ) = (xi · · · xj )
extracti ,j x ist nur definiert falls i < |x |
|extracti ,j x | = i − j + 1
(extracti ,j x )k = xj +k
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
25/44
Semantik 1
|bvn,k | = n
hbvn,k iU = k
Intuition:
concat (xn−1 · · · x0 ) (ym−1 · · · y0 ) = (xn−1 · · · x0 ym−1 · · · y0 )
|concat x y | = |x | + |y |
(
(concat x y )k =
yk
0 ≤ k < |y |
xk −|y |
|y | ≤ k < |x | + |y |
Intuition: extracti ,j (xn−1 · · · x0 ) = (xi · · · xj )
extracti ,j x ist nur definiert falls i < |x |
|extracti ,j x | = i − j + 1
(extracti ,j x )k = xj +k
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
25/44
Semantik 2
Intuition: zero extendn (xm−1 · · · x0 ) = (0
· · 0} xm−1 · · · x0 )
| ·{z
n−mal
|zero extendn x | = |x | + n
(
(zero extendn x )k =
xk
0 ≤ k < |x |
0
k ≥ |x |
Intuition: sign extendn (xm−1 · · · x0 ) = (xm−1 · · · xm−1 xm−1 · · · x0 )
|
|sign extendn x | = |x | + n
(
(sign extendn x )k =
xk
0 ≤ k < |x |
x|x |−1
k ≥ |x |
hbiU = hzero extendn biU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
{z
n−mal
}
hbiS = hsign extendn biS
DPLL(T)
QF ABV
July 24, 2017
26/44
Semantik 2
Intuition: zero extendn (xm−1 · · · x0 ) = (0
· · 0} xm−1 · · · x0 )
| ·{z
n−mal
|zero extendn x | = |x | + n
(
(zero extendn x )k =
xk
0 ≤ k < |x |
0
k ≥ |x |
Intuition: sign extendn (xm−1 · · · x0 ) = (xm−1 · · · xm−1 xm−1 · · · x0 )
|
|sign extendn x | = |x | + n
(
(sign extendn x )k =
xk
0 ≤ k < |x |
x|x |−1
k ≥ |x |
hbiU = hzero extendn biU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
{z
n−mal
}
hbiS = hsign extendn biS
DPLL(T)
QF ABV
July 24, 2017
26/44
Semantik 2
Intuition: zero extendn (xm−1 · · · x0 ) = (0
· · 0} xm−1 · · · x0 )
| ·{z
n−mal
|zero extendn x | = |x | + n
(
(zero extendn x )k =
xk
0 ≤ k < |x |
0
k ≥ |x |
Intuition: sign extendn (xm−1 · · · x0 ) = (xm−1 · · · xm−1 xm−1 · · · x0 )
|
|sign extendn x | = |x | + n
(
(sign extendn x )k =
xk
0 ≤ k < |x |
x|x |−1
k ≥ |x |
hbiU = hzero extendn biU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
{z
n−mal
}
hbiS = hsign extendn biS
DPLL(T)
QF ABV
July 24, 2017
26/44
Semantik 2
Intuition: zero extendn (xm−1 · · · x0 ) = (0
· · 0} xm−1 · · · x0 )
| ·{z
n−mal
|zero extendn x | = |x | + n
(
(zero extendn x )k =
xk
0 ≤ k < |x |
0
k ≥ |x |
Intuition: sign extendn (xm−1 · · · x0 ) = (xm−1 · · · xm−1 xm−1 · · · x0 )
|
|sign extendn x | = |x | + n
(
(sign extendn x )k =
xk
0 ≤ k < |x |
x|x |−1
k ≥ |x |
hbiU = hzero extendn biU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
{z
n−mal
}
hbiS = hsign extendn biS
DPLL(T)
QF ABV
July 24, 2017
26/44
Semantik 2
Intuition: zero extendn (xm−1 · · · x0 ) = (0
· · 0} xm−1 · · · x0 )
| ·{z
n−mal
|zero extendn x | = |x | + n
(
(zero extendn x )k =
xk
0 ≤ k < |x |
0
k ≥ |x |
Intuition: sign extendn (xm−1 · · · x0 ) = (xm−1 · · · xm−1 xm−1 · · · x0 )
|
|sign extendn x | = |x | + n
(
(sign extendn x )k =
xk
0 ≤ k < |x |
x|x |−1
k ≥ |x |
hbiU = hzero extendn biU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
{z
n−mal
}
hbiS = hsign extendn biS
DPLL(T)
QF ABV
July 24, 2017
26/44
Semantik 3
|bvnot x | = |x |
(
(bvnot x )k =
0
xk = 1
1
xk = 0
bvand x y ist nur definiert falls |x | = |y |
|bvand x y | = |x |
(
(bvand x y )k =
1
xk = yk = 1
0
sonst
bvor x y ist nur definiert falls |x | = |y |
|bvor x y | = |x |
(
(bvor x y )k =
Outline
0
xk = yk = 0
1
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
27/44
Semantik 3
|bvnot x | = |x |
(
(bvnot x )k =
0
xk = 1
1
xk = 0
bvand x y ist nur definiert falls |x | = |y |
|bvand x y | = |x |
(
(bvand x y )k =
1
xk = yk = 1
0
sonst
bvor x y ist nur definiert falls |x | = |y |
|bvor x y | = |x |
(
(bvor x y )k =
Outline
0
xk = yk = 0
1
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
27/44
Semantik 3
|bvnot x | = |x |
(
(bvnot x )k =
0
xk = 1
1
xk = 0
bvand x y ist nur definiert falls |x | = |y |
|bvand x y | = |x |
(
(bvand x y )k =
1
xk = yk = 1
0
sonst
bvor x y ist nur definiert falls |x | = |y |
|bvor x y | = |x |
(
(bvor x y )k =
Outline
0
xk = yk = 0
1
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
27/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 4
Intuition: bvshl (xn−1 · · · x0 ) bvn,2 = (xn−3 · · · x0 00)
bvshl x y ist nur definiert falls |x | = |y | und |bvshl x y | = |x |
(
xk −hy iU k ≥ hy iU
(bvshl x y )k =
0
sonst
Intuition: bvlshr (xn−1 · · · x0 ) bvn,2 = (00xn−1 · · · x2 )
bvlshr x y ist nur definiert falls |x | = |y | und |bvlshr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvlshr x y )k =
0
sonst
Intuition: bvashr (xn−1 · · · x0 ) bvn,2 = (xn−1 xn−1 xn−1 · · · x2 )
bvashr x y ist nur definiert falls |x | = |y | und |bvashr x y | = |x |
(
xk +hy iU k < |x | − hy iU
(bvashr x y )k =
x|x |−1
Outline
sonst
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
28/44
Semantik 5
bvadd x y ist nur definiert falls |x | = |y | und |bvadd x y | = |x |
hbvadd x y iU ≡ hx iU + hy iU
mod 2|x |
bvsub x y ist nur definiert falls |x | = |y | und |bvsub x y | = |x |
hbvsub x y iU ≡ hx iU − hy iU
mod 2|x |
bvmul x y ist nur definiert falls |x | = |y | und |bvmul x y | = |x |
hbvmul x y iU ≡ hx iU ∗ hy iU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
mod 2|x |
DPLL(T)
QF ABV
July 24, 2017
29/44
Semantik 5
bvadd x y ist nur definiert falls |x | = |y | und |bvadd x y | = |x |
hbvadd x y iU ≡ hx iU + hy iU
mod 2|x |
bvsub x y ist nur definiert falls |x | = |y | und |bvsub x y | = |x |
hbvsub x y iU ≡ hx iU − hy iU
mod 2|x |
bvmul x y ist nur definiert falls |x | = |y | und |bvmul x y | = |x |
hbvmul x y iU ≡ hx iU ∗ hy iU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
mod 2|x |
DPLL(T)
QF ABV
July 24, 2017
29/44
Semantik 5
bvadd x y ist nur definiert falls |x | = |y | und |bvadd x y | = |x |
hbvadd x y iU ≡ hx iU + hy iU
mod 2|x |
bvsub x y ist nur definiert falls |x | = |y | und |bvsub x y | = |x |
hbvsub x y iU ≡ hx iU − hy iU
mod 2|x |
bvmul x y ist nur definiert falls |x | = |y | und |bvmul x y | = |x |
hbvmul x y iU ≡ hx iU ∗ hy iU
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
mod 2|x |
DPLL(T)
QF ABV
July 24, 2017
29/44
Semantik 6
x = y ist nur definiert falls |x | = |y |
(xn−1 · · · x0 ) = (yn−1 · · · y0 )
gdw.
xi = yi für alle 1 ≤ i < n
bvult x y ist nur definiert falls |x | = |y |
bvult x y
gdw.
hx iU < hy iU
bvule x y ist nur definiert falls |x | = |y |
bvule x y
gdw.
hx iU ≤ hy iU
bvslt x y ist nur definiert falls |x | = |y |
bvslt x y
gdw.
hx iS < hy iS
bvsle x y ist nur definiert falls |x | = |y |
bvsle x y
Outline
gdw.
hx iS ≤ hy iS
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
30/44
Semantik 6
x = y ist nur definiert falls |x | = |y |
(xn−1 · · · x0 ) = (yn−1 · · · y0 )
gdw.
xi = yi für alle 1 ≤ i < n
bvult x y ist nur definiert falls |x | = |y |
bvult x y
gdw.
hx iU < hy iU
bvule x y ist nur definiert falls |x | = |y |
bvule x y
gdw.
hx iU ≤ hy iU
bvslt x y ist nur definiert falls |x | = |y |
bvslt x y
gdw.
hx iS < hy iS
bvsle x y ist nur definiert falls |x | = |y |
bvsle x y
Outline
gdw.
hx iS ≤ hy iS
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
30/44
Semantik 6
x = y ist nur definiert falls |x | = |y |
(xn−1 · · · x0 ) = (yn−1 · · · y0 )
gdw.
xi = yi für alle 1 ≤ i < n
bvult x y ist nur definiert falls |x | = |y |
bvult x y
gdw.
hx iU < hy iU
bvule x y ist nur definiert falls |x | = |y |
bvule x y
gdw.
hx iU ≤ hy iU
bvslt x y ist nur definiert falls |x | = |y |
bvslt x y
gdw.
hx iS < hy iS
bvsle x y ist nur definiert falls |x | = |y |
bvsle x y
Outline
gdw.
hx iS ≤ hy iS
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
30/44
Semantik 6
x = y ist nur definiert falls |x | = |y |
(xn−1 · · · x0 ) = (yn−1 · · · y0 )
gdw.
xi = yi für alle 1 ≤ i < n
bvult x y ist nur definiert falls |x | = |y |
bvult x y
gdw.
hx iU < hy iU
bvule x y ist nur definiert falls |x | = |y |
bvule x y
gdw.
hx iU ≤ hy iU
bvslt x y ist nur definiert falls |x | = |y |
bvslt x y
gdw.
hx iS < hy iS
bvsle x y ist nur definiert falls |x | = |y |
bvsle x y
Outline
gdw.
hx iS ≤ hy iS
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
30/44
Semantik 6
x = y ist nur definiert falls |x | = |y |
(xn−1 · · · x0 ) = (yn−1 · · · y0 )
gdw.
xi = yi für alle 1 ≤ i < n
bvult x y ist nur definiert falls |x | = |y |
bvult x y
gdw.
hx iU < hy iU
bvule x y ist nur definiert falls |x | = |y |
bvule x y
gdw.
hx iU ≤ hy iU
bvslt x y ist nur definiert falls |x | = |y |
bvslt x y
gdw.
hx iS < hy iS
bvsle x y ist nur definiert falls |x | = |y |
bvsle x y
Outline
gdw.
hx iS ≤ hy iS
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
30/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist bvslt(bv32,0 , bvsub(x , y )) ∧ ¬bvslt(y , x ) erfüllbar?
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
JA
DPLL(T)
QF ABV
July 24, 2017
31/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist bvslt(bv32,0 , bvsub(x , y )) ∧ ¬bvslt(y , x ) erfüllbar?
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
JA
DPLL(T)
QF ABV
July 24, 2017
31/44
Beispiel
Kann die folgende Assertion fehlschlagen?
int x, y;
...
i f ( x − y > 0) {
assert ( x > y ) ;
...
}
...
Ist bvslt(bv32,0 , bvsub(x , y )) ∧ ¬bvslt(y , x ) erfüllbar?
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
JA
DPLL(T)
QF ABV
July 24, 2017
31/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Entscheidungsverfahren für
Bitvektorlogik
Erste Möglichkeit: DPLL(T ) mit Bitvektorlogik-Solver
Konjunktion von Bitvektorlogik wird nach SAT reduziert
Zweite Möglichkeit: Komplette Formel wird nach SAT reduziert
Direkter Ansatz ohne DPLL(T )-Overhead
In der Praxis bessere Performance
Notation: Sei φ eine Bitvektorlogikformel
At(φ): Atome in φ
AV(a): Abstraktionsvariable für a ∈ At(φ)
BS(φ): Boolesches Skelett von φ (ersetze a ∈ At(φ) durch AV(a))
T(φ): Terme in φ
E(t ): Liste der Länge |t | von SAT-Variablen (Bits) für t ∈ T(φ)
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
32/44
Bit-Blasting
Algorithmus
Eingabe: Bitvektorlogikformel φ
Ausgabe: Erfüllbarkeitsäquivalente SAT-Formel
Schritte:
1
ψ := BS(φ)
2
Für jedes a ∈ At(φ):
ψ := ψ ∧ BV-Constraint(a)
3
Für jedes t ∈ T(φ):
ψ := ψ ∧ BV-Constraint(t )
4
Outline
Gib ψ aus
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
33/44
Bit-Blasting
Algorithmus
Eingabe: Bitvektorlogikformel φ
Ausgabe: Erfüllbarkeitsäquivalente SAT-Formel
Schritte:
1
ψ := BS(φ)
2
Für jedes a ∈ At(φ):
ψ := ψ ∧ BV-Constraint(a)
3
Für jedes t ∈ T(φ):
ψ := ψ ∧ BV-Constraint(t )
4
Outline
Gib ψ aus
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
33/44
Bit-Blasting
Algorithmus
Eingabe: Bitvektorlogikformel φ
Ausgabe: Erfüllbarkeitsäquivalente SAT-Formel
Schritte:
1
ψ := BS(φ)
2
Für jedes a ∈ At(φ):
ψ := ψ ∧ BV-Constraint(a)
3
Für jedes t ∈ T(φ):
ψ := ψ ∧ BV-Constraint(t )
4
Outline
Gib ψ aus
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
33/44
Bit-Blasting
Algorithmus
Eingabe: Bitvektorlogikformel φ
Ausgabe: Erfüllbarkeitsäquivalente SAT-Formel
Schritte:
1
ψ := BS(φ)
2
Für jedes a ∈ At(φ):
ψ := ψ ∧ BV-Constraint(a)
3
Für jedes t ∈ T(φ):
ψ := ψ ∧ BV-Constraint(t )
4
Outline
Gib ψ aus
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
33/44
Bit-Blasting
Algorithmus
Eingabe: Bitvektorlogikformel φ
Ausgabe: Erfüllbarkeitsäquivalente SAT-Formel
Schritte:
1
ψ := BS(φ)
2
Für jedes a ∈ At(φ):
ψ := ψ ∧ BV-Constraint(a)
3
Für jedes t ∈ T(φ):
ψ := ψ ∧ BV-Constraint(t )
4
Outline
Gib ψ aus
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
33/44
BV-Constraint(a) 1
BV-Constraint(x = y ):
|x |−1
AV(x = y )
↔
^
E(x )i ↔ E(y )i
i =0
BV-Constraint(bvult x y ):



|x |−1
|x |−1
_
^
¬E(x )i ∧ E(y )i ∧ 
AV(bvult x y ) ↔
E(x )j ↔ E(y )j 
i =0
j =i +1
BV-Constraint(bvule x y ):
AV(bvule x y )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
↔
...
DPLL(T)
QF ABV
July 24, 2017
34/44
BV-Constraint(a) 1
BV-Constraint(x = y ):
|x |−1
AV(x = y )
↔
^
E(x )i ↔ E(y )i
i =0
BV-Constraint(bvult x y ):



|x |−1
|x |−1
_
^
¬E(x )i ∧ E(y )i ∧ 
AV(bvult x y ) ↔
E(x )j ↔ E(y )j 
i =0
j =i +1
BV-Constraint(bvule x y ):
AV(bvule x y )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
↔
...
DPLL(T)
QF ABV
July 24, 2017
34/44
BV-Constraint(a) 1
BV-Constraint(x = y ):
|x |−1
AV(x = y )
↔
^
E(x )i ↔ E(y )i
i =0
BV-Constraint(bvult x y ):



|x |−1
|x |−1
_
^
¬E(x )i ∧ E(y )i ∧ 
AV(bvult x y ) ↔
E(x )j ↔ E(y )j 
i =0
j =i +1
BV-Constraint(bvule x y ):
AV(bvule x y )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
↔
...
DPLL(T)
QF ABV
July 24, 2017
34/44
BV-Constraint(a) 2
BV-Constraint(bvslt x y ):
↔
AV(bvslt x y )
(E(x )|x |−1 ∧ ¬E(y )|x |−1 )
∨ [ E(x )|x |−1 ↔ E(y )|x |−1 ∧



|x |−2
|x |−2
_
^
¬E(x )i ∧ E(y )i ∧ 
E(x )j ↔ E(y )j ]
i =0
j =i +1
BV-Constraint(bvsle x y ):
AV(bvsle x y )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
↔
...
DPLL(T)
QF ABV
July 24, 2017
35/44
BV-Constraint(a) 2
BV-Constraint(bvslt x y ):
↔
AV(bvslt x y )
(E(x )|x |−1 ∧ ¬E(y )|x |−1 )
∨ [ E(x )|x |−1 ↔ E(y )|x |−1 ∧



|x |−2
|x |−2
_
^
¬E(x )i ∧ E(y )i ∧ 
E(x )j ↔ E(y )j ]
i =0
j =i +1
BV-Constraint(bvsle x y ):
AV(bvsle x y )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
↔
...
DPLL(T)
QF ABV
July 24, 2017
35/44
BV-Constraint(t ) 1
BV-Constraint(x ) für Variablen x:
>
BV-Constraint(bvn,k ):
sei h(bn−1 · · · b0 )iU = k
n^
−1
E(bvn,k )i ↔ bi
i =0
BV-Constraint(concat x y ):
|x |+|y |−1
^
|y |−1
E(concat x y )i ↔ E(x )i −|y | ∧
E(concat x y )i ↔ E(y )i
i =0
i =|y |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
36/44
BV-Constraint(t ) 1
BV-Constraint(x ) für Variablen x:
>
BV-Constraint(bvn,k ):
sei h(bn−1 · · · b0 )iU = k
n^
−1
E(bvn,k )i ↔ bi
i =0
BV-Constraint(concat x y ):
|x |+|y |−1
^
|y |−1
E(concat x y )i ↔ E(x )i −|y | ∧
E(concat x y )i ↔ E(y )i
i =0
i =|y |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
36/44
BV-Constraint(t ) 1
BV-Constraint(x ) für Variablen x:
>
BV-Constraint(bvn,k ):
sei h(bn−1 · · · b0 )iU = k
n^
−1
E(bvn,k )i ↔ bi
i =0
BV-Constraint(concat x y ):
|x |+|y |−1
^
|y |−1
E(concat x y )i ↔ E(x )i −|y | ∧
E(concat x y )i ↔ E(y )i
i =0
i =|y |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
36/44
BV-Constraint(t ) 2
BV-Constraint(extracti ,j x ):
i −j +1
^
E(extracti ,j )k ↔ E(x )j +k
k =0
BV-Constraint(zero extendn x ):
|x |+n−1
^
|x |−1
¬E(zero extendn x )k ∧
^
E(zero extendn x )k ↔ E(x )k
k =0
k =|x |
BV-Constraint(sign extendn x ):
|x |+n−1
^
|x |−1
E(sign extendn x )k ↔ E(x )|x |−1 ∧
E(sign extendn x )k ↔ E(x )k
k =0
k =|x |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
37/44
BV-Constraint(t ) 2
BV-Constraint(extracti ,j x ):
i −j +1
^
E(extracti ,j )k ↔ E(x )j +k
k =0
BV-Constraint(zero extendn x ):
|x |+n−1
^
|x |−1
¬E(zero extendn x )k ∧
^
E(zero extendn x )k ↔ E(x )k
k =0
k =|x |
BV-Constraint(sign extendn x ):
|x |+n−1
^
|x |−1
E(sign extendn x )k ↔ E(x )|x |−1 ∧
E(sign extendn x )k ↔ E(x )k
k =0
k =|x |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
37/44
BV-Constraint(t ) 2
BV-Constraint(extracti ,j x ):
i −j +1
^
E(extracti ,j )k ↔ E(x )j +k
k =0
BV-Constraint(zero extendn x ):
|x |+n−1
^
|x |−1
¬E(zero extendn x )k ∧
^
E(zero extendn x )k ↔ E(x )k
k =0
k =|x |
BV-Constraint(sign extendn x ):
|x |+n−1
^
|x |−1
E(sign extendn x )k ↔ E(x )|x |−1 ∧
E(sign extendn x )k ↔ E(x )k
k =0
k =|x |
Outline
^
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
37/44
BV-Constraint(t ) 3
BV-Constraint(bvnot x ):
|x |−1
^
E(bvnot x )i ↔ ¬E(x )i
i =0
BV-Constraint(bvand x y ):
|x |−1
^
E(bvand x y )i ↔ E(x )i ∧ E(y )i
i =0
BV-Constraint(bvor x y ):
|x |−1
^
E(bvor x y )i ↔ E(x )i ∨ E(y )i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
38/44
BV-Constraint(t ) 3
BV-Constraint(bvnot x ):
|x |−1
^
E(bvnot x )i ↔ ¬E(x )i
i =0
BV-Constraint(bvand x y ):
|x |−1
^
E(bvand x y )i ↔ E(x )i ∧ E(y )i
i =0
BV-Constraint(bvor x y ):
|x |−1
^
E(bvor x y )i ↔ E(x )i ∨ E(y )i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
38/44
BV-Constraint(t ) 3
BV-Constraint(bvnot x ):
|x |−1
^
E(bvnot x )i ↔ ¬E(x )i
i =0
BV-Constraint(bvand x y ):
|x |−1
^
E(bvand x y )i ↔ E(x )i ∧ E(y )i
i =0
BV-Constraint(bvor x y ):
|x |−1
^
E(bvor x y )i ↔ E(x )i ∨ E(y )i
i =0
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
38/44
BV-Constraint(t ) 4
BV-Constraint(bvshl x y ):
|x |−1
(“bvult y bv|x |,|x | ” ∧
_
ls(x , y , i ))
i =0
|x |−1
∨ (“bvule bv|x |,|x | y ” ∧
^
¬E(bvshl x y )i ))
i =0
ls(x , y , i ) := “y = bv|x |,i ”
∧
i^
−1
¬E(bvshl x y )k
k =0
|x |−1
∧
^
E(bvshl x y )k ↔ E(x )k −i
k =i
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
39/44
BV-Constraint(t ) 4
BV-Constraint(bvshl x y ):
|x |−1
(“bvult y bv|x |,|x | ” ∧
_
ls(x , y , i ))
i =0
|x |−1
∨ (“bvule bv|x |,|x | y ” ∧
^
¬E(bvshl x y )i ))
i =0
ls(x , y , i ) := “y = bv|x |,i ”
∧
i^
−1
¬E(bvshl x y )k
k =0
|x |−1
∧
^
E(bvshl x y )k ↔ E(x )k −i
k =i
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
39/44
BV-Constraint(t ) 5
BV-Constraint(bvlshr x y ):
|x |−1
(“bvult y bv|x |,|x | ” ∧
_
lsr(x , y , i ))
i =0
|x |−1
∨ (“bvule bv|x |,|x | y ” ∧
^
¬E(bvlshr x y )i )
i =0
lsr(x , y , i ) := “y = bv|x |,i ”
|x |−i −1
∧
^
E(bvlshr x y )k ↔ E(x )k +i
k =0
|x |−1
∧
Outline
^
k =|x |−i
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
¬E(bvlshr x y )k
DPLL(T)
QF ABV
July 24, 2017
40/44
BV-Constraint(t ) 5
BV-Constraint(bvlshr x y ):
|x |−1
(“bvult y bv|x |,|x | ” ∧
_
lsr(x , y , i ))
i =0
|x |−1
∨ (“bvule bv|x |,|x | y ” ∧
^
¬E(bvlshr x y )i )
i =0
lsr(x , y , i ) := “y = bv|x |,i ”
|x |−i −1
∧
^
E(bvlshr x y )k ↔ E(x )k +i
k =0
|x |−1
∧
Outline
^
k =|x |−i
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
¬E(bvlshr x y )k
DPLL(T)
QF ABV
July 24, 2017
40/44
BV-Constraint(t ) 6
BV-Constraint(bvashr x y ):
|x |−1
_
(“bvult y bv|x |,|x | ” ∧
asr(x , y , i ))
i =0
|x |−1
∨ (“bvule bv|x |,|x | y ” ∧
^
E(bvashr x y )i ↔ E(x )|x |−1 )
i =0
asr(x , y , i ) := “y = bv|x |,i ”
|x |−i −1
∧
^
E(bvashr x y )k ↔ E(x )k +i
k =0
|x |−1
∧
Outline
^
k =|x |−i
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
E(bvashr x y )k ↔ E(x )|x |−1
DPLL(T)
QF ABV
July 24, 2017
41/44
BV-Constraint(t ) 7
Definition (Volladdierer)
Für Bits a, b, cin :
sum(a, b, cin ) = a ⊕ b ⊕ cin
carry(a, b, cin ) = (a ∧ b) ∨ (a ∧ cin ) ∨ (b ∧ cin )
Definition (Übertragsbits)
Für Listen x , y der Länge n von Bits und ein Bit cin :
(
ci =
cin
i=0
carry(xi −1 , yi −1 , ci −1 ) i > 0
Definition (Addierwerk)
Für Listen x , y der Länge n von Bits und ein Bit cin :
add(x , y , cin ) = (r|x |−1 · · · r0 )
ri = sum(xi , yi , ci )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
42/44
BV-Constraint(t ) 7
Definition (Volladdierer)
Für Bits a, b, cin :
sum(a, b, cin ) = a ⊕ b ⊕ cin
carry(a, b, cin ) = (a ∧ b) ∨ (a ∧ cin ) ∨ (b ∧ cin )
Definition (Übertragsbits)
Für Listen x , y der Länge n von Bits und ein Bit cin :
(
ci =
cin
i=0
carry(xi −1 , yi −1 , ci −1 ) i > 0
Definition (Addierwerk)
Für Listen x , y der Länge n von Bits und ein Bit cin :
add(x , y , cin ) = (r|x |−1 · · · r0 )
ri = sum(xi , yi , ci )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
42/44
BV-Constraint(t ) 7
Definition (Volladdierer)
Für Bits a, b, cin :
sum(a, b, cin ) = a ⊕ b ⊕ cin
carry(a, b, cin ) = (a ∧ b) ∨ (a ∧ cin ) ∨ (b ∧ cin )
Definition (Übertragsbits)
Für Listen x , y der Länge n von Bits und ein Bit cin :
(
ci =
cin
i=0
carry(xi −1 , yi −1 , ci −1 ) i > 0
Definition (Addierwerk)
Für Listen x , y der Länge n von Bits und ein Bit cin :
add(x , y , cin ) = (r|x |−1 · · · r0 )
ri = sum(xi , yi , ci )
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
42/44
BV-Constraint(t ) 8
BV-Constraint(bvadd x y ):
|x |−1
^
E(bvadd x y )i ↔ add(E(x ), E(y ), ⊥)i
i =0
BV-Constraint(bvsub x y ):
|x |−1
^
E(bvsub x y )i ↔ add(E(x ), “bvnot y ”, >)i
i =0
bvmul kann mittels extracti ,j , bvshl und bvadd implementiert
werden
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
43/44
BV-Constraint(t ) 8
BV-Constraint(bvadd x y ):
|x |−1
^
E(bvadd x y )i ↔ add(E(x ), E(y ), ⊥)i
i =0
BV-Constraint(bvsub x y ):
|x |−1
^
E(bvsub x y )i ↔ add(E(x ), “bvnot y ”, >)i
i =0
bvmul kann mittels extracti ,j , bvshl und bvadd implementiert
werden
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
43/44
BV-Constraint(t ) 8
BV-Constraint(bvadd x y ):
|x |−1
^
E(bvadd x y )i ↔ add(E(x ), E(y ), ⊥)i
i =0
BV-Constraint(bvsub x y ):
|x |−1
^
E(bvsub x y )i ↔ add(E(x ), “bvnot y ”, >)i
i =0
bvmul kann mittels extracti ,j , bvshl und bvadd implementiert
werden
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
43/44
Inkrementelles Bit-Blasting
Einige Operationen sind “teuer”
bvmul für n Bits:
n
8
16
32
64
SAT-Variablen
313
1265
5089
20417
Klauseln
1001
4177
17057
68929
Idee: BV-Constraint für “teure” Operationen wird nur hinzugefügt
falls die Formel ohne diese Operationen erfüllbar ist
Alternative: Approximiere die “teuren” Operationen im ersten Schritt
durch uninterpretierte Funktionen
Benutze Ackermanns Reduktion um die uninterpretierten Funktionen
durch Variablen zu ersetzen
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
44/44
Inkrementelles Bit-Blasting
Einige Operationen sind “teuer”
bvmul für n Bits:
n
8
16
32
64
SAT-Variablen
313
1265
5089
20417
Klauseln
1001
4177
17057
68929
Idee: BV-Constraint für “teure” Operationen wird nur hinzugefügt
falls die Formel ohne diese Operationen erfüllbar ist
Alternative: Approximiere die “teuren” Operationen im ersten Schritt
durch uninterpretierte Funktionen
Benutze Ackermanns Reduktion um die uninterpretierten Funktionen
durch Variablen zu ersetzen
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
44/44
Inkrementelles Bit-Blasting
Einige Operationen sind “teuer”
bvmul für n Bits:
n
8
16
32
64
SAT-Variablen
313
1265
5089
20417
Klauseln
1001
4177
17057
68929
Idee: BV-Constraint für “teure” Operationen wird nur hinzugefügt
falls die Formel ohne diese Operationen erfüllbar ist
Alternative: Approximiere die “teuren” Operationen im ersten Schritt
durch uninterpretierte Funktionen
Benutze Ackermanns Reduktion um die uninterpretierten Funktionen
durch Variablen zu ersetzen
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
44/44
Inkrementelles Bit-Blasting
Einige Operationen sind “teuer”
bvmul für n Bits:
n
8
16
32
64
SAT-Variablen
313
1265
5089
20417
Klauseln
1001
4177
17057
68929
Idee: BV-Constraint für “teure” Operationen wird nur hinzugefügt
falls die Formel ohne diese Operationen erfüllbar ist
Alternative: Approximiere die “teuren” Operationen im ersten Schritt
durch uninterpretierte Funktionen
Benutze Ackermanns Reduktion um die uninterpretierten Funktionen
durch Variablen zu ersetzen
Outline
Introduction: SMT
Carsten Sinz, Tomáš Balyo – SAT Solving
DPLL(T)
QF ABV
July 24, 2017
44/44
Herunterladen