a model-constructing satisfiability calculus
TRANSCRIPT
A Model-Constructing Satisfiability Calculus SAT 2014
Dejan JovanoviΔ
SRI International
Leonardo de Moura
Microsoft Research
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
NLSAT: Model-Based Search
Start the Search before Saturate/Project
We saturate on demand
Model guides the saturation
Mo
dels
Pro
ofs
Other examples (for linear arithmetic)
Fourier-Motzkin
Generalizing DPLL to richer logics
[McMillan et al 2009]
Conflict Resolution
[Korovin et al 2009]
X
Other examples
Array Theory by
Axiom Instantiation
Lemmas on Demand
For Theory of Array
[Brummayer-Biere 2009]
βπ, π, π£: π π β π£ π = π£
βπ, π, π, π£: π = π β¨ π π β π£ π = π[π]
X
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)
π₯ β₯ 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 β 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
π₯ β₯ 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
π
New clause
π₯ < 1 β¨ π₯ = 2
π₯ < 1
π₯ < 1 β¨ π, Β¬π β¨ π₯ = 2
π₯ β 1
MCSat
π
New clause
π₯ < 1 β¨ π₯ = 2
π₯ < 1
MCSat prototype: 7k lines of code Deduction Rules
Boolean Resolution
Fourier-Motzkin
Equality Split
Ackermann expansion aka Congruence
Normalization
Check Modulo Assignment
Given a CNF formula πΉ and a set of literals π
πβπππ(πΉ, π)
Check Modulo Assignment
Given a CNF formula πΉ and a set of literals π
πβπππ(πΉ, π)
Output:
SAT, assignment π β π satisfying πΉ
UNSAT, π1, β¦ , ππ β π s.t. πΉ β Β¬π1 β¨ β―β¨ Β¬ππ
Check Modulo Assignment
Given a CNF formula πΉ and a set of literals π
πβπππ(πΉ, π)
Output:
SAT, assignment π β π satisfying πΉ
UNSAT, π1, β¦ , ππ β π s.t. πΉ β Β¬π1 β¨ β―β¨ Β¬ππ
Check Modulo Assignment
πΉ β‘ π β¨ π β¨ π, Β¬π β¨ π, π β¨ π
πβπππ(πΉ, {Β¬π, π})
Check Modulo Assignment
πΉ β‘ π β¨ π β¨ π, Β¬π β¨ π, π β¨ π
πβπππ(πΉ, {Β¬π, π})
UNSAT, {Β¬π}
Check Modulo Assignment
Many Applications:
UNSAT Core generation
MaxSAT
Interpolant generation
Introduced in MiniSAT
Implemented in many SMT solvers
Extending Check Modulo Assignment for MCSAT
πΉ π₯ , π¦ π¦ β π£
SAT, π₯ β π€ , πΉ π€ , π£ is true
Extending Check Modulo Assignment for MCSAT
πΉ π₯ , π¦ π¦ β π£
SAT, π₯ β π€ , πΉ π€ , π£ is true
UNSAT, π[π¦ ] s.t. πΉ π₯ , π¦ β π[π¦ ], π[π£ ] is false
No-good sampling
πΆβπππ πΉ π₯ , π¦ , π¦ β πΌ1 = unsat π1 π¦ , πΊ1 = π1 π¦ ,
πΌ2 β πΊ1, πΆβπππ πΉ π₯ , π¦ , π¦ β πΌ2 = unsat π2 π¦ , πΊ2 = πΊ1 β§ π2 π¦ ,
πΌ3 β πΊ2, πΆβπππ πΉ π₯ , π¦ , π¦ β πΌ3 = unsat π3 π¦ , πΊ3 = πΊ2 β§ π3 π¦ ,
β¦
πΌπ β πΊπβ1, πΆβπππ πΉ π₯ , π¦ , π¦ β πΌπ = unsat ππ π¦ , πΊπ = πΊπβ1 β§ ππ π¦ ,
β¦
Finite decomposition property:
The sequence is finite
πΊπ approximates
βπ₯ , πΉ π₯ , π¦
Computing Interpolants using Extended Check Modulo Assignment
Given: π΄ π₯ , π¦ β§ π΅[π¦ , π§ ]
Ouput: πΌ π¦ s.t.
π΅[π¦ , π§ ] β πΌ π¦ ,
π΄ π₯ , π¦ β§ πΌ π¦ is unsat
Computing Interpolants using Extended Check Modulo Assignment
πΌ π¦ βΆ= π‘ππ’π
Loop
Solve π΄ π₯ , π¦ β§ πΌ π¦ If UNSAT return πΌ π¦
Let solution be {π₯ β π€ , π¦ β π£ }
Check(π΅[π¦ , π§ ], {π¦ β π£ }) If SAT return SAT
πΌ π¦ := πΌ π¦ β§ π[π¦ ]
Conclusion
Model-Based techniques are very promising
MCSat is a more faithful lift of CDCL than DPLL(T)
Prototypes:
NLSAT source code is available in Z3
http://z3.codeplex.com
MCSAT (Linear arithemetic + unintepreted functions)
https://github.com/dddejan/
New versions coming soon!
SAT + Theory Solvers
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]
SAT + Theory Solvers
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
SAT + Theory Solvers
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
SAT + Theory Solvers
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
SAT + Theory Solvers
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
SAT + Theory Solvers
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