A CDCL(LA) Solver SPASS-SATT A CDCL(LA) Solver Translation: fun - - PowerPoint PPT Presentation
A CDCL(LA) Solver SPASS-SATT A CDCL(LA) Solver Translation: fun - - PowerPoint PPT Presentation
SPASS-SATT A CDCL(LA) Solver SPASS-SATT A CDCL(LA) Solver Translation: fun (=SPASS) sated (=SATT) SPASS-SATT A CDCL(LA) Solver Translation: fun (=SPASS) sated (=SATT) being sick/tired of having fun Quantifier-Free Linear Arithmetic
SPASS-SATT A CDCL(LA) Solver
Translation: fun (=SPASS) sated (=SATT)
SPASS-SATT A CDCL(LA) Solver
Translation: fun (=SPASS) sated (=SATT) being sick/tired of having fun…
2/25
Quantifier-Free Linear Arithmetic 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
2/25
Quantifier-Free Linear Arithmetic
Signature: Σ𝑀𝐵 ≔ {+, −, <, ≤, ≥, >, 0, 1, 2, … }
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
2/25
Quantifier-Free Linear Arithmetic
Signature: Σ𝑀𝐵 ≔ {+, −, <, ≤, ≥, >, 0, 1, 2, … } Multiplication only as syntactic sugar! E.g.: 3 ⋅ 𝑦 ↦ 𝑦 + 𝑦 + 𝑦
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
2/25
Quantifier-Free Linear Arithmetic
Goal: Quantifier-Free Linear Rational Arithmetic (QF_LRA)
⇒ rational solution, i.e., 𝑦, 𝑧, … ∈ ℚ
Quantifier-Free Linear Integer Arithmetic (QF_LIA)
⇒ integer solution, i.e., 𝑦, 𝑧, … ∈ ℤ
Signature: Σ𝑀𝐵 ≔ {+, −, <, ≤, ≥, >, 0, 1, 2, … } Multiplication only as syntactic sugar! E.g.: 3 ⋅ 𝑦 ↦ 𝑦 + 𝑦 + 𝑦
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
3/25
CDCL(T) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
3/25
CDCL(T) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
3/25
CDCL(T) CDCL solver:
CDCL = conflict-driven clause-learning Decision procedure for propositional CNF formulas
SAT 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
3/25
CDCL(T) CDCL solver:
CDCL = conflict-driven clause-learning Decision procedure for propositional CNF formulas
Theory solver:
Decision procedure for conjunctions of theory atoms e.g. Simplex for QF_LRA & Branch-and-Bound for QF_LIA
SAT
Theory
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
4/25
CDCL(LA) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)
4/25
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) CDCL(LA)
4/25
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) CDCL(LA) 𝐵 ⟺ 𝑦 > 0;
4/25
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0;
4/25
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐸 𝐷 𝐶 𝐹 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Decision 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Decision 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ ⊤ 𝐷† CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
¬𝐵 ⟺ 𝑦 ≤ 0; Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ⊥ ⊥ ⊥ ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
4/25
Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) UNSAT! (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ⊥ ⊥ ⊥ ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
5/25
SMT-COMP 2018
Solver Solved Score CPU time Score Solved CVC4 1586.833 69.006 1566 SPASS-SATT 1586.396 64.292 1590 Yices 2.6.0 1583.186 63.901 1567 veriT 1568.212 79.840 1527 SMTInterpol 1548.476 102.257 1521 MathSATn 1536.458 107.673 1461 z3-4.7.1n 1527.249 113.154 1435
- pensmt2
1498.663 131.674 1329 Ctrl-Ergo 1450.082 172.097 1354 SMTRAT-Rat 1297.891 275.918 984 SMTRAT-MCSAT 1090.526 409.015 711 Solver Solved Score CPU time Score Solved SPASS-SATT 6587.626 72.048 6744 Ctrl-Ergo 6221.467 156.086 6259 MathSATn 6135.114 164.626 6528 SMTInterpol 5915.623 204.123 6286 CVC4 5891.019 194.986 6357 Yices 2.6.0 5867.976 209.452 6232 z3-4.7.1n 5733.374 224.539 6195 SMTRAT-Rat 4049.914 515.394 3112 veriT 3155.162 295.434 2734
QF_LIA (Main Track)
QF_LIA = quantifier-free linear integer arithmetic Benchmarks: 6947 Time limit: 1200s
QF_LRA (Main Track)
QF_LRA = quantifier-free linear rational arithmetic Benchmarks: 1649 Time limit: 1200s
6/25
SAT and theory interaction:
6/25
SAT and theory interaction:
6/25
Theory solver extensions:
SAT and theory interaction:
6/25
Data-structure improvements: Theory solver extensions:
SAT and theory interaction:
6/25
Data-structure improvements: Theory solver extensions: Preprocessing:
SAT and theory interaction:
- weakened early pruning [Sebastiani07]
- unate propagations and bound refinements [Dutertre06]
- decision recommendations [Yices]
6/25
Data-structure improvements:
- priority queue for pivot selection [pretty much everyone]
- integer coefficients instead of rational coefficients [veriT]
- backup instead of recalculation [pretty much everyone]
Theory solver extensions:
- unit cube test [Bromberger16]
- bounding transformation [Bromberger18]
- simple rounding and bound propagation [Schrijver86]
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
[…] invented by our team […] invented & published by someone else […] never published but implemented
SAT and theory interaction:
- weakened early pruning [Sebastiani07]
- unate propagations and bound refinements [Dutertre06]
- decision recommendations [Yices]
6/25
Data-structure improvements:
- priority queue for pivot selection [pretty much everyone]
- integer coefficients instead of rational coefficients [veriT]
- backup instead of recalculation [pretty much everyone]
Theory solver extensions:
- unit cube test [Bromberger16]
- bounding transformation [Bromberger18]
- simple rounding and bound propagation [Schrijver86]
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
[…] invented by our team […] invented & published by someone else […] never published but implemented
7/25
SAT and Theory Interaction
7/25
SAT and Theory Interaction Bare minimum requirements:
- theory check for complete model
- return theory conflict for learning
7/25
SAT and Theory Interaction Bare minimum requirements:
- theory check for complete model
- return theory conflict for learning
(Weakened) early pruning [Sebastiani07]
- theory check for some partial models (⇒ early conflicts)
- weaker check if full check too expensive
7/25
SAT and Theory Interaction Bare minimum requirements:
- theory check for complete model
- return theory conflict for learning
(Weakened) early pruning [Sebastiani07]
- theory check for some partial models (⇒ early conflicts)
- weaker check if full check too expensive
Theory Propagation
- unate propagations and bound refinements [Dutertre06]
SAT heuristics based on theory knowledge
7/25
SAT and Theory Interaction Bare minimum requirements:
- theory check for complete model
- return theory conflict for learning
(Weakened) early pruning [Sebastiani07]
- theory check for some partial models (⇒ early conflicts)
- weaker check if full check too expensive
Theory Propagation
- unate propagations and bound refinements [Dutertre06]
- decision recommendations [Yices]
SAT heuristics based on theory knowledge
7/25
SAT and Theory Interaction (Weakened) early pruning [Sebastiani07]
- theory check for some partial models (⇒ early conflicts)
- weaker check if full check too expensive
- decision recommendations [Yices]
8/25
¬𝐵 ⟺ 𝑦 ≤ 0; Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? Early Pruning 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤
8/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Early Pruning 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; Check for theory satisfiability before each decision!
8/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Early Pruning 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; Check for theory satisfiability before each decision! Full theory check is too expensive? (NP for QF_LIA)
8/25
𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Weakened Early Pruning 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; Full theory check is too expensive? (NP for QF_LIA) Do a weaker check! (Check only for rational solutions) Check for theory satisfiability before each decision!
Decision Recommendations
9/25
Model: 𝐵 𝐶 𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Decision Recommendations
9/25
Model: 𝐵 𝐶 Use rational assignment as heuristic
(Assignment is side effect of failed weakened early pruning)
𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; Assignment: 𝑦 = 0, 𝑧 = 1 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Decision Recommendations
9/25
Model: 𝐵 𝐶 Use rational assignment as heuristic
(Assignment is side effect of failed weakened early pruning)
𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; Assignment: 𝑦 = 0, 𝑧 = 1 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Goal: assignment should stay solution for model
Decision Recommendations
9/25
Model: 𝐵 𝐶 Use rational assignment as heuristic
(Assignment is side effect of failed weakened early pruning)
𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; Assignment: 𝑦 = 0, 𝑧 = 1 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Goal: assignment should stay solution for model
(Why? Might reduce time spent on theory checking)
Decision Recommendations
9/25
Model: 𝐵 𝐶 Use rational assignment as heuristic
(Assignment is side effect of failed weakened early pruning)
𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; Assignment: 𝑦 = 0, 𝑧 = 1 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Goal: assignment should stay solution for model
(Why? Might reduce time spent on theory checking)
𝐷† ⟺ 1 ≥ 5; ¬𝐷† ⟺ 1 < 5;
Decision Recommendations
9/25
Model: 𝐵 𝐶 Use rational assignment as heuristic
(Assignment is side effect of failed weakened early pruning)
𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; Assignment: 𝑦 = 0, 𝑧 = 1 𝐷† How to select phase of decision literal?
- r ¬𝐷†
Goal: assignment should stay solution for model ¬𝐷†
(Why? Might reduce time spent on theory checking)
𝐷† ⟺ 1 ≥ 5; ¬𝐷† ⟺ 1 < 5;
Decision Recommendations
11/25
additional instances: 129
QF_LIA (6947 problems)
twice as fast/slow: 389/58
Decision Recommendations
11/25
additional instances: 129
QF_LIA (6947 problems)
additional instances: 116
convert (319 problems)
twice as fast/slow: 389/58
Theory Solver Input:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛}
12/25
Goal:
QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Input: Example:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛}
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
12/25
Goal:
QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Input: Example:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛}
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
12/25
Goal:
QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Input: Example:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛}
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℚ QF_LRA
12/25
Goal:
QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Input: Example:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛}
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℚ QF_LRA
12/25
Goal:
QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Example:
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℤ
12/25
QF_LIA
Input: Goal:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Example:
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℤ
12/25
QF_LIA
Input: Goal:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Example:
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℤ
12/25
QF_LRA: dual simplex QF_LIA: branch and bound
Solver:
QF_LIA
Input: Goal:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
Theory Solver Example:
2𝑦2 ≤ 5𝑦1, 3𝑦2 ≥ 4𝑦1, 2𝑦2 ≤ −5𝑦1 + 15, 2𝑦2 ≥ −3𝑦1 + 4,
𝑦1, 𝑦2 ∈ ℤ
12/25
QF_LRA: dual simplex QF_LIA: branch and bound
Solver:
QF_LIA
Input: Goal:
𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ
- r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
Theory Solver Extensions for absolutely unbounded problems for partially unbounded problems
13/25
Unit Cube Test
(IJCAR 2016)
Bounding Transformation
(IJCAR 2018)
Unbounded Problems
14/25
Unbounded Problems Requirement: unbounded direction
14/25
Unbounded Problems Requirement: unbounded direction
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
14/25
Unbounded Problems Requirement: unbounded direction
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
ℎ′
14/25
Unbounded Problems Requirement: unbounded direction
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
ℎ′
14/25
Unbounded Problems Requirement: unbounded direction
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
ℎ′
14/25
Unbounded Problems Requirement: unbounded direction
ℎ ℎ
14/25
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
Unbounded Problems Requirement: unbounded direction
ℎ ℎ
14/25
ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗
𝑈𝑦 ≤ 𝑐𝑗
𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣
Unbounded Problems partially unbounded
ℎ ℎ′
partially unbounded: both bounded and unbounded directions
14/25
Unbounded Problems absolutely unbounded
ℎ′
absolutely unbounded:
- nly unbounded directions
partially unbounded
14/25
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
- unit cube guarantees
integer solution
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
- unit cube guarantees
integer solution
- computable in
polynomial time
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
- unit cube guarantees
integer solution
- computable in
polynomial time
- incremental
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
- unit cube guarantees
integer solution
- computable in
polynomial time
- incremental
- not complete in general
Overview: Unit Cube Test for absolutely unbounded problems
15/25
(IJCAR 2016)
- unit cube guarantees
integer solution
- computable in
polynomial time
- incremental
- not complete in general
- always succeeds on
- abs. unbd. problems
Results: Unit Cube Test for absolutely unbounded problems
16/25
(IJCAR 2016)
additional instances: 56 more than twice as fast: 705
QF_LIA (6947 problems)
Overview: Bounding Transformation
17/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
for partially unbounded problems
(IJCAR 2018)
Overview: Bounding Transformation
17/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
- transforms unbounded
into bounded problems for partially unbounded problems
(IJCAR 2018)
Overview: Bounding Transformation
17/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
- transforms unbounded
into bounded problems
- computable in
polynomial time for partially unbounded problems
(IJCAR 2018)
Overview: Bounding Transformation
17/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
- transforms unbounded
into bounded problems
- computable in
polynomial time
- solution & conflict
conversion (polynomial time) for partially unbounded problems
(IJCAR 2018)
Overview: Bounding Transformation
17/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
- transforms unbounded
into bounded problems
- computable in
polynomial time
- solution & conflict
conversion (polynomial time)
- incremental
for partially unbounded problems
(IJCAR 2018)
Results: Bounding Transformation
18/25
1 2 1 2 1 1 2 1 −1 1 2 1 2 1 −1
for partially unbounded problems
(IJCAR 2018)
additional instances: 169 more than twice as fast: 167
QF_LIA (6947 problems)
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
21/25
[…] invented by our team […] invented & published by someone else […] never published but implemented
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
21/25
[…] invented by our team […] invented & published by someone else […] never published but implemented
additional instances:1776
QF_LIA (6947 problems)
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
21/25
[…] invented by our team […] invented & published by someone else […] never published but implemented
additional instances:1776
QF_LIA (6947 problems)
22/25
Modular Arithmetic
Type equation here.
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦
Type equation here.
for 𝑦 ∈ ℤ
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦
Type equation here.
UNSAT
for 𝑦 ∈ ℤ
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦
Type equation here.
UNSAT Proof by case distinction:
for 𝑦 ∈ ℤ
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦 0 ≡9 3 ⋅ (3 ⋅ 𝑙)
Type equation here.
𝑦 = 3 ⋅ 𝑙 for 𝑙 ∈ ℤ
UNSAT Proof by case distinction:
for 𝑦 ∈ ℤ
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦 0 ≡9 3 ⋅ (3 ⋅ 𝑙)
Type equation here.
3 ≡9 3 ⋅ (3 ⋅ 𝑙 + 1) 𝑦 = 3 ⋅ 𝑙 for 𝑙 ∈ ℤ 𝑦 = 3 ⋅ 𝑙 + 1 for 𝑙 ∈ ℤ
UNSAT Proof by case distinction:
for 𝑦 ∈ ℤ
22/25
Modular Arithmetic 2 ≡9 3 ⋅ 𝑦 0 ≡9 3 ⋅ (3 ⋅ 𝑙)
Type equation here.
3 ≡9 3 ⋅ (3 ⋅ 𝑙 + 1) 6 ≡9 3 ⋅ (3 ⋅ 𝑙 + 2) 𝑦 = 3 ⋅ 𝑙 for 𝑙 ∈ ℤ 𝑦 = 3 ⋅ 𝑙 + 1 for 𝑙 ∈ ℤ 𝑦 = 3 ⋅ 𝑙 + 2 for 𝑙 ∈ ℤ
UNSAT Proof by case distinction:
for 𝑦 ∈ ℤ
23/25
2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ Modular Arithmetic via If-Then-Else
3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 3 ⋅ 𝑦 − 9
23/25
2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 0 ≤ 𝑦 < 9 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ Modular Arithmetic via If-Then-Else
𝑧 = 3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 𝑧 = 3 ⋅ 𝑦 − 9
23/25
2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 𝑧 ∧ ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦, 𝑧 ∈ ℤ Modular Arithmetic via If-Then-Else 0 ≤ 𝑦 < 9
23/25
( 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 18 ) ∧ ∧ (¬ 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 9 ) ∧ 2 ≡9 3 ⋅ 𝑦 3 ⋅ 𝑦 2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑧 for 𝑦, 𝑧 ∈ ℤ Modular Arithmetic via If-Then-Else 0 ≤ 𝑦 < 9
𝑨 = 3 ⋅ 𝑦
23/25
2 = 𝑨 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑨 = 𝑧 ∧ ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦, 𝑧, 𝑨 ∈ ℤ Modular Arithmetic via If-Then-Else ∧ (¬ 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 9 ) ∧ ( 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 18 ) 0 ≤ 𝑦 < 9
23/25
2 ≡9 3 ⋅ 𝑦 2 = 𝑨 ∧ ( 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 3 ⋅ 𝑦 ) ∧ (¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 𝑧 ) ∧ for 𝑦, 𝑧, 𝑨 ∈ ℤ Modular Arithmetic via If-Then-Else ∧ (¬ 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 9 ) ∧ ( 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 18 )
23/25
2 ≡9 3 ⋅ 𝑦 2 = 𝑨 ∧ ( 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 3 ⋅ 𝑦 ) ∧ (¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 𝑧 ) ∧
- two new variables
- suboptimally connected
for 𝑦, 𝑧, 𝑨 ∈ ℤ Modular Arithmetic via If-Then-Else ∧ (¬ 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 9 ) ∧ ( 3 ⋅ 𝑦 < 18 ∨ 𝑧 = 3 ⋅ 𝑦 − 18 ) 0 ≤ 𝑦 < 9
3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 3 ⋅ 𝑦 − 9
24/25
If-Then-Else: Shared Monomial Lifting 2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ
3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 3 ⋅ 𝑦 − 9
24/25
If-Then-Else: Shared Monomial Lifting 2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ All share the monomial 3 ⋅ 𝑦 ! 0 ≤ 𝑦 < 9
−18 −9 2 = 3 ⋅ 𝑦 + 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ If-Then-Else: Shared Monomial Lifting
24/25
−18 −9 2 = 3 ⋅ 𝑦 + 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ If-Then-Else: Shared Monomial Lifting All divisible by −9 !
24/25
0 ≤ 𝑦 < 9
2 1 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ If-Then-Else: Shared Monomial Lifting
24/25
0 ≤ 𝑦 < 9
𝑨 = 2 𝑨 = 0 𝑨 = 1 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 ∧ 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Bounding
24/25
𝑨 = 2 𝑨 = 0 𝑨 = 1 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 ∧ 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Bounding
24/25
0 ≤ 𝑦 < 9
∧ 2 ≡9 3 ⋅ 𝑦 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧ ∧ ∧
24/25
0 ≤ 𝑦 < 9
¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 2 ≡9 3 ⋅ 𝑦 ∧ 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧ for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing
24/25
0 ≤ 𝑦 < 9
∧ 2 ≡9 3 ⋅ 𝑦 2 ≤ 3 ⋅ 𝑦 − 9 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ ∧ 2 ≥ 3 ⋅ 𝑦 − 9 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧
24/25
0 ≤ 𝑦 < 9
∧ 2 ≡9 3 ⋅ 𝑦 2 3 ≤ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ ∧ 2 3 ≥ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧
24/25
0 ≤ 𝑦 < 9
∧ 2 ≡9 3 ⋅ 𝑦 2 3 ≤ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ ∧ 2 3 ≥ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧
24/25
0 ≤ 𝑦 < 9
∧ 2 ≡9 3 ⋅ 𝑦 1 ≤ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ ∧ 0 ≥ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧
24/25
∧ 2 ≡9 3 ⋅ 𝑦 1 ≤ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ ∧ 0 ≥ 1 ⋅ 𝑦 − 3 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ 1 ≤ 0 If-Then-Else: Preprocessing ¬ 3 ⋅ 𝑦 < 9 ∨ 𝑨 = 0 ∧ 3 ⋅ 𝑦 < 9 ∨ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 1 ∧ ¬ 3 ⋅ 𝑦 < 18 ∨ 𝑨 = 2 ∧
24/25
0 ≤ 𝑦 < 9
25/25
If-Then-Else: Preprocessing additional instances:157
rings (294 problems)
Techniques: shared monomial lifting, ite bounding, (ite reconstruction)
25/25
If-Then-Else: Preprocessing additional instances:157
rings (294 problems)
additional instances: 1422
nec_smt (2800 problems)
Techniques: shared monomial lifting, ite bounding, (ite reconstruction) Techniques: constant-ite simplification, conjunctive-ite compression
SAT and theory interaction:
- weakened early pruning [Sebastiani07]
- unate propagations and bound refinements [Dutertre06]
- decision recommendations [Yices]
Data-structure improvements:
- priority queue for pivot selection [pretty much everyone]
- integer coefficients instead of rational coefficients [veriT]
- backup instead of recalculation [pretty much everyone]
Theory solver extensions:
- unit cube test [Bromberger16]
- bounding transformation [Bromberger18]
- simple rounding and bound propagation [Schrijver86]
Preprocessing:
- if-then-else (reconstruction, lifting, simplification, bounding) [CVC4]
- pseudo-Boolean inequalities [CVC4]
- small CNF transformation [Weidenbach01]
[…] invented by our team […] invented & published by someone else […] never published but implemented