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