internals of smt solvers - github pages
Post on 20-Jul-2022
5 Views
Preview:
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/
top related