SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem und -Algorithmus (DPLL(T)) SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Sebastian Krings 19.05.2015 Überblick SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Einleitung und Algorithmus I Auswahl von Theorien I Kombinieren von Theorien Kombination von Theorien SMT Problem SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Entscheidungsproblem: Gegeben eine (quantorfreie?) FOL Formel und eine (entscheidbare?) Kombination von Theorien τ1 ∪ .. ∪ τn . Gibt es eine Belegung der freien Variablen x1 , .., xm , so dass die Formel wahr ist? Kombination von Theorien SMT Problem - Beispiel SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 Kombination von Theorien SMT Theorie - LIA (Linear Integer Arithmetic) SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 Kombination von Theorien SMT Theorie - EUF (Equality over Uninterpreted Functions) SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 SMT Theorie - Arrays SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 Kombination von Theorien SMT Problem - Lösung? SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 Kombination von Theorien Lazy SMT SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) I Naiver Ansatz: Formel zu Normalform konvertieren, Schrittweise prüfen I I I Teuer? Immer möglich? Lazy Ansatz: SAT Solver zur Enumeration verwenden ohne Normalform explizit zu berechnen Theorien Kombination von Theorien Outline Algorithmus SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings F = CNF_bool ( φ ) while true : r e s , M = check_SAT ( F ) i f r e s == t r u e : M’ = to_T (M) r e s = check_T (M’ ) i f r e s == t r u e : r e t u r n SAT else : F += !M else : r e t u r n UNSAT SAT-level reasoning vs. Theorie? Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien SMT-Problem und -Algorithmus (DPLL(T)) Lazy SMT Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Beispiel Online Algorithmus SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Bisher: Keine enge Integration SAT / SMT I Theorie-Solver kann nur verwerfen oder zustimmen, nicht steuern I Engere Integration im DPLL(T) Algorithmus Kombination von Theorien Wishlist SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) I Backjumping und lernen innerhalb der Theorie I Inkrementelles Lösen I Propagation Theorie nach SAT I Frühzeitiges Verwerfen von Lösungen (in SAT Knoten statt Blättern!) Theorien Kombination von Theorien Outline Algorithmus d e f DPLL−T ( ) : w h i l e True : c o n f l i c t = False i f unit_propagation ( ) : r e s = T. check ( ! a l l _ a s s i g n e d ( ) ) i f r e s == F a l s e : c o n f l i c t = True e l i f r e s == True : c o n f l i c t = theory_propagation () e l i f learn_T_lemmas ( ) : c o n t i n u e e l i f ! all_assigned ( ) : decide () else : build_model ( ) r e t u r n SAT e l s e : c o n f l i c t = True if conflict : lvl , cl s = conflict_analysis () i f l v l < 0 : r e t u r n UNSAT else : backtrack ( l v l ) learn ( cls ) SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Equality over Uninterpreted Functions SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Congruence Closure Algorithmus I Polynomielle Laufzeit I Vollständig für Gleichheit / Nicht vollständig für Ungleichheit Kombination von Theorien SMT-Problem und -Algorithmus (DPLL(T)) Congruence Closure Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Beispiel Lineare Integer Arithmetik SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung I Beispiel: Σxi = 15 I NP vollständiges Problem Häufig numerische Verfahren + Branch and Bound I I I I Numerische / approximative Lösung Branch and Bound: φ := φ ∧ (x ≤ c ∨ c ≤ x) Entscheidbare Unterprobleme durch eigene Algorithmen I I Gleichheit Difference Logic SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Lineare Arithmetik auf Rationals SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Beispiel: Σai ∗ xi = 15 I Numerische Lösungsverfahren (Simplex Algorithmus) I Exponentielle Worst-Case-Laufzeit, meist aber schnell Kombination von Theorien Bitvektoren SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Beispiele: xor / and, .... I Rewriting (z.B. zu Integer) Bit-Blasting I I Constraints auf einzelnen Bits, dann SAT Solver Kombination von Theorien Eager Bit-Blasing SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Komplette Formel wird aufgeblasen I Verlässt DPLL I Schwierig mit anderen Theorien zu Kombinieren Kombination von Theorien Lazy Bit-Blasing SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I Nur Bitvektoren werden aufgeblasen I Nur wenn von DPLL verlangt I Leichter zu Kombinieren I In Praxis derzeit langsamer Kombination von Theorien SMT Problem - Beispiel SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien φ = (x1 > 0) ∧ (x1 < 15) ∧ f (0) = f (x1 ) ⇒ (rd(wr (P, x2 , x3 ), x2 + x1 ) = x3 + 1 Mehr als eine Theorie! Kombination von Theorien Kombination von Theorien SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) I I Wir haben DPLL(T) Offene Fragen: I I I Wie kommen wir zu DPLL(T1 , ..., Tn )? Können bestehende Solver weiter verwendet werden? Wenn ja wann? Performance? Theorien Kombination von Theorien Nelson-Oppen-Kombination SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) I I Kombinationstechnik für Solver Voraussetzungen: I I I Signaturen sind disjunkt Erfüllbaren Formeln sind erfüllbar in einem unendlichen Model Formeln enthalten keine Quantoren Theorien Kombination von Theorien Nelson-Oppen-Kombination SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien I I Kombinationstechnik für Solver Idee: I I Umformen so dass Logiken getrennt Kommunikation über geteilte Variablen Kombination von Theorien Nelson-Oppen-Kombination SMT-Problem und -Algorithmus (DPLL(T)) Sebastian Krings Einleitung SMT-Problem Lazy SMT DPLL(T) Theorien Kombination von Theorien Beispiel
© Copyright 2024 ExpyDoc