symbolic computation techniques in satisfiability checking

Post on 02-Jan-2022

11 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Symbolic Computation Techniquesin Satisfiability Checking

Erika Abraham

RWTH Aachen University, Germany

SYNASC 2016Timisoara, Romania

September 24-27, 2016

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 1 / 32

What is this talk about?

Quantifier-freearithmeticformula

Solver

Satisfiability of theinput formula

Theorem provers

Computer algebra systems

SAT-modulo-theories (SMT) solvers

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 2 / 32

What is this talk about?

Quantifier-freearithmeticformula

Solver

Satisfiability of theinput formula

Theorem provers

Computer algebra systems

SAT-modulo-theories (SMT) solvers

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 2 / 32

Tool development

1960 1970 1980 1990 2000 2010 2020

Computer algebra systems

SAT solvers

SMT solvers

Schoonschip

MATHLAB

ReduceAltran

Scratchpad/Axiom

Macsyma

SMPmuMATH

Maple

MathcadSACGAP

CoCoAMathHandbookMathomatic

MathematicaDeriveFORM

KASH/KANTPARI/GP

MagmaFermatErableMacaulay2

SingularSymbolicC++

Maxima

Xcas/Giac

Yacas

SAGESMathStudio

CadabraSymPyOpenAxiom

MATLABMuPAD

WolframAlphaTI-NspireCAS

MathicsSymbolismFxSolver

CalcinatorSyMAT

WalkSATSATO

GRASPChaff

BCSAT

MiniSATBerkmin

zChaffSiege

HyperSatRSat

Sat4jArgoSatGlucose

CryptoMiniSat

LingelingUBCSAT

FastSATSolver

SimplifySVC

ICSUclid

MathSATBarcelogic

YicesCVCHySAT/iSAT

DPT

Z3Alt-Ergo

BeaverABsolver

BoolectorPicoSAT

Spear

MiniSmtSTPveriT

OpenCog

OpenSMTSatEEn

SWORDSONOLAR

SMTInterpol

SMT-RATSMCHR

UCLIDClasp

raSAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 3 / 32

Tool development

1960 1970 1980 1990 2000 2010 2020

Computer algebra systems

SAT solvers

SMT solvers

Schoonschip

MATHLAB

ReduceAltran

Scratchpad/Axiom

Macsyma

SMPmuMATH

Maple

MathcadSACGAP

CoCoAMathHandbookMathomatic

MathematicaDeriveFORM

KASH/KANTPARI/GP

MagmaFermatErableMacaulay2

SingularSymbolicC++

Maxima

Xcas/Giac

Yacas

SAGESMathStudio

CadabraSymPyOpenAxiom

MATLABMuPAD

WolframAlphaTI-NspireCAS

MathicsSymbolismFxSolver

CalcinatorSyMAT

WalkSATSATO

GRASPChaff

BCSAT

MiniSATBerkmin

zChaffSiege

HyperSatRSat

Sat4jArgoSatGlucose

CryptoMiniSat

LingelingUBCSAT

FastSATSolver

SimplifySVC

ICSUclid

MathSATBarcelogic

YicesCVCHySAT/iSAT

DPT

Z3Alt-Ergo

BeaverABsolver

BoolectorPicoSAT

Spear

MiniSmtSTPveriT

OpenCog

OpenSMTSatEEn

SWORDSONOLAR

SMTInterpol

SMT-RATSMCHR

UCLIDClasp

raSAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 3 / 32

Satisfiability checking for propositional logic

Success story: SAT-solving

Practical problems with millions of variables are solvable.

Frequently used in different research areas for, e.g., analysis,synthesis and optimisation.

Also massively used in industry for, e.g., digital circuit design andverification.

Community support:

Standardised input language, lots of benchmarks available.

Competitions since 2002.

2016 SAT Competition: 6 tracks, 29 solvers in the main track.

SAT Live! forum as community platform, dedicated conferences,journals, etc.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 4 / 32

Satisfiability checking for propositional logic

Success story: SAT-solving

Practical problems with millions of variables are solvable.

Frequently used in different research areas for, e.g., analysis,synthesis and optimisation.

Also massively used in industry for, e.g., digital circuit design andverification.

Community support:

Standardised input language, lots of benchmarks available.

Competitions since 2002.

2016 SAT Competition: 6 tracks, 29 solvers in the main track.

SAT Live! forum as community platform, dedicated conferences,journals, etc.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 4 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)

Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0 00

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: Enumeration

Ingredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: Enumeration

Ingredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Decision

DecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: Enumeration

Ingredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

a

b

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: Enumeration

Ingredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Decision

Decision

Boolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

a

b

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: Enumeration

Ingredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecision

Boolean constraint propagation

DecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0 0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagation

Decision

Boolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0 0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0 0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecision

Boolean constraint propagation

ConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0 0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagation

Ingredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagation

Conflict

Conflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagation

Conflict

Conflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 5 / 32

Resolution

Assumption: conjunctive normal form (CNF)

Derivation rule form:

antecendent1 . . . antecendentnconsequent Rule name

(l1 ∨ . . . ∨ ln ∨ x) (l′1 ∨ . . . ∨ l′m ∨ ¬x)(l1 ∨ . . . ∨ ln ∨ l′1 ∨ . . . ∨ l′m)

Ruleres

∃x. Cx ∧ C¬x ∧ C ↔ Resolvents (Cx,C¬x) ∧ C

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 6 / 32

Resolution

Assumption: conjunctive normal form (CNF)

Derivation rule form:

antecendent1 . . . antecendentnconsequent Rule name

(l1 ∨ . . . ∨ ln ∨ x) (l′1 ∨ . . . ∨ l′m ∨ ¬x)(l1 ∨ . . . ∨ ln ∨ l′1 ∨ . . . ∨ l′m)

Ruleres

∃x. Cx ∧ C¬x ∧ C ↔ Resolvents (Cx,C¬x) ∧ C

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 6 / 32

Resolution

Assumption: conjunctive normal form (CNF)

Derivation rule form:

antecendent1 . . . antecendentnconsequent Rule name

(l1 ∨ . . . ∨ ln ∨ x) (l′1 ∨ . . . ∨ l′m ∨ ¬x)(l1 ∨ . . . ∨ ln ∨ l′1 ∨ . . . ∨ l′m)

Ruleres

∃x. Cx ∧ C¬x ∧ C ↔ Resolvents (Cx,C¬x) ∧ C

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 6 / 32

Resolution

Assumption: conjunctive normal form (CNF)

Derivation rule form:

antecendent1 . . . antecendentnconsequent Rule name

(l1 ∨ . . . ∨ ln ∨ x) (l′1 ∨ . . . ∨ l′m ∨ ¬x)(l1 ∨ . . . ∨ ln ∨ l′1 ∨ . . . ∨ l′m)

Ruleres

∃x. Cx ∧ C¬x ∧ C ↔ Resolvents (Cx,C¬x) ∧ C

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 6 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagation

Conflict

Conflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflict

Conflict resolution and backtracking

Boolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

ab

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

a

b

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtracking

Boolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

a

b

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

DPLL SAT solving with conflict-directed clause learning

Assumption: formula in conjunctive normal form (CNF)Ingredients: EnumerationIngredients: Enumeration + Boolean constraint propagationIngredients: Enumeration + Boolean constraint propagation + Resolution

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

DecisionDecisionBoolean constraint propagationDecisionBoolean constraint propagationConflictConflict resolution and backtrackingBoolean constraint propagation

. . .

. . .

1 0

0

1

1 0

1 0 1 0

1

1 0

1 0 1 0

0

0

1

0

1 1 0

1 0

1

0

1 1 0

1 0

a

b

cc3

d

ec1

c2

c2 : (¬a ∨ ¬d ∨ ¬e) c1 : (¬a ∨ ¬d ∨ e)c4 : (¬a ∨ ¬d) Resolution

c4 : ( ¬a ∨ ¬d )

d

c3

c1 : ( ¬a ∨ ¬d ∨ e )c2 : ( ¬a ∨ ¬d ∨ ¬e )c3 : ( ¬b ∨ ¬c )

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 7 / 32

Tool development

1960 1970 1980 1990 2000 2010 2020

Computer algebra systems

SAT solvers

SMT solvers

Schoonschip

MATHLAB

ReduceAltran

Scratchpad/Axiom

Macsyma

SMPmuMATH

Maple

MathcadSACGAP

CoCoAMathHandbookMathomatic

MathematicaDeriveFORM

KASH/KANTPARI/GP

MagmaFermatErableMacaulay2

SingularSymbolicC++

Maxima

Xcas/Giac

Yacas

SAGESMathStudio

CadabraSymPyOpenAxiom

MATLABMuPAD

WolframAlphaTI-NspireCAS

MathicsSymbolismFxSolver

CalcinatorSyMAT

WalkSATSATO

GRASPChaff

BCSAT

MiniSATBerkmin

zChaffSiege

HyperSatRSat

Sat4jArgoSatGlucose

CryptoMiniSat

LingelingUBCSAT

FastSATSolver

SimplifySVC

ICSUclid

MathSATBarcelogic

YicesCVCHySAT/iSAT

DPT

Z3Alt-Ergo

BeaverABsolver

BoolectorPicoSAT

Spear

MiniSmtSTPveriT

OpenCog

OpenSMTSatEEn

SWORDSONOLAR

SMTInterpol

SMT-RATSMCHR

UCLIDClasp

raSAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 8 / 32

Tool development

1960 1970 1980 1990 2000 2010 2020

Computer algebra systems

SAT solvers

SMT solvers

Schoonschip

MATHLAB

ReduceAltran

Scratchpad/Axiom

Macsyma

SMPmuMATH

Maple

MathcadSACGAP

CoCoAMathHandbookMathomatic

MathematicaDeriveFORM

KASH/KANTPARI/GP

MagmaFermatErableMacaulay2

SingularSymbolicC++

Maxima

Xcas/Giac

Yacas

SAGESMathStudio

CadabraSymPyOpenAxiom

MATLABMuPAD

WolframAlphaTI-NspireCAS

MathicsSymbolismFxSolver

CalcinatorSyMAT

WalkSATSATO

GRASPChaff

BCSAT

MiniSATBerkmin

zChaffSiege

HyperSatRSat

Sat4jArgoSatGlucose

CryptoMiniSat

LingelingUBCSAT

FastSATSolver

SimplifySVC

ICSUclid

MathSATBarcelogic

YicesCVCHySAT/iSAT

DPT

Z3Alt-Ergo

BeaverABsolver

BoolectorPicoSAT

Spear

MiniSmtSTPveriT

OpenCog

OpenSMTSatEEn

SWORDSONOLAR

SMTInterpol

SMT-RATSMCHR

UCLIDClasp

raSAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 8 / 32

Satisfiability modulo theories solving

Propositional logic is sometimes too weak for modelling.

We need more expressive logics and decision procedures for them.

Logics: quantifier-free (QF) fragments of first-order logicover various theories.

Our focus: SAT-modulo-theories (SMT) solving.

SMT-LIB as standard input language since 2004.

Competitions since 2005.SMT-COMP 2016 competition:

4 tracks, 41 logical categories.QF linear real arithmetic: 7 + 2 solvers, 1626 benchmarks.QF linear integer arithmetic: 6 + 2 solvers, 5839 benchmarks.QF non-linear real arithmetic: 5 + 1 solvers, 10245 benchmarks.QF non-linear integer arithmetic: 7 + 1 solvers, 8593 benchmarks.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 9 / 32

Satisfiability modulo theories solving

Propositional logic is sometimes too weak for modelling.

We need more expressive logics and decision procedures for them.

Logics: quantifier-free (QF) fragments of first-order logicover various theories.

Our focus: SAT-modulo-theories (SMT) solving.

SMT-LIB as standard input language since 2004.

Competitions since 2005.SMT-COMP 2016 competition:

4 tracks, 41 logical categories.QF linear real arithmetic: 7 + 2 solvers, 1626 benchmarks.QF linear integer arithmetic: 6 + 2 solvers, 5839 benchmarks.QF non-linear real arithmetic: 5 + 1 solvers, 10245 benchmarks.QF non-linear integer arithmetic: 7 + 1 solvers, 8593 benchmarks.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 9 / 32

(Full/less) lazy SMT solving

ϕ quantifier-free FO formulaBoolean abstraction

Tseitin’s transformationϕ′ propositional logic formula in CNF

SAT solver

Theory solver(s)

theory constraintsSATor

UNSAT+ lemmas

SAT or UNSAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 10 / 32

Less lazy SMT solving

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b

x ≥ 0, x > 2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b

x ≥ 0, x > 2 SAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b, ¬c

x ≥ 0, x > 2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b, ¬c, d

x ≥ 0, x > 2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b, ¬c, d

x ≥ 0, x > 2, x2 , 1, x2 < 0

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d )

SAT solver

Theory solver(s)

¬a, b, ¬c, d

x ≥ 0, x > 2, x2 , 1, x2 < 0 UNSAT: ¬(x2 < 0)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬a, b, ¬c, d

x ≥ 0, x > 2, x2 , 1, x2 < 0 UNSAT: ¬(x2 < 0)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c

x2 ≥ 0, x2 = 1 SAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c, ¬a

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c, ¬a, b

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c, ¬a, b

x2 ≥ 0, x2 = 1, x ≥ 0, x > 2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d)

SAT solver

Theory solver(s)

¬d, c, ¬a, b

x2 ≥ 0, x2 = 1, x ≥ 0, x > 2 UNSAT: ¬(x2 = 1 ∧ x > 2)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c, ¬a, b

x2 ≥ 0, x2 = 1, x ≥ 0, x > 2 UNSAT: ¬(x2 = 1 ∧ x > 2)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c, ¬b

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c, ¬b, a

x2 ≥ 0, x2 = 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c, ¬b, a

x2 ≥ 0, x2 = 1, x ≤ 2, x < 0

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

¬d, c, ¬b, a

x2 ≥ 0, x2 = 1, x ≤ 2, x < 0 SAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

SAT

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

Less lazy SMT solving

(x < 0 ∨ x > 2) ∧ (x2 = 1 ∨ x2 < 0)

( a ∨ b ) ∧ ( c ∨ d ) ∧ (¬d) ∧ (¬c ∨ ¬b)

SAT solver

Theory solver(s)

SAT

N.B. There are also other SMT solving techniques, which more closelyintegrate some theory-solving parts into the SAT-solving mechanism.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 11 / 32

SMT-LIB theories

(Quantifier-free) linear/non-linear real/integer arithmetic

Source: http://smtlib.cs.uiowa.edu/logics.shtml

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 12 / 32

SMT-LIB theories

(Quantifier-free) linear/non-linear real/integer arithmetic

Source: http://smtlib.cs.uiowa.edu/logics.shtml

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 12 / 32

Some theory solver candidates for arithmetic theories

Linear real arithmetic:

Simplex

Ellipsoid method

Fourier-Motzkin variable elimination(mostly preprocessing)

Interval constraint propagation(incomplete)

Linear integer arithmetic:

Cutting planes, Gomory cuts

Branch-and-bound (incomplete)

Bit-blasting (eager)

Interval constraint propagation(incomplete)

Non-linear real arithmetic:

Cylindrical algebraic decomposition

Grobner bases(mostly preprocessing/simplification)

Virtual substitution (focus on low degrees)

Interval constraint propagation (incomplete)

Non-linear integer arithmetic:

Generalised branch-and-bound(incomplete)

Bit-blasting (eager, incomplete)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 13 / 32

Implementations in computer algebra systems

Grobner bases

CoCoA, F4, Maple, Mathematica, Maxima, Singular, Reduce, . . .

Cylindrical algebraic decomposition (CAD)

Mathematica, QEPCAD, Reduce, . . .

Virtual substitution (VS)

Reduce, . . .

Strength: Efficient for conjunctions of real constraints.

So why don’t we just plug in an algebraic decision procedure as theorysolver into an SMT solver?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 14 / 32

Implementations in computer algebra systems

Grobner bases

CoCoA, F4, Maple, Mathematica, Maxima, Singular, Reduce, . . .

Cylindrical algebraic decomposition (CAD)

Mathematica, QEPCAD, Reduce, . . .

Virtual substitution (VS)

Reduce, . . .

Strength: Efficient for conjunctions of real constraints.

So why don’t we just plug in an algebraic decision procedure as theorysolver into an SMT solver?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 14 / 32

Why not use CAS out of the box?

Theory solvers should be SMT-compliant, i.e., they shouldwork incrementally,generate lemmas explaining inconsistencies, andbe able to backtrack.

Originally, the mentioned methodsare not SMT-compliant,they are seldomly available as libraries, andare usually not thread-safe.

Usually, SMT-adaptations are tricky.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 15 / 32

Why not use CAS out of the box?

Theory solvers should be SMT-compliant, i.e., they shouldwork incrementally,generate lemmas explaining inconsistencies, andbe able to backtrack.

Originally, the mentioned methodsare not SMT-compliant,they are seldomly available as libraries, andare usually not thread-safe.

Usually, SMT-adaptations are tricky.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 15 / 32

Why not use CAS out of the box?

Theory solvers should be SMT-compliant, i.e., they shouldwork incrementally,generate lemmas explaining inconsistencies, andbe able to backtrack.

Originally, the mentioned methodsare not SMT-compliant,they are seldomly available as libraries, andare usually not thread-safe.

Usually, SMT-adaptations are tricky.

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 15 / 32

Satisfiablility checking and symbolic computationBridging two communities to solve real problems

http://www.sc-square.org/CSA/welcome.html

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 16 / 32

Our SMT-RAT library

We have developed the SMT-RAT library of theory modules.[SAT’12, SAT’15]

https://github.com/smtrat/smtrat/wiki

Florian Corzilius Gereon Kremer Ulrich Loup

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 17 / 32

Our SMT-RAT library

SMT Solver

Strategic composition of SMT-RAT modules

SMT-RAT

(SMT real-algebraic toolbox)

preprocessing, SAT andtheory solver modules

CArL

real-arithmeticcomputations

gmp, Eigen3, boost

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 18 / 32

Strategic composition of solver modules in SMT-RAT

SMT solver

SATsolver

ManagerStrategy

ConditionCondition Condition. . .

Module Module Module Module . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 19 / 32

Solver modules in SMT-RAT

Libraries for basic arithmetic computations [NFM’11, CAI’11]

SAT solver

CNF converter

Preprocessing/simplifying modules

Interval constraint propagation

Simplex

Virtual substitution [FCT’11, PhD Corzilius]

Cylindrical algebraic decomposition[CADE-24, PhD Loup, PhD Kremer]

Grobner bases [CAI’13]

Generalised branch-and-bound [CASC’16]

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 20 / 32

Solution sets and P-sign-invariant regions

Z[x1, . . . , xn] is the set of all polynomials over variables x1, . . . , xn.

Example

p1 = (x − 2)2 + (y − 2)2 − 1p2 = x − y

∈ Z[x, y]

C = { p1 < 0, p2 = 0 }P = { p1, p2 }

The zeros of the polynomials divide the search spaceinto a finite number of connected P-sign-invariant regions.

x

y

2

2

p1 = 0p1 < 0

p1 > 0

p2 = 0p2 < 0

p2 > 0

Check satisfiability for at least one sample pointfrom each connected P-sign-invariant region.But how to compute such sample points,at least one for each connected P-sign-invariant region?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 21 / 32

Solution sets and P-sign-invariant regions

Z[x1, . . . , xn] is the set of all polynomials over variables x1, . . . , xn.

Example

p1 = (x − 2)2 + (y − 2)2 − 1p2 = x − y

∈ Z[x, y]

C = { p1 < 0, p2 = 0 }P = { p1, p2 }

The zeros of the polynomials divide the search spaceinto a finite number of connected P-sign-invariant regions.

x

y

2

2

p1 = 0p1 < 0

p1 > 0

p2 = 0p2 < 0

p2 > 0

Check satisfiability for at least one sample pointfrom each connected P-sign-invariant region.But how to compute such sample points,at least one for each connected P-sign-invariant region?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 21 / 32

Solution sets and P-sign-invariant regions

Z[x1, . . . , xn] is the set of all polynomials over variables x1, . . . , xn.

Example

p1 = (x − 2)2 + (y − 2)2 − 1p2 = x − y

∈ Z[x, y]

C = { p1 < 0, p2 = 0 }P = { p1, p2 }

The zeros of the polynomials divide the search spaceinto a finite number of connected P-sign-invariant regions.

x

y

2

2

p1 = 0p1 < 0

p1 > 0

p2 = 0p2 < 0

p2 > 0

Check satisfiability for at least one sample pointfrom each connected P-sign-invariant region.

But how to compute such sample points,at least one for each connected P-sign-invariant region?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 21 / 32

Solution sets and P-sign-invariant regions

Z[x1, . . . , xn] is the set of all polynomials over variables x1, . . . , xn.

Example

p1 = (x − 2)2 + (y − 2)2 − 1p2 = x − y

∈ Z[x, y]

C = { p1 < 0, p2 = 0 }P = { p1, p2 }

The zeros of the polynomials divide the search spaceinto a finite number of connected P-sign-invariant regions.

x

y

2

2

p1 = 0p1 < 0

p1 > 0

p2 = 0p2 < 0

p2 > 0

Check satisfiability for at least one sample pointfrom each connected P-sign-invariant region.

But how to compute such sample points,at least one for each connected P-sign-invariant region?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 21 / 32

Solution sets and P-sign-invariant regions

Z[x1, . . . , xn] is the set of all polynomials over variables x1, . . . , xn.

Example

p1 = (x − 2)2 + (y − 2)2 − 1p2 = x − y

∈ Z[x, y]

C = { p1 < 0, p2 = 0 }P = { p1, p2 }

The zeros of the polynomials divide the search spaceinto a finite number of connected P-sign-invariant regions.

x

y

2

2

p1 = 0p1 < 0

p1 > 0

p2 = 0p2 < 0

p2 > 0

Check satisfiability for at least one sample pointfrom each connected P-sign-invariant region.

But how to compute such sample points,at least one for each connected P-sign-invariant region?

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 21 / 32

Cylindrical algebraic decomposition (CAD)

Polynomials P1 ⊆ Z[x1] Samples in R1isolate real zeros

Projection phase

Polynomials P2 ⊆ Z[x1, x2] Samples in R2

Construction phaseProjection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . . . . .

Samples in Rn−1

Samples in Rn

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 22 / 32

Cylindrical algebraic decomposition example

P1 = {x2 − 1, x }

zeros of

P1x

−1 0 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 23 / 32

Cylindrical algebraic decomposition example

P1 = {x2 − 1, x }zeros of

P1x

−1 0 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 23 / 32

Cylindrical algebraic decomposition example

P1 = {x2 − 1, x }zeros of

P1x

−1 0 1

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 23 / 32

Cylindrical algebraic decomposition (CAD)

Polynomials P1 ⊆ Z[x1] Samples in R1isolate real zeros

Projection phase

Polynomials P2 ⊆ Z[x1, x2] Samples in R2

Construction phaseProjection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . . . . .

Samples in Rn−1

Samples in Rn

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 24 / 32

Cylindrical algebraic decomposition (CAD)

Polynomials P1 ⊆ Z[x1] Samples in R1isolate real zeros

Projection phase

Polynomials P2 ⊆ Z[x1, x2] Samples in R2

Construction phase

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . . . . .

Samples in Rn−1

Samples in Rn

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 24 / 32

Cylindrical algebraic decomposition (CAD)

Polynomials P1 ⊆ Z[x1] Samples in R1isolate real zeros

Projection phase

Polynomials P2 ⊆ Z[x1, x2] Samples in R2

Construction phaseProjection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . . . . .

Samples in Rn−1

Samples in Rn

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 24 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Cylindrical algebraic decomposition example

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y} ⊆ Z[x, y]

projection

P1 = {???} ⊆ Z[x]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 25 / 32

Projection

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

discriminant

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

resultant

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 26 / 32

Projection

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

discriminant

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

resultant

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 26 / 32

Projection

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

discriminant

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

resultant

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 26 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . .

. . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . .

. . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . .

. . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . .

. . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .

. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .

. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .

. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .

. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . .

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . .

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . .

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . .

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Incrementality and backtracking

Projection phase

Polynomials P = Pn ⊆ Z[x1, . . . , xn]

Polynomials Pn−1 ⊆ Z[x1, . . . , xn−1]

. . .

Polynomials P2 ⊆ Z[x1, x2]

Polynomials P1 ⊆ Z[x1]

Construction phase

Samples in R1

Samples in R2

. . .

Samples in Rn−1

Samples in Rn

. . . . . .. . . . . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 27 / 32

Explanations

Projection phase Construction phase

. . . . . .

S0 S1 S2 S3 S4 S5 S6 S7

Explanation for unsatisfiability:

covering set S

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 28 / 32

Explanations

Projection phase Construction phase

. . . . . .

S0 S1 S2 S3 S4 S5 S6 S7

Explanation for unsatisfiability:

covering set S

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 28 / 32

Explanations

Projection phase Construction phase

. . . . . .

S0 S1 S2 S3 S4 S5 S6 S7

Explanation for unsatisfiability:

covering set S

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 28 / 32

Explanations

Projection phase Construction phase

. . . . . .

S0 S1 S2 S3 S4 S5 S6 S7

Explanation for unsatisfiability:

covering set S

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 28 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable ordering

polynomial selection. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selection

polynomial selection. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selection

polynomial selection. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Heuristics

Projection phase Construction phase

variable orderingpolynomial selection

. . .

polynomial selection

sample point selectionpolynomial selection

. . .

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 29 / 32

Some SMT-COMP 2016 results

Solver QF NRA sequential (10245) QF NIA sequential (8593)Correctly Total Time Correctly Total Time

solved time per instance solved time per instanceAProVE - - - 8273 8527.66 1.03CVC4 2694 150.24 0.05 8231 161418.04 19.61ProB - - - 7557 13586.05 1.79raSAT 0.3 8431 13576.52 1.61 7544 70228.9 9.31raSAT 0.4 9024 11176.39 1.23 8017 159247.55 19.86SMT-RAT 9026 51053.15 5.65 8443 6234.5 0.73Yices 10019 61989.88 6.18 8451 8523.4 1.00[Z3] 10056 24785.38 2.46 8566 27718.2 3.23

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 30 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2

ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2

ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]

Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

The core idea of Z3’s nlsat algorithm [Jovanovic, de Moura, IJCAR’12]

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0︸ ︷︷ ︸c1

∧ x − y = 0︸ ︷︷ ︸c2

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

projection

zeros of

P1x

0 2

zeros ofP2[·/x]

x

y

2

2

Solution to constraints in Z[x]: x = 0.5

ϕ[0.5/x] = (y − 2)2 + 1.25 < 0 ∧ −y + 0.5 = 0

No solution to constraints in Z[y]

Reason: c1

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))

Solution to constraints in Z[x]: x = 1.2ϕ[1.2/x] = (y − 2)2 − 0.36 < 0 ∧ 1.2 − y = 0

No solution to constraints in Z[y]Reason: c1 ∧ c2

P2 = {(x − 2)2 + (y − 2)2 − 1, x − y}

P1 = {x2 − 4x + 3, 2x2 − 8x + 7, . . . }

ϕ = (x − 2)2 + (y − 2)2 − 1 < 0 ∧ x − y = 0∧(c1 → ¬(x < zero(1, x2 − 4x + 3)))((c1 ∧ c2)→ ¬(zero(1, x2 − 4x + 3) < x < zero(1, 2x2 − 8x + 7)))

Solution to constraints in Z[x]: x = 2

ϕ[2/x] = (y − 2)2 − 1 < 0 ∧ 2 − y = 0

Solution to constraints in Z[y]: y = 2

Partial projection(Brown & Kosta, JSC 2015)

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 31 / 32

Upcoming research directions in SMT solving

Improve usability:

Computing “nice” models

Dedicated SMT solvers

Increase scalability:

Performance optimisation (better lemmas, heuristics, cachebehaviour, . . . )

Novel combinations of decision procedures

Parallelisation

Extend functionality:

Unsatisfiable cores, proofs, interpolants

Quantified arithmetic formulas

Linear and non-linear (global) optimisation

Erika Abraham - Symbolic Computation Techniques in Satisfiability Checking 32 / 32

top related