internals of smt solvers

124
Internals of SMT Solvers Leonardo de Moura Microsoft Research

Upload: mickey

Post on 23-Feb-2016

55 views

Category:

Documents


0 download

DESCRIPTION

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. i s a portfolio of solvers. Preprocessing. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Internals of SMT Solvers

Internals of SMT Solvers

Leonardo de MouraMicrosoft Research

Page 2: Internals of SMT Solvers

Acknowledgements

• Dejan Jovanovic (SRI International, NYU)• Grant Passmore (Univ. Edinburgh)

Page 3: Internals of SMT Solvers

Herbrand Award 2013

Greg Nelson

Page 4: Internals of SMT Solvers

What is a SMT Solver?

Page 5: Internals of SMT Solvers

Multiple Approaches

is a portfolio of solvers

Page 6: Internals of SMT Solvers

Preprocessing

Simplify

Variable elimination

if-then-else elimination

𝐹

Solver

Modular Architecture is a “must have”

Page 7: Internals of SMT Solvers

Equivalence Preserving Simplifications

Simplify

𝐹

𝐹 ′Examples:

Page 8: Internals of SMT Solvers

Preprocessor API

Preprocessor

𝐹

𝐹 ′

ModelConverter

ProofConverter

and may be only equisatisfiable

Page 9: Internals of SMT Solvers

Example

VariableElimination

Proofbuilder

Modelbuilder

Page 10: Internals of SMT Solvers

Example

VariableElimination

Proofbuilder

Modelbuilder

𝑀

𝑀 ,𝑀 (𝑎)=𝑀 (𝑏)+1

Page 11: Internals of SMT Solvers

Example

VariableElimination

Proofbuilder

Modelbuilder

𝑏→5

𝑏→5 ,𝑎→6

Page 12: Internals of SMT Solvers

Model Converters

Extension Filter

Modelbuilder

𝑀

𝑀 ,𝑀 (𝑎)=𝑀 (𝑏)+1

Page 13: Internals of SMT Solvers

Model Converter: Filter

𝑝∨(𝑞∧h)

TseitinCNF converter

Modelbuilder

𝑀

𝑀 ∖𝑘

Page 14: Internals of SMT Solvers

Model Converter: Filter

𝑝∨(𝑞∧h)

TseitinCNF converter

Modelbuilder

𝑝→ 𝑡 ,𝑘→ 𝑓 ,𝑞→ 𝑓 , h→𝑡

𝑝→ 𝑡 ,𝑞→ 𝑓 , h→ 𝑡

Page 15: Internals of SMT Solvers

Model Converter: Extension + Filter

Bit-blaster

Modelbuilder

𝑀

𝑀 ′

Page 16: Internals of SMT Solvers

Preprocessors1. Produce Equivalent Formula2. Produce Equisatisfiable Formula3. Assume “closed world” (non-incremental)Example: symmetry reduction

Page 17: Internals of SMT Solvers

Simple QF_BV (bit-vector) solver

Simplify

Variable elimination

𝐹

Bit-blasting

Tseitin CNF converter SAT Solver

Page 18: Internals of SMT Solvers

Under/Over-Approximations

Under-approximationunsat answers cannot be trusted

Over-approximationsat answers cannot be trusted

Page 19: Internals of SMT Solvers

Under/Over-Approximations

Under-approximationmodel finders

Over-approximationproof finders

Page 20: Internals of SMT Solvers

Under/Over-Approximations

Under-approximationS S S’

Over-approximationS S \ S’

Page 21: Internals of SMT Solvers

Under/Over-Approximations

Under-approximationExample: QF_NIA model finders

add bounds to unbounded variables (and blast)

Over-approximationExample: Boolean abstraction

Page 22: Internals of SMT Solvers

Under/Over-Approximations

Combining under and over is bad!sat and unsat answers cannot be trusted.

Page 23: Internals of SMT Solvers

Tracking: under/over-approximations

Proof and Model converters can check if the resultant models and proofs are valid.

Page 24: Internals of SMT Solvers

CEGAR is your friendCounter-Example Guided Abstract Refinement

procedure Solver(F)Fp := Abstract(F)loop

(R, M) := Solve(Fp)if R = UNSAT then return

UNSATR’ := Check(F, M)if R’ = SAT then return SAT Fp := Refine(F, Fp, M)

Using over-approximation

Model

Page 25: Internals of SMT Solvers

CEGAR is your friendCounter-Example Guided Abstract Refinement

procedure Solver(F)Fp := Abstract(F)loop

(R, Pr) := Solve(Fp)if R = SAT then return SATR’ := Check(F, Pr)if R’ = UNSAT then return

UNSATFp := Refine(F, Fp, M)

Using under-approximation

Proof

Page 26: Internals of SMT Solvers

CEGAR is your friendCounter-Example Guided Abstract Refinement

Refinements:

Incremental Solver

Run over and under-approximation is parallel

Page 27: Internals of SMT Solvers

Uninterpreted Functions by CEGAR

Suppose we have a Solver that does not supportuninterpreted functions (example: QF_BV solver)

Congruence Rule:

Page 28: Internals of SMT Solvers

Uninterpreted Functions by CEGARCongruence Rule:

Abstract: replace each f-application with a fresh variable(over-approximation)

𝑎=𝑏+1 , 𝑓 (𝑎−1)=𝑐 , 𝑓 (𝑏)≠𝑐

𝑎=𝑏+1 ,𝑘1=𝑐 ,𝑘2≠𝑐

Page 29: Internals of SMT Solvers

Uninterpreted Functions by CEGARCongruence Rule:

Check: check if congruence rule is satisfied

𝑎=𝑏+1 ,𝑘1=𝑐 ,𝑘2≠𝑐

𝑎→1 ,𝑏→0 ,𝑐→0 ,𝑘1→0 ,𝑘2→1

Page 30: Internals of SMT Solvers

Uninterpreted Functions by CEGARCongruence Rule:

Refine: expand congruence axiom

𝑎=𝑏+1 ,𝑘1=𝑐 ,𝑘2≠𝑐

𝑎→1 ,𝑏→0 ,𝑐→0 ,𝑘1→0 ,𝑘2→1

Page 31: Internals of SMT Solvers

Uninterpreted Functions by CEGARCongruence Rule:

Refine: expand congruence axiom

unsat𝑎−1≠𝑏∨𝑘1=𝑘2

Page 32: Internals of SMT Solvers

UF by CEGAR

Simple QF_UFBV Solver

QF_BVsolver

Page 33: Internals of SMT Solvers

AUF by CEGAR

Simple QF_AUFBV Solverarrays on top of UF

QF_BVsolver

Lemmas on Demand For Theory of Arrays [Brummayer-Biere 2009]

Page 34: Internals of SMT Solvers

Simple UFBV Solvermodel-based quantifier instantiation

MBQI

UF by CEGAR

QF_BVsolver

Efficiently solving quantified bit-vector formulas [Wintersteiger at al 2010]

Page 35: Internals of SMT Solvers

Simple QF_NIA “solver” by CEGARnonlinear integer arithmetic

Hilbert’s 10th ProblemDPRM theorem: QF_NIA is undecidable

Idea: use (under-approximation) CEGAR1. Add lower/upper bounds to all variables, and convert

into QF_BV2. If SAT done3. Otherwise, refine: increase lower/upper bounds

Page 36: Internals of SMT Solvers

Lazy SMT as CEGARSuppose we have a Solver that can only process a conjunction of literals.

Examples: Congurence Closure (UF), Simplex (Linear Real Arithmetic)

Page 37: Internals of SMT Solvers

Lazy SMT as CEGAR: 1. AbstractBasic 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], …

Page 38: Internals of SMT Solvers

Lazy SMT as CEGAR: 2. SolveBasic 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

Page 39: Internals of SMT Solvers

Lazy SMT as CEGAR: 2. SolveBasic 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

Assignmentp1, p2, p3, p4

Page 40: Internals of SMT Solvers

Lazy SMT as CEGAR: 3. CheckBasic Idea

x 0, y = x + 1, (y > 2 y < 1)

p1, p2, (p3 p4)

SAT Solver

Assignmentp1, 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

Page 41: Internals of SMT Solvers

Lazy SMT as CEGAR: 3. CheckBasic Idea

x 0, y = x + 1, (y > 2 y < 1)

p1, p2, (p3 p4)

SAT Solver

Assignmentp1, 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

TheorySolver

Unsatisfiablex 0, y = x + 1, y <

1

Page 42: Internals of SMT Solvers

Lazy SMT as CEGAR: 4. RefineBasic Idea

x 0, y = x + 1, (y > 2 y < 1)

p1, p2, (p3 p4)

SAT Solver

Assignmentp1, 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

TheorySolver

Unsatisfiablex 0, y = x + 1, y <

1

New Lemmap1p2p4

Page 43: Internals of SMT Solvers

Lazy SMT as CEGAR: 4. RefineBasic Idea

TheorySolver

Unsatisfiablex 0, y = x + 1, y <

1

New Lemmap1p2p4

AKATheory conflict

Page 44: Internals of SMT Solvers

Lazy SMT as CEGAR: refinements

Many refinements:IncrementalityEfficient BacktrackingEfficient Lemma GenerationTheory propagation - DPLL(T) [Ganzinger et all – 2004]

Many SMT solvers are based on DPLL(T)

Page 45: Internals of SMT Solvers

DPLL(T) weaknessTheories are “second-class citizens”.DPLL(T) is not model-driven (key property of CDCL).

Models

Proo

fsConflict

Resolution

Page 46: Internals of SMT Solvers

CDCL: Conflict Driven Clause Learning

Resolution

DPLLConflict

Resolution

Proof

Model

Page 47: Internals of SMT Solvers

DPLL(T) weakness

DPLL(T) works well only for “easy” theories.Examples:

Uninterpreted functionsDifference logic ()Linear real arithmetic

“Hard theories”:Linear integer arithmeticArraysNonlinear real arithmetic

Page 48: Internals of SMT Solvers

Example: Nonlinear Real Arithmetic

PSPACE

QF_NRANP-hardnessx is “Boolean” x (x-1) = 0 x or y or z x + y + z > 0

PSPACE membershipCanny – 1988,Grigor’ev – 1988

NP

Page 49: Internals of SMT Solvers

The RISE of Model-Driven Techniques in SMT

Page 50: Internals of SMT Solvers

Saturation x Search

Proof-finding Model-finding

Models

Proo

fsConflict

Resolution

Page 51: Internals of SMT Solvers

Two procedures

Resolution DPLLProof-finder Model-finderSaturation Search

CDCL is model-driven proof search

Page 52: Internals of SMT Solvers

Linear Arithmetic

Fourier-Motzkin SimplexProof-finder Model-finderSaturation Search

Page 53: Internals of SMT Solvers

Fourier-Motzkin

Very similar to Resolution

Exponential time and space

𝑡1≤𝑎𝑥 ,𝑏𝑥≤ 𝑡 2

𝑏𝑡1≤𝑎𝑏𝑥 ,𝑎𝑏𝑥≤𝑎𝑡 2

𝑏𝑡1≤𝑎𝑡2

Page 54: Internals of SMT Solvers

Polynomial Constraints

AKAExistential Theory of the Reals

R

Page 55: Internals of SMT Solvers

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

Page 56: Internals of SMT Solvers

CAD “Big Picture”𝑥2+ 𝑦2−1<0𝑥 𝑦−1>0 1. Saturate

𝑥4−𝑥2+1

𝑥𝑥2−1

+ + + + + + ++ 0 - - - 0 +- - - 0 + + +

2. Search

Page 57: Internals of SMT Solvers

CAD “Big Picture”𝒙𝟐+𝒚𝟐−𝟏<0𝒙 𝒚 −𝟏>0 1. Saturate

𝑥4−𝑥2+1

𝑥𝑥2−1

+ + + + + + ++ 0 - - - 0 +- - - 0 + + +

𝒙−𝟐

+ + ++ 0 -

2. Search

Page 58: Internals of SMT Solvers

CAD “Big Picture”𝒙𝟐+𝒚𝟐−𝟏<𝟎𝑥 𝑦−1>0 1. Saturate

𝑥4−𝑥2+1

𝑥𝑥2−1

+ + + + + + ++ 0 - - - 0 +- - - 0 + + +

𝒙−𝟐

+ + ++ 0 -

2. Search

CONFLICT

Page 59: Internals of SMT Solvers

NLSat: Model-Driven SearchStatic x DynamicOptimistic approachKey ideas

Start the Search before Saturate/ProjectWe saturate on demandModel guides the saturation

Models

Proo

fs

Conflict

Resolution

Page 60: Internals of SMT Solvers

Experimental Results (1)OUR NEW ENGINE

Page 61: Internals of SMT Solvers

Experimental Results (2)

OUR NEW ENGINE

Page 62: Internals of SMT Solvers

Other examples

Delayed Theory Combination[Bruttomesso et al 2006]

Model-Based Theory CombinationX

Page 63: Internals of SMT Solvers

Other examples

Array Theory byAxiom Instantiation

Lemmas on DemandFor Theory of Array

[Brummayer-Biere 2009]X

Page 64: Internals of SMT Solvers

Other examples(for linear arithmetic)

Fourier-Motzkin

Generalizing DPLL to richer logics

[McMillan et al 2009]

Conflict Resolution[Korovin et al 2009]

X

Page 65: Internals of SMT Solvers

Saturation: successful instances

Polynomial time procedures

Gaussian EliminationCongruence Closure

Page 66: Internals of SMT Solvers

MCSat

Model-Driven SMTLift ideas from CDCL to SMT

Generalize ideas found in model-driven approachesEasier to implement

Model construction is explicit

Page 67: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

Page 68: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2

Propagations

Page 69: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2

Propagations

𝑥≥1

Page 70: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2

Propagations

𝑥≥1 𝑦 ≥1

Page 71: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2

Boolean Decisions

𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1

Page 72: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2

Semantic Decisions

𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1𝑥→2

Page 73: Internals of SMT Solvers

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.

Page 74: Internals of SMT Solvers

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.

Learning that = 2)is not productive

Page 75: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1

Learning that = 2)is not productive

¬(𝑥=2)

= 2)

Page 76: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1

Learning that = 2)is not productive

¬(𝑥=2)

= 2)

𝑥→3

Page 77: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1

Learning that = 2)is not productive

¬(𝑥=2)

= 2)

𝑥→3

“Same” Conflict

We can’t find a value for s.t.

Page 78: Internals of SMT Solvers

𝑥≥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

Page 79: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1 𝑥≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1

Page 80: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1 𝑥≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1Conflict¬ (𝑥≥2 )∨¬(𝑥≤1)

Page 81: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1Learned by resolution¬ (𝑥≥2 )∨¬(𝑥2+𝑦2≤1)

Page 82: Internals of SMT Solvers

MCSat

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1¬(𝑥2+𝑦2≤1)

¬(𝑥2+𝑦2≤1)∨𝑥≤1¬ (𝑥≥2 )∨¬(𝑥2+𝑦2≤1)

Page 83: Internals of SMT Solvers

MCSat: FM Example

, 𝑧→0 , 𝑦→0

, ≡

,

−𝑥+𝑧+1≤0𝑧→0 𝑦→0𝑥− 𝑦 ≤0

We can’t find a value of

Page 84: Internals of SMT Solvers

MCSat: FM Example

, 𝑧→0 , 𝑦→0

𝑧+1− 𝑦 ≤0

−𝑥+𝑧+1≤0𝑧→0 𝑦→0𝑥− 𝑦 ≤0

¬ (−𝑥+𝑧+1≤ 0 )∨¬ (𝑥− 𝑦 ≤0 )∨𝑧+1− 𝑦 ≤0

Fourier-Motzkin

Page 85: Internals of SMT Solvers

MCSat: FM Example

−𝑥+𝑧+1≤0𝑧→0 𝑧+1− 𝑦 ≤0𝑥− 𝑦 ≤0

¬ (−𝑥+𝑧+1≤ 0 )∨¬ (𝑥− 𝑦 ≤0 )∨𝑧+1− 𝑦 ≤0

Page 86: Internals of SMT Solvers

MCSat: FM Example

−𝑥+𝑧+1≤0𝑧→0 𝑧+1− 𝑦 ≤0𝑥− 𝑦 ≤0

¬ (−𝑥+𝑧+1≤ 0 )∨¬ (𝑥− 𝑦 ≤0 )∨𝑧+1− 𝑦 ≤0

𝑦→1

, 𝑧→0 , 𝑦→1

, ≡

,

Page 87: Internals of SMT Solvers

MCSat: FM Example

−𝑥+𝑧+1≤0𝑧→0 𝑧+1− 𝑦 ≤0𝑥− 𝑦 ≤0

¬ (−𝑥+𝑧+1≤ 0 )∨¬ (𝑥− 𝑦 ≤0 )∨𝑧+1− 𝑦 ≤0

𝑦→1

, 𝑧→0 , 𝑦→1

, ≡

,

𝑥→1

Page 88: Internals of SMT Solvers

MCSat: Another Example−4 𝑥𝑦−4 𝑥+ 𝑦>1 ,𝑥2+ 𝑦2<1 ,𝑥3+2𝑥2+3 𝑦2−5<0

Page 89: Internals of SMT Solvers

MCSat: Another Example

𝑥3+2𝑥2+3 𝑦 2−5<0

𝑥2+ 𝑦2<1

−4 𝑥𝑦−4 𝑥+ 𝑦>1

Feasible Region

Starting searchPartial solution:

Can we extend it to ?

What is the core?

−4 𝑥𝑦−4 𝑥+ 𝑦>1 ,𝑥2+ 𝑦2<1 ,𝑥3+2𝑥2+3 𝑦2−5<0

Page 90: Internals of SMT Solvers

MCSat: Another Example

𝑥3+2𝑥2+3 𝑦 2−5<0

𝑥2+ 𝑦2<1

−4 𝑥𝑦−4 𝑥+ 𝑦>1

Feasible Region

Starting searchPartial solution:

Can we extend it to ?

What is the core?

−4 𝑥𝑦−4 𝑥+ 𝑦>1 ,𝑥2+ 𝑦2<1 ,𝑥3+2𝑥2+3 𝑦2−5<0

Page 91: Internals of SMT Solvers

MCSat – Finite BasisEvery theory that admits quantifier elimination has a finite basis (given a fixed assignment order)

𝐹 [𝑥 , 𝑦1 ,…, 𝑦𝑚]

∃𝑥 :𝐹 [𝑥 , 𝑦1 ,…, 𝑦𝑚]

𝐶1[𝑦1 ,…, 𝑦𝑚]∧…∧𝐶𝑘[𝑦1 ,…, 𝑦𝑚 ]

¬𝐹 [𝑥 , 𝑦1 ,…, 𝑦𝑚 ]∨𝐶𝑘[𝑦1 ,…, 𝑦𝑚 ]

Page 92: Internals of SMT Solvers

MCSat – Finite Basis

𝐹 1[𝑥1]

𝐹 2[𝑥1 ,𝑥2]

𝐹 𝑛[𝑥1 ,𝑥2,…, 𝑥𝑛−1 ,𝑥𝑛]

𝐹 𝑛−1[𝑥1 ,𝑥2 ,…, 𝑥𝑛−1]…

Page 93: Internals of SMT Solvers

MCSat – Finite Basis

𝐹 1[𝑥1]

𝐹 2[𝑥1 ,𝑥2]

𝐹 𝑛[𝑥1 ,𝑥2,…, 𝑥𝑛−1 ,𝑥𝑛]

𝐹 𝑛−1[𝑥1 ,𝑥2 ,…, 𝑥𝑛−1]…

Page 94: Internals of SMT Solvers

MCSat – Finite Basis

𝐹 1[𝑥1]

𝐹 2[𝑥1 ,𝑥2]

𝐹 𝑛[𝑥1 ,𝑥2,…, 𝑥𝑛−1 ,𝑥𝑛]

𝐹 𝑛−1[𝑥1 ,𝑥2 ,…, 𝑥𝑛−1]…

Page 95: Internals of SMT Solvers

MCSat – Finite Basis

𝐹 1[𝑥1]

𝐹 2[𝑥1 ,𝑥2]

𝐹 𝑛[𝑥1 ,𝑥2,…, 𝑥𝑛−1 ,𝑥𝑛]

𝐹 𝑛−1[𝑥1 ,𝑥2 ,…, 𝑥𝑛−1]…

Page 96: Internals of SMT Solvers

MCSat – Finite BasisEvery “finite” theory has a finite basisExample: Fixed size Bit-vectors

𝐹 [𝑥 , 𝑦1 ,…, 𝑦𝑚]

¬𝐹 [𝑥 , 𝑦1 ,…, 𝑦𝑚 ]∨¬(𝑦1=𝛼1)∨…∨¬(𝑦¿¿𝑚=𝛼𝑚)¿

Page 97: Internals of SMT Solvers

MCSat – Finite BasisTheory 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.

Page 98: Internals of SMT Solvers

MCSat: Uninterpreted Functions

𝑎=𝑏+1 , 𝑓 (𝑎−1 )<𝑐 , 𝑓 (𝑏 )>𝑎

𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

Treat and as variablesGeneralized variables

Page 99: Internals of SMT Solvers

MCSat: Uninterpreted Functions𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

𝑘→0𝑏→0𝑓 (𝑘)→0𝑓 (𝑏)→2

Conflict: and must be equal

¬ (𝑘=𝑏)∨ 𝑓 (𝑘 )= 𝑓 (𝑏)

Page 100: Internals of SMT Solvers

MCSat: Uninterpreted Functions𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

𝑘→0𝑏→0𝑓 (𝑘)→0

¬ (𝑘=𝑏)∨ 𝑓 (𝑘 )= 𝑓 (𝑏)

𝑘=𝑏

(Semantic) Propagation

Page 101: Internals of SMT Solvers

MCSat: Uninterpreted Functions𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

𝑘→0𝑏→0𝑓 (𝑘)→0

¬ (𝑘=𝑏)∨ 𝑓 (𝑘 )= 𝑓 (𝑏)

𝑘=𝑏 𝑓 (𝑘 )= 𝑓 (𝑏)

Page 102: Internals of SMT Solvers

MCSat: Uninterpreted Functions𝑎=𝑏+1 , 𝑓 (𝑘 )<𝑐 , 𝑓 (𝑏 )>𝑎 ,𝑘=𝑎−1

𝑘→0𝑏→0𝑓 (𝑘)→0

¬ (𝑘=𝑏)∨ 𝑓 (𝑘 )= 𝑓 (𝑏)

𝑘=𝑏 𝑓 (𝑘 )= 𝑓 (𝑏)𝑓 (𝑏)→0

Page 103: Internals of SMT Solvers

MCSat – Finite BasisWe 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

123456

0

𝑥2

𝑥1≥1𝑥1≤0

Page 104: Internals of SMT Solvers

MCSat: Termination

Propagations

Boolean Decisions

Semantic Decisions

Page 105: Internals of SMT Solvers

MCSat

≻Propagations

Boolean Decisions

Semantic Decisions

Page 106: Internals of SMT Solvers

MCSat

Propagations

Boolean Decisions

Semantic Decisions

Page 107: Internals of SMT Solvers

MCSat

¿𝐹𝑖𝑛𝑖𝑡𝑒𝐵𝑎𝑠𝑖𝑠∨¿

…Maximal Elements

Page 108: Internals of SMT Solvers

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1 𝑥≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1Conflict¬ (𝑥≥2 )∨¬(𝑥≤1)

Page 109: Internals of SMT Solvers

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1 𝑥≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1Conflict¬ (𝑥≥2 )∨¬(𝑥≤1)

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1¬(𝑥2+𝑦2≤1)

¬(𝑥2+𝑦2≤1)∨𝑥≤1¬ (𝑥≥2 )∨¬(𝑥2+𝑦2≤1)

Page 110: Internals of SMT Solvers

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1𝑥2+ 𝑦2≤1 𝑥≤1

¬(𝑥2+𝑦2≤1)∨𝑥≤1Conflict¬ (𝑥≥2 )∨¬(𝑥≤1)

𝑥≥2 , (¬𝑥≥1∨ 𝑦 ≥1 ) ,(𝑥2+ 𝑦2≤1∨𝑥𝑦>1)

𝑥≥2 𝑥≥1 𝑦 ≥1¬(𝑥2+𝑦2≤1)

¬(𝑥2+𝑦2≤1)∨𝑥≤1¬ (𝑥≥2 )∨¬(𝑥2+𝑦2≤1)

Page 111: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

Page 112: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

𝑝

Page 113: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

𝑝

Conflict (evaluates to false)

Page 114: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

𝑝

New clause𝑥<1∨𝑥=2

Page 115: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

𝑝

New clause𝑥<1∨𝑥=2

𝑥<1

Page 116: Internals of SMT Solvers

𝑥<1∨𝑝 ,¬𝑝∨𝑥=2

𝑥→1

MCSat

𝑝

New clause𝑥<1∨𝑥=2

𝑥<1

Page 117: Internals of SMT Solvers

MCSat: Architecture

Arithmetic

Boolean Lists

Arrays

Page 118: Internals of SMT Solvers

MCSat: development

Page 119: Internals of SMT Solvers

MCSat prototype: 7k lines of codeDeduction Rules

Boolean Resolution

Fourier-Motzkin

Equality Split

Ackermann expansionaka Congruence

Normalization

Page 120: Internals of SMT Solvers

MCSat: preliminary resultsprototype: 7k lines of code

QF_LRA

Page 121: Internals of SMT Solvers

MCSat: preliminary resultsprototype: 7k lines of code

QF_UFLRA and QF_UFLIA

Page 122: Internals of SMT Solvers

ConclusionMode-driven techniques are very promising

Preprocessing

MCSat: new framework for developing SMT solversMCSat generalizes NLSat

Modular architecture

CEGAR

Page 123: Internals of SMT Solvers

Resources: PapersThe 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 Mourahttp://research.microsoft.com/en-us/um/people/leonardo/files/IJCAR2012.pdf

A Model Constructing Satisfiability Calculus, L. de Moura and D. Jovanonichttp://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 Mourahttp://research.microsoft.com/en-us/um/people/leonardo/mcsat_design.pdf

Page 124: Internals of SMT Solvers

Resources: Source Code

nlsathttps://z3.codeplex.com/SourceControl/latest#src/nlsat/

mcsathttps://github.com/dddejan/CVC4/tree/mcsat

tactic/preprocessorshttps://z3.codeplex.com/SourceControl/latest#src/tactic/