a model-constructing satisfiability calculus

90
A Model-Constructing Satisfiability Calculus SAT 2014 Dejan Jovanović SRI International Leonardo de Moura Microsoft Research

Upload: others

Post on 05-Jan-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

A Model-Constructing Satisfiability Calculus SAT 2014

Dejan Jovanović

SRI International

Leonardo de Moura

Microsoft Research

The RISE of Model-Driven Techniques

Search x Saturation

Proof-finding Model-finding

Two procedures

Resolution DPLL

Proof-finder Model-finder

Saturation Search

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

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

Experimental Results (1) OUR ENGINE

Experimental Results (2)

OUR 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: 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

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

𝐹 π‘₯ , 𝑦 𝑦 β†’ 𝑣

Extending Check Modulo Assignment for MCSAT

𝐹 π‘₯ , 𝑦 𝑦 β†’ 𝑣

SAT, π‘₯ β†’ 𝑀 , 𝐹 𝑀 , 𝑣 is true

Extending Check Modulo Assignment for MCSAT

𝐹 π‘₯ , 𝑦 𝑦 β†’ 𝑣

SAT, π‘₯ β†’ 𝑀 , 𝐹 𝑀 , 𝑣 is true

UNSAT, 𝑆[𝑦 ] s.t. 𝐹 π‘₯ , 𝑦 β‡’ 𝑆[𝑦 ], 𝑆[𝑣 ] is false

NLSAT/MCSAT

𝐹 π‘₯ , 𝑦

𝑦1 β†’ 𝑀1 π‘¦π‘˜ β†’ π‘€π‘˜ …

NLSAT/MCSAT

πΆβ„Žπ‘’π‘π‘˜(π‘₯2 + 𝑦2 < 1, 𝑦 β†’ βˆ’2 )

NLSAT/MCSAT

πΆβ„Žπ‘’π‘π‘˜(π‘₯2 + 𝑦2 < 1, 𝑦 β†’ βˆ’2 )

UNSAT, 𝑦 > βˆ’1

𝑦

π‘₯

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!

Extra Slides

Lazy SMT and DPLL(T)

Abstraction Refinement Procedure

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

SAT + Theory Solvers: refinements

Incrementality

Efficient Backtracking

Efficient Lemma Generation

Theory propagation DPLL(T) [Ganzinger et all – 2004]