internals of smt solvers - github pages
TRANSCRIPT
Internals of SMT Solvers
Leonardo de Moura
Microsoft Research
Acknowledgements
β’ Dejan Jovanovic (SRI International, NYU)
β’ Grant Passmore (Univ. Edinburgh)
Herbrand Award 2013
Greg Nelson
What is a SMT Solver?
Multiple Approaches
is a portfolio of solvers
Preprocessing
Simplify
Variable elimination
if-then-else elimination
β¦
πΉ
Solver
Modular Architecture is a βmust haveβ
Equivalence Preserving Simplifications
Simplify
πΉ
πΉβ²
Examples: π₯ + π¦ + 1 β π₯ β 2 β¦ π¦ β 1
π β§ π‘ππ’π β§ π β¦ π
Preprocessor API
Preprocessor
πΉ
πΉβ²
Model
Converter
Proof
Converter
πΉ and πΉβ may be only equisatisfiable
Example
Variable Elimination
Proof builder
Model builder
Example
Variable Elimination
Proof builder
Model builder
π
π, π(π) = π(π) + 1
Example
Variable Elimination
Proof builder
Model builder
π β 5
π β 5, π β 6
Model Converters
Extension Filter
Model builder
π
π, π(π) = π(π) + 1
Model Converter: Filter
π β¨ (π β§ β)
Tseitin CNF converter
π β¨ π, Β¬π β¨ π, Β¬π β¨ β, π β¨ Β¬π β¨ Β¬β
Model builder
π
π β π
Model Converter: Filter
π β¨ (π β§ β)
Tseitin CNF converter
π β¨ π, Β¬π β¨ π, Β¬π β¨ β, π β¨ Β¬π β¨ Β¬β
Model builder
π β π‘, π β π, π β π, β β π‘
π β π‘, π β π, β β π‘
Model Converter: Extension + Filter
π₯: πππ‘π£ππ 4 , π¦, π§: πππ‘π£ππ[2] π₯ = ππππππ‘(π¦, π§)
Bit-blaster
π₯3 β π¦1, π₯2 β π¦0, π₯1 β π§1, π₯0 β π§0
Model builder
π
πβ²
Preprocessors
1. Produce Equivalent Formula
2. Produce Equisatisfiable Formula
3. Assume βclosed worldβ (non-incremental)
Example: symmetry reduction
Simple QF_BV (bit-vector) solver
Simplify
Variable elimination
πΉ
Bit-blasting
Tseitin CNF converter SAT Solver
Under/Over-Approximations
Under-approximation
unsat answers cannot be trusted
Over-approximation
sat answers cannot be trusted
Under/Over-Approximations
Under-approximation
model finders
Over-approximation
proof finders
Under/Over-Approximations
Under-approximation
S S Sβ
Over-approximation
S S \ Sβ
Under/Over-Approximations
Under-approximation
Example: QF_NIA model finders
add bounds to unbounded variables (and blast)
Over-approximation
Example: Boolean abstraction
Under/Over-Approximations
Combining under and over is bad!
sat and unsat answers cannot be trusted.
Tracking: under/over-approximations
Proof and Model converters can check if the resultant models and proofs are valid.
CEGAR is your friend Counter-Example Guided Abstract Refinement
procedure Solver(F)
Fp := Abstract(F)
loop
(R, M) := Solve(Fp)
if R = UNSAT then return UNSAT
Rβ := Check(F, M)
if Rβ = SAT then return SAT
Fp := Refine(F, Fp, M)
Using over-approximation
Model
CEGAR is your friend Counter-Example Guided Abstract Refinement
procedure Solver(F)
Fp := Abstract(F)
loop
(R, Pr) := Solve(Fp)
if R = SAT then return SAT
Rβ := Check(F, Pr)
if Rβ = UNSAT then return UNSAT
Fp := Refine(F, Fp, M)
Using under-approximation
Proof
CEGAR is your friend Counter-Example Guided Abstract Refinement
Refinements:
Incremental Solver
Run over and under-approximation is parallel
Uninterpreted Functions by CEGAR
Suppose we have a Solver that does not support uninterpreted functions (example: QF_BV solver)
Congruence Rule: π₯1 = π¦1, β¦ , π₯π = π¦π β π(π₯1, β¦ , π₯π) = π(π¦1, β¦ , π¦π)
Uninterpreted Functions by CEGAR
Congruence Rule: π₯1 = π¦1, β¦ , π₯π = π¦π β π(π₯1, β¦ , π₯π)
Abstract: replace each f-application with a fresh variable
(over-approximation)
π = π + 1, π(π β 1) = π, π(π) β π
π = π + 1, π1 = π, π2 β π
π1 β‘ π π β 1 ,
π2 β‘ π(π)
Uninterpreted Functions by CEGAR
Congruence Rule: π₯1 = π¦1, β¦ , π₯π = π¦π β π(π₯1, β¦ , π₯π)
Check: check if congruence rule is satisfied
π = π + 1, π1 = π, π2 β π
π1 β‘ π π β 1 ,
π2 β‘ π(π)
π β 1, π β 0, π β 0, π1 β 0, π2 β 1
Uninterpreted Functions by CEGAR
Congruence Rule: π₯1 = π¦1, β¦ , π₯π = π¦π β π(π₯1, β¦ , π₯π)
Refine: expand congruence axiom π β 1 = π β π1 = π2
π = π + 1, π1 = π, π2 β π
π1 β‘ π π β 1 ,
π2 β‘ π(π)
π β 1, π β 0, π β 0, π1 β 0, π2 β 1
Uninterpreted Functions by CEGAR
Congruence Rule: π₯1 = π¦1, β¦ , π₯π = π¦π β π(π₯1, β¦ , π₯π)
Refine: expand congruence axiom π β 1 = π β π1 = π2
π = π + 1, π1 = π, π2 β π, (π β 1 = π β π1 = π2)
unsat
π β 1 β π β¨ π1 = π2
UF by CEGAR
Simple QF_UFBV Solver
QF_BV solver
AUF by CEGAR
Simple QF_AUFBV Solver arrays on top of UF
QF_BV solver
Lemmas on Demand For Theory of Arrays [Brummayer-Biere 2009]
Simple UFBV Solver model-based quantifier instantiation
MBQI
UF by CEGAR
QF_BV solver
Efficiently solving quantified bit-vector formulas [Wintersteiger at al 2010]
Simple QF_NIA βsolverβ by CEGAR nonlinear integer arithmetic
Hilbertβs 10th Problem
DPRM theorem: QF_NIA is undecidable
Idea: use (under-approximation) CEGAR
1. Add lower/upper bounds to all variables, and convert into QF_BV
2. If SAT done
3. Otherwise, refine: increase lower/upper bounds
Lazy SMT as CEGAR
Suppose we have a Solver that can only process a conjunction of literals.
Examples:
Congurence Closure (UF),
Simplex (Linear Real Arithmetic)
Lazy SMT as CEGAR: 1. Abstract
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1, p2, (p3 p4) p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
[Audemard et al - 2002], [Barrett et al - 2002], [de Moura et al - 2002]
[Flanagan et al - 2003], β¦
Lazy SMT as CEGAR: 2. Solve
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
p1, p2, (p3 p4)
SAT Solver
Lazy SMT as CEGAR: 2. Solve
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
p1, p2, (p3 p4)
SAT Solver
Assignment p1, p2, p3, p4
Lazy SMT as CEGAR: 3. Check
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1, p2, (p3 p4)
SAT Solver
Assignment p1, p2, p3, p4
p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
x 0, y = x + 1,
(y > 2), y < 1
Lazy SMT as CEGAR: 3. Check
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1, p2, (p3 p4)
SAT Solver
Assignment p1, p2, p3, p4
p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
x 0, y = x + 1,
(y > 2), y < 1
Theory Solver
Unsatisfiable
x 0, y = x + 1, y < 1
Lazy SMT as CEGAR: 4. Refine
Basic Idea x 0, y = x + 1, (y > 2 y < 1)
p1, p2, (p3 p4)
SAT Solver
Assignment p1, p2, p3, p4
p1 (x 0), p2 (y = x + 1),
p3 (y > 2), p4 (y < 1)
x 0, y = x + 1,
(y > 2), y < 1
Theory Solver
Unsatisfiable
x 0, y = x + 1, y < 1
New Lemma
p1p2p4
Lazy SMT as CEGAR: 4. Refine
Basic Idea
Theory Solver
Unsatisfiable
x 0, y = x + 1, y < 1
New Lemma
p1p2p4
AKA
Theory conflict
Lazy SMT as CEGAR: refinements
Many refinements:
Incrementality
Efficient Backtracking
Efficient Lemma Generation
Theory propagation - DPLL(T) [Ganzinger et all β 2004]
Many SMT solvers are based on DPLL(T)
DPLL(T) weakness
Theories are βsecond-class citizensβ.
DPLL(T) is not model-driven (key property of CDCL).
Mo
dels
Pro
ofs
CDCL: Conflict Driven Clause Learning
Resolution
DPLL
Proof
Model
DPLL(T) weakness
DPLL(T) works well only for βeasyβ theories.
Examples:
Uninterpreted functions
Difference logic (π₯ β π¦ β€ π)
Linear real arithmetic
βHard theoriesβ:
Linear integer arithmetic
Arrays
Nonlinear real arithmetic
Example: Nonlinear Real Arithmetic
π₯2 β 4π₯ + π¦2 β π¦ + 8 < 1
π₯π¦ β 2π₯ β 2π¦ + 4 > 1
PSPACE
QF_NRA
NP-hardness
x is βBooleanβ x (x-1) = 0
x or y or z x + y + z > 0
PSPACE membership
Canny β 1988,
Grigorβev β 1988
NP
The RISE of Model-Driven Techniques in SMT
Saturation x Search
Proof-finding Model-finding
Mo
dels
Pro
ofs
Two procedures
Resolution DPLL
Proof-finder Model-finder
Saturation Search
CDCL is model-driven proof search
Linear Arithmetic
Fourier-Motzkin Simplex
Proof-finder Model-finder
Saturation Search
Fourier-Motzkin
Very similar to Resolution
Exponential time and space
π‘1 β€ ππ₯, ππ₯ β€ π‘2
ππ‘1 β€ πππ₯, πππ₯ β€ ππ‘2
ππ‘1 β€ ππ‘2
Polynomial Constraints
π₯2 β 4π₯ + π¦2 β π¦ + 8 < 1
π₯π¦ β 2π₯ β 2π¦ + 4 > 1
AKA Existential Theory of the Reals
R
CAD βBig Pictureβ
1. Project/Saturate set of polynomials
2. Lift/Search: Incrementally build assignment π£: π₯π β πΌπ
Isolate roots of polynomials ππ(πΆ, π₯)
Select a feasible cell πΆ, and assign π₯π some πΌπ β πΆ
If there is no feasible cell, then backtrack
CAD βBig Pictureβ
π₯2 + π¦2 β 1 < 0
π₯ π¦ β 1 > 0 1. Saturate
π₯4 β π₯2 + 1
π₯
π₯2 β 1
(ββ, βπ) βπ (βπ, π) π (π, π) π (π, β)
π₯4 β π₯2 + 1 + + + + + + +
π₯2 β 1 + 0 - - - 0 +
π₯ - - - 0 + + +
2. Search
CAD βBig Pictureβ
ππ + ππ β π < 0
π π β π > 0 1. Saturate
π₯4 β π₯2 + 1
π₯
π₯2 β 1
(ββ, βπ) βπ (βπ, π) π (π, π) π (π, β)
π₯4 β π₯2 + 1 + + + + + + +
π₯2 β 1 + 0 - - - 0 +
π₯ - - - 0 + + +
πβ π
(ββ, βπ
π) β
π
π (β
π
π, β)
4 + π¦2 β 1 + + +
β2y β 1 + 0 -
2. Search
CAD βBig Pictureβ
ππ + ππ β π < π
π₯ π¦ β 1 > 0 1. Saturate
π₯4 β π₯2 + 1
π₯
π₯2 β 1
(ββ, βπ) βπ (βπ, π) π (π, π) π (π, β)
π₯4 β π₯2 + 1 + + + + + + +
π₯2 β 1 + 0 - - - 0 +
π₯ - - - 0 + + +
πβ π
(ββ, βπ
π) β
π
π (β
π
π, β)
π + ππ β π + + +
β2y β 1 + 0 -
2. Search
CONFLICT
NLSat: Model-Driven Search
Static x Dynamic
Optimistic approach
Key ideas
Start the Search before Saturate/Project
We saturate on demand
Model guides the saturation
Mo
dels
Pro
ofs
Experimental Results (1) OUR NEW ENGINE
Experimental Results (2)
OUR NEW ENGINE
Other examples
Delayed
Theory Combination
[Bruttomesso et al 2006]
Model-Based
Theory Combination X
Other examples
Array Theory by
Axiom Instantiation
Lemmas on Demand
For Theory of Array
[Brummayer-Biere 2009]
βπ, π, π£: π π β π£ π = π£
βπ, π, π, π£: π = π β¨ π π β π£ π = π[π]
X
Other examples (for linear arithmetic)
Fourier-Motzkin
Generalizing DPLL to richer logics
[McMillan et al 2009]
Conflict Resolution
[Korovin et al 2009]
X
Saturation: successful instances
Polynomial time procedures
Gaussian Elimination
Congruence Closure
MCSat
Model-Driven SMT
Lift ideas from CDCL to SMT
Generalize ideas found in model-driven approaches
Easier to implement
Model construction is explicit
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Propagations
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Propagations
π₯ β₯ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Propagations
π₯ β₯ 1 π¦ β₯ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Boolean Decisions
π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Semantic Decisions
π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β 2
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Conflict
π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β 2
We canβt find a value for π¦ s.t. 4 + π¦2 β€ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Conflict
π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β 2
We canβt find a value for π¦ s.t. 4 + π¦2 β€ 1
Learning that Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯= 2) is not productive
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1
Learning that Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯= 2) is not productive
Β¬(π₯ = 2)
Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯ = 2)
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1
Learning that Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯= 2) is not productive
Β¬(π₯ = 2)
Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯ = 2)
π₯ β 3
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1
Learning that Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯= 2) is not productive
Β¬(π₯ = 2)
Β¬ π₯2 + π¦2 β€ 1 β¨ Β¬(π₯ = 2)
π₯ β 3
βSameβ Conflict
We canβt find a value for π¦ s.t. 9 + π¦2 β€ 1
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2
Conflict
π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β 2
π¦
π₯
π₯2 + π¦2 β€ 1 π₯ β 2
β1 β€ π₯, π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1
Conflict
Β¬ π₯ β₯ 2 β¨ Β¬(π₯ β€ 1)
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1
Learned by resolution
Β¬ π₯ β₯ 2 β¨ Β¬(π₯2 + π¦2 β€ 1)
MCSat
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 Β¬(π₯2 + π¦2 β€ 1)
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Β¬ π₯ β₯ 2 β¨ Β¬(π₯2 + π¦2 β€ 1)
MCSat: FM Example
βπ₯ + π§ + 1 β€ 0, π₯ β π¦ β€ 0 π§ β 0, π¦ β 0
π§ + 1 β€ π₯, π₯ β€ π¦
β‘
1 β€ π₯, π₯ β€ 0
βπ₯ + π§ + 1 β€ 0 π§ β 0 π¦ β 0 π₯ β π¦ β€ 0
We canβt find a value of π₯
MCSat: FM Example
βπ₯ + π§ + 1 β€ 0, π₯ β π¦ β€ 0 π§ β 0, π¦ β 0
βπ₯: βπ₯ + π§ + 1 β€ 0 β§ π₯ β π¦ β€ 0
π§ + 1 β π¦ β€ 0
βπ₯ + π§ + 1 β€ 0 π§ β 0 π¦ β 0 π₯ β π¦ β€ 0
Β¬ βπ₯ + π§ + 1 β€ 0 β¨ Β¬ π₯ β π¦ β€ 0 β¨ π§ + 1 β π¦ β€ 0
Fourier-Motzkin
MCSat: FM Example
βπ₯ + π§ + 1 β€ 0 π§ β 0 π§ + 1 β π¦ β€ 0 π₯ β π¦ β€ 0
Β¬ βπ₯ + π§ + 1 β€ 0 β¨ Β¬ π₯ β π¦ β€ 0 β¨ π§ + 1 β π¦ β€ 0
MCSat: FM Example
βπ₯ + π§ + 1 β€ 0 π§ β 0 π§ + 1 β π¦ β€ 0 π₯ β π¦ β€ 0
Β¬ βπ₯ + π§ + 1 β€ 0 β¨ Β¬ π₯ β π¦ β€ 0 β¨ π§ + 1 β π¦ β€ 0
π¦ β 1
βπ₯ + π§ + 1 β€ 0, π₯ β π¦ β€ 0 π§ β 0, π¦ β 1
π§ + 1 β€ π₯, π₯ β€ π¦
β‘
1 β€ π₯, π₯ β€ 1
MCSat: FM Example
βπ₯ + π§ + 1 β€ 0 π§ β 0 π§ + 1 β π¦ β€ 0 π₯ β π¦ β€ 0
Β¬ βπ₯ + π§ + 1 β€ 0 β¨ Β¬ π₯ β π¦ β€ 0 β¨ π§ + 1 β π¦ β€ 0
π¦ β 1
βπ₯ + π§ + 1 β€ 0, π₯ β π¦ β€ 0 π§ β 0, π¦ β 1
π§ + 1 β€ π₯, π₯ β€ π¦
β‘
1 β€ π₯, π₯ β€ 1
π₯ β 1
MCSat: Another Example β4π₯π¦ β 4π₯ + π¦ > 1, π₯2 + π¦2 < 1, π₯3 + 2π₯2 + 3π¦2 β 5 < 0
MCSat: Another Example
π₯3 + 2π₯2 + 3π¦2 β 5 < 0
π₯2 + π¦2 < 1
β4π₯π¦ β 4π₯ + π¦ > 1
Feasible Region
Starting search Partial solution: π₯ β 0.5
Can we extend it to π¦?
What is the core?
β4π₯π¦ β 4π₯ + π¦ > 1, π₯2 + π¦2 < 1, π₯3 + 2π₯2 + 3π¦2 β 5 < 0
MCSat: Another Example
π₯3 + 2π₯2 + 3π¦2 β 5 < 0
π₯2 + π¦2 < 1
β4π₯π¦ β 4π₯ + π¦ > 1
Feasible Region
Starting search Partial solution: π₯ β 0.5
Can we extend it to π¦?
What is the core?
β4π₯π¦ β 4π₯ + π¦ > 1, π₯2 + π¦2 < 1, π₯3 + 2π₯2 + 3π¦2 β 5 < 0
MCSat β Finite Basis
Every theory that admits quantifier elimination has a finite basis (given a fixed assignment order)
πΉ[π₯, π¦1, β¦ , π¦π] π¦1 β πΌ1, β¦ , π¦π β πΌπ
βπ₯: πΉ[π₯, π¦1, β¦ , π¦π]
πΆ1[π¦1, β¦ , π¦π] β§ β― β§ πΆπ[π¦1, β¦ , π¦π]
Β¬πΉ π₯, π¦1, β¦ , π¦π β¨ πΆπ[π¦1, β¦ , π¦π]
MCSat β Finite Basis
πΉ1[π₯1]
πΉ2[π₯1,π₯2]
πΉπ[π₯1,π₯2, β¦ , π₯πβ1, π₯π]
πΉπβ1[π₯1,π₯2, β¦ , π₯πβ1]
β¦
MCSat β Finite Basis
πΉ1[π₯1]
πΉ2[π₯1,π₯2]
πΉπ[π₯1,π₯2, β¦ , π₯πβ1, π₯π]
πΉπβ1[π₯1,π₯2, β¦ , π₯πβ1]
β¦
MCSat β Finite Basis
πΉ1[π₯1]
πΉ2[π₯1,π₯2]
πΉπ[π₯1,π₯2, β¦ , π₯πβ1, π₯π]
πΉπβ1[π₯1,π₯2, β¦ , π₯πβ1]
β¦
MCSat β Finite Basis
πΉ1[π₯1]
πΉ2[π₯1,π₯2]
πΉπ[π₯1,π₯2, β¦ , π₯πβ1, π₯π]
πΉπβ1[π₯1,π₯2, β¦ , π₯πβ1]
β¦
MCSat β Finite Basis
Every βfiniteβ theory has a finite basis Example: Fixed size Bit-vectors
πΉ[π₯, π¦1, β¦ , π¦π] π¦1 β πΌ1, β¦ , π¦π β πΌπ
Β¬πΉ π₯, π¦1, β¦ , π¦π β¨ Β¬(π¦1 = πΌ1) β¨ β― β¨ Β¬(π¦π= πΌπ)
MCSat β Finite Basis
Theory of uninterpreted functions has a finite basis
Theory of arrays has a finite basis [Brummayer- Biere 2009]
In both cases the Finite Basis is essentially composed of equalities between existing terms.
MCSat: Uninterpreted Functions
π = π + 1, π π β 1 < π, π π > π
π = π + 1, π π < π, π π > π, π = π β 1
π = π + 1, π π < π, π π > π, π = π β 1
Treat π(π) and π(π) as variables Generalized variables
MCSat: Uninterpreted Functions
π = π + 1, π π < π, π π > π, π = π β 1
π β 0 π β 0 π(π) β 0 π(π) β 2
Conflict: π π and π π must be equal
Β¬ π = π β¨ π π = π(π)
MCSat: Uninterpreted Functions
π = π + 1, π π < π, π π > π, π = π β 1
π β 0 π β 0 π(π) β 0
Β¬ π = π β¨ π π = π(π)
π = π
(Semantic) Propagation
MCSat: Uninterpreted Functions
π = π + 1, π π < π, π π > π, π = π β 1
π β 0 π β 0 π(π) β 0
Β¬ π = π β¨ π π = π(π)
π = π π π = π(π)
MCSat: Uninterpreted Functions
π = π + 1, π π < π, π π > π, π = π β 1
π β 0 π β 0 π(π) β 0
Β¬ π = π β¨ π π = π(π)
π = π π π = π(π) π(π) β 0
MCSat β Finite Basis
We can also use literals from the finite basis in decisions. Application: simulate branch&bound for bounded linear integer arithmetic
LP solution:
1 2 3 4 5 6 π₯1
1
2
3
4
5
6
0
π₯2
π₯1 β₯ 1 π₯1 β€ 0
π₯1 = 1 π₯2 = 2
π₯1 = 0 π₯2 = 3
π₯1 = 0.8 π₯2 = 2.4
MCSat: Termination
Propagations
Boolean Decisions
Semantic Decisions
MCSat
β»
Propagations
Boolean Decisions
Semantic Decisions
MCSat
β»
Propagations
Boolean Decisions
Semantic Decisions
MCSat
|πΉππππ‘ππ΅ππ ππ |
β¦
Maximal Elements
β¦
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Conflict
Β¬ π₯ β₯ 2 β¨ Β¬(π₯ β€ 1)
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Conflict
Β¬ π₯ β₯ 2 β¨ Β¬(π₯ β€ 1)
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 Β¬(π₯2 + π¦2 β€ 1)
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Β¬ π₯ β₯ 2 β¨ Β¬(π₯2 + π¦2 β€ 1)
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 π₯2 + π¦2 β€ 1 π₯ β€ 1
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Conflict
Β¬ π₯ β₯ 2 β¨ Β¬(π₯ β€ 1)
π₯ β₯ 2, Β¬π₯ β₯ 1 β¨ π¦ β₯ 1 , (π₯2 + π¦2 β€ 1 β¨ π₯π¦ > 1)
π₯ β₯ 2 π₯ β₯ 1 π¦ β₯ 1 Β¬(π₯2 + π¦2 β€ 1)
Β¬(π₯2 + π¦2 β€ 1) β¨ π₯ β€ 1 Β¬ π₯ β₯ 2 β¨ Β¬(π₯2 + π¦2 β€ 1)
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
Conflict (evaluates to false)
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
New clause
π₯ < 1 β¨ π₯ = 2
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
New clause
π₯ < 1 β¨ π₯ = 2
π₯ < 1
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
New clause
π₯ < 1 β¨ π₯ = 2
π₯ < 1
MCSat: Architecture
Arithmetic
Boolean Lists
Arrays
MCSat: development
MCSat prototype: 7k lines of code Deduction Rules
Boolean Resolution
Fourier-Motzkin
Equality Split
Ackermann expansion aka Congruence
Normalization
MCSat: preliminary results prototype: 7k lines of code
QF_LRA
MCSat: preliminary results prototype: 7k lines of code
QF_UFLRA and QF_UFLIA
Conclusion
Mode-driven techniques are very promising
Preprocessing
MCSat: new framework for developing SMT solvers MCSat generalizes NLSat
Modular architecture
CEGAR
Resources: Papers
The Strategy Challenge in SMT Solving, L. de Moura and G. Passmore.
http://research.microsoft.com/en-us/um/people/leonardo/files/smt-strategy.pdf
Solving non-linear arithmetic, D. Jovanovic and L. de Moura
http://research.microsoft.com/en-us/um/people/leonardo/files/IJCAR2012.pdf
A Model Constructing Satisfiability Calculus, L. de Moura and D. Jovanonic
http://research.microsoft.com/en-us/um/people/leonardo/files/mcsat.pdf
The Design and Implementation of the Model Constructing Satisfiability Calculus,
D. Jovanovic, C. Barrett , L. de Moura
http://research.microsoft.com/en-us/um/people/leonardo/mcsat_design.pdf
Resources: Source Code
nlsat https://z3.codeplex.com/SourceControl/latest#src/nlsat/
mcsat https://github.com/dddejan/CVC4/tree/mcsat
tactic/preprocessors https://z3.codeplex.com/SourceControl/latest#src/tactic/