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