Transcript part 1

Decision methods for arithmetic
Third summer school on formal methods
Leonardo de Moura
Microsoft Research
Symbolic Reasoning
Software analysis/verification tools
need some form of symbolic reasoning
Logic is β€œThe Calculus of Computer Science”
Zohar Manna
Saturation x Search
Model-finding
Proofs
Proof-finding
Models
SAT
𝑝1 ∨ ¬π‘2,
𝑝1 = π‘‘π‘Ÿπ‘’π‘’,
¬π‘1 ∨ 𝑝2 ∨ 𝑝3,
𝑝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
Two procedures
Resolution
Proof-finder
Saturation
DPLL
Model-finder
Search
Resolution
𝐢 ∨ 𝑙, 𝐷 ∨ ¬π‘™ β‡’ 𝐢 ∨ 𝐷
𝑙, ¬π‘™
β‡’ unsat
Improvements
Delete tautologies 𝑙 ∨ ¬π‘™ ∨ 𝐢
Ordered Resolution
Subsumption (delete redundant clauses)
𝐢 π‘ π‘’π‘π‘ π‘’π‘šπ‘’π‘  𝐢 ∨ 𝐷
…
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Example
Resolution: Problem
Exponential time and space
Unit Resolution
𝐢 ∨ 𝑙, ¬π‘™
β‡’ 𝐢
𝐢
subsumes
πΆβˆ¨π‘™
Complete for Horn Clauses
¬π‘ž1 ∨ … ∨ ¬π‘žπ‘› ∨ 𝑝
DPLL
Split rule
𝑆
𝑆, 𝑝
𝑆, ¬π‘
DPLL = Unit Resolution + Split rule
DPLL
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦,
π‘₯
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦
DPLL
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦,
π‘₯
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦
DPLL
π‘₯ ∨ 𝑦,
𝑦,
¬π‘¦,
π‘₯
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦
DPLL
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
𝑦,
¬π‘¦,
π‘₯,
π‘’π‘›π‘ π‘Žπ‘‘
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦
DPLL
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
𝑦,
¬π‘¦,
π‘₯,
π‘’π‘›π‘ π‘Žπ‘‘
π‘₯ ∨ ¬π‘¦,
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦,
¬π‘₯
¬π‘₯ ∨ ¬π‘¦
DPLL
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
𝑦,
¬π‘¦,
π‘₯,
π‘’π‘›π‘ π‘Žπ‘‘
π‘₯ ∨ ¬π‘¦,
π‘₯ ∨ 𝑦,
¬π‘₯ ∨ 𝑦,
π‘₯ ∨ ¬π‘¦,
¬π‘₯ ∨ ¬π‘¦,
¬π‘₯
¬π‘₯ ∨ ¬π‘¦
CDCL: Conflict Driven Clause Learning
DPLL
Resolution
Model
Proof
MCSat
π‘₯ β‰₯ 2,
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
MCSat
π‘₯ β‰₯ 2,
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
π‘₯β‰₯2
Propagations
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
π‘₯β‰₯1
Propagations
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦β‰₯1
Propagations
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
Decisions
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1 π‘₯ β†’ 2
Model Assignments
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1 π‘₯ β†’ 2
Model Assignments
We can’t falsify any fact in the trail.
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1 π‘₯ β†’ 2
Conflict
We can’t find a value of 𝑦
s.t. 4 + 𝑦 2 ≀ 1
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1 π‘₯ β†’ 2
Conflict
We can’t find a value of 𝑦
s.t. 4 + 𝑦 2 ≀ 1
Learning that
¬ π‘₯ 2 + 𝑦 2 ≀ 1 ∨ ¬(π‘₯= 2)
is not productive
π‘₯ β‰₯ 2,
π‘₯β‰₯2
𝑦
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1 π‘₯ β†’ 2
Conflict
π‘₯2 + 𝑦2 ≀ 1
π‘₯
π‘₯β†’2
βˆ’1 ≀ π‘₯, π‘₯ ≀ 1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
π‘₯≀1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
π‘₯≀1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
Conflict
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ ≀ 1)
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
Learned by resolution
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
MCSat
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬(π‘₯ 2 + 𝑦 2 ≀ 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 , … , π‘¦π‘š ]
¬πΉ π‘₯1 , … , π‘₯𝑛 , 𝑦1 , … , π‘¦π‘š ∨ πΆπ‘˜ [𝑦1 , … , π‘¦π‘š ]
MCSat – Finite Basis
𝐹𝑛 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 , π‘₯𝑛 ]
πΉπ‘›βˆ’1 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 ]
…
𝐹2 [π‘₯1, π‘₯2 ]
𝐹1 [π‘₯1 ]
MCSat – Finite Basis
𝐹𝑛 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 , π‘₯𝑛 ]
πΉπ‘›βˆ’1 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 ]
…
𝐹2 [π‘₯1, π‘₯2 ]
𝐹1 [π‘₯1 ]
MCSat – Finite Basis
𝐹𝑛 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 , π‘₯𝑛 ]
πΉπ‘›βˆ’1 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 ]
…
𝐹2 [π‘₯1, π‘₯2 ]
𝐹1 [π‘₯1 ]
MCSat – Finite Basis
𝐹𝑛 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 , π‘₯𝑛 ]
πΉπ‘›βˆ’1 [π‘₯1, π‘₯2 , … , π‘₯π‘›βˆ’1 ]
…
𝐹2 [π‘₯1, π‘₯2 ]
𝐹1 [π‘₯1 ]
MCSat – Finite Basis
Every β€œfinite” theory has a finite basis
𝐹[π‘₯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: Termination
Propagations
Decisions
Model Assignments
MCSat
≻
Propagations
Decisions
Model Assignments
MCSat
≻
Propagations
Decisions
Model Assignments
MCSat
Maximal Elements
…
|πΉπ‘–π‘›π‘–π‘‘π‘’π΅π‘Žπ‘ π‘–π‘ |
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
Conflict
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ ≀ 1)
π‘₯≀1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
Conflict
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ ≀ 1)
π‘₯ β‰₯ 2,
π‘₯β‰₯2
π‘₯≀1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
π‘₯ β‰₯ 2,
π‘₯β‰₯2
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
𝑦 β‰₯ 1 π‘₯2 + 𝑦2 ≀ 1
Conflict
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ ≀ 1)
π‘₯ β‰₯ 2,
π‘₯β‰₯2
π‘₯≀1
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
¬π‘₯ β‰₯ 1 ∨ 𝑦 β‰₯ 1 ,
π‘₯β‰₯1
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
(π‘₯ 2 + 𝑦 2 ≀ 1 ∨ π‘₯𝑦 > 1)
𝑦 β‰₯ 1 ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬ π‘₯ β‰₯ 2 ∨ ¬(π‘₯ 2 + 𝑦 2 ≀ 1)
¬(π‘₯ 2 + 𝑦 2 ≀ 1) ∨ π‘₯ ≀ 1
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
¬π‘ ∨ π‘₯ = 2
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
𝑝
¬π‘ ∨ π‘₯ = 2
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
¬π‘ ∨ π‘₯ = 2
𝑝
Conflict (evaluates to false)
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
¬π‘ ∨ π‘₯ = 2
𝑝
New clause
π‘₯ <1∨π‘₯ =2
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
¬π‘ ∨ π‘₯ = 2
𝑝
New clause
π‘₯ <1∨π‘₯ =2
π‘₯<1
MCSat
π‘₯ < 1 ∨ 𝑝,
π‘₯β†’1
¬π‘ ∨ π‘₯ = 2
𝑝
New clause
π‘₯ <1∨π‘₯ =2
π‘₯<1
MCSat: Architecture
Arithmetic
Arrays
Boolean
Lists
MCSat: development