model-driven decision procedures for arithmetic
TRANSCRIPT
Model-Driven Decision Procedures for Arithmetic
SYNASC 2013
Leonardo de Moura
Microsoft Research
Logic Engines as a Service
ππππππ3 SAGE
Satisfiability
π₯2 + π¦2 < 1 πππ π₯π¦ > 0.1 sat, π₯ =1
8, π¦ =
7
8
π₯2 + π¦2 < 1 πππ π₯π¦ > 1 unsat, Proof
Is execution path P feasible? Is assertion X violated?
SAGE
Is Formula F Satisfiable?
WI TNESS
Solution/Model
The RISE of Model-Driven Techniques
Saturation x Search
Proof-finding Model-finding
Mo
dels
Pro
ofs
SAT
π1 β¨ Β¬π2, Β¬π1 β¨ π2 β¨ π3, π3
CNF is a set (conjunction) set of clauses
Clause is a disjunction of literals
Literal is an atom or the negation of an atom
π1 = π‘ππ’π, π2 = π‘ππ’π, π3 = π‘ππ’π
Two procedures
Resolution DPLL
Proof-finder Model-finder
Saturation Search
Resolution
Improvements
Delete tautologies π β¨ Β¬π β¨ πΆ
Ordered Resolution
Subsumption (delete redundant clauses)
πΆ π π’ππ π’πππ πΆ β¨ π·
β¦
πΆ β¨ π, π· β¨ Β¬π β πΆ β¨ π·
π, Β¬π β unsat
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Problem
Exponential time and space
Unit Resolution
πΆ β¨ π, Β¬π β πΆ
πΆ subsumes
πΆ β¨ π
DPLL
DPLL = Unit Resolution + Split rule
Split rule π
π, π π, Β¬π
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦,
π₯
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦,
π₯
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π¦, Β¬π¦, π₯
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π¦, Β¬π¦, π₯,
π’ππ ππ‘
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π¦, Β¬π¦, π₯,
π’ππ ππ‘
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦,
Β¬π₯
DPLL
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦
π¦, Β¬π¦, π₯,
π’ππ ππ‘
π₯ β¨ π¦, Β¬π₯ β¨ π¦, π₯ β¨ Β¬π¦, Β¬π₯ β¨ Β¬π¦,
Β¬π₯
CDCL: Conflict Driven Clause Learning
Resolution
DPLL
Proof
Model
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
Applications
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-Based 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
NLSAT (1)
Two kinds of decision
1. case-analysis (Boolean)
π₯2 + π¦2 < 1 β¨ π < π β¨ π₯ π¦ > 1
2. model construction (CAD lifting)
(ββ,βπ) βπ (βπ, π) π (π, π) π (π,β)
π₯4 β π₯2 + 1 + + + + + + +
π₯2 β 1 + 0 - - - 0 +
π₯ - - - 0 + + +
π β π
NLSAT (1)
Parametric calculus: ππ₯πππππ πΉ,π
Finite basis explanation function
Two kinds of decision
1. case-analysis (Boolean)
2. model construction (CAD lifting)
Explanations may contain new literals
They evaluate to false in the current state
NLSAT (2)
Key ideas: Use partial solution to guide the search
π₯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?
NLSAT (2)
Key ideas: Use partial solution to guide the search
π₯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?
NLSAT (3)
Key ideas: Solution based Project/Saturate
Standard project operators are pessimistic. Coefficients can vanish!
NLSAT (4)
Current assignment
π₯ β 0.75 π¦ β 0.75
Conflict π₯2 + π¦2 + π§2 < 1
Key ideas: Lemma Learning
Prevent a Conflict from happening again.
Lemma
β1 < π₯ < 1 β§ π¦ > ππππ‘2 1 β π¦ 2β π₯2 β β₯
Current assignments does not satisfy new constraint.
NLSAT (5)
Key ideas: Nonchronological Backtracking
π = π
π = π
π = 1
π Conflict π₯ π€ = 1
The values chosen for π§ and π¦ are irrelevant.
Machinery
Multivariate & univariate Polynomials
Basic operations, Pseudo-division,
GCD, Resultant, PSC, Factorization,
Root isolation algorithms, Sturm sequences
Binary rationals π
2π
Real Algebraic Numbers
Experimental Results (1) OUR NEW ENGINE
Experimental Results (2)
OUR NEW ENGINE
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
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 β 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 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
Logic as a Service
Model-Based techniques are very promising
http://z3.codeplex.com
http://rise4fun.com/z3
MCSat