A CDCL(LA) Solver SPASS-SATT A CDCL(LA) Solver Translation: fun - - PowerPoint PPT Presentation

a cdcl la solver
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

SPASS-SATT A CDCL(LA) Solver

slide-2
SLIDE 2

SPASS-SATT A CDCL(LA) Solver

Translation: fun (=SPASS) sated (=SATT)

slide-3
SLIDE 3

SPASS-SATT A CDCL(LA) Solver

Translation: fun (=SPASS) sated (=SATT) being sick/tired of having fun…

slide-4
SLIDE 4

2/25

Quantifier-Free Linear Arithmetic 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-5
SLIDE 5

2/25

Quantifier-Free Linear Arithmetic

Signature: Σ𝑀𝐵 ≔ {+, −, <, ≤, ≥, >, 0, 1, 2, … }

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-6
SLIDE 6

2/25

Quantifier-Free Linear Arithmetic

Signature: Σ𝑀𝐵 ≔ {+, −, <, ≤, ≥, >, 0, 1, 2, … } Multiplication only as syntactic sugar! E.g.: 3 ⋅ 𝑦 ↦ 𝑦 + 𝑦 + 𝑦

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-7
SLIDE 7

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)

slide-8
SLIDE 8

3/25

CDCL(T) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-9
SLIDE 9

3/25

CDCL(T) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-10
SLIDE 10

3/25

CDCL(T) CDCL solver:

CDCL = conflict-driven clause-learning Decision procedure for propositional CNF formulas

SAT 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-11
SLIDE 11

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)

slide-12
SLIDE 12

4/25

CDCL(LA) 𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0)

slide-13
SLIDE 13

4/25

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) CDCL(LA)

slide-14
SLIDE 14

4/25

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) CDCL(LA) 𝐵 ⟺ 𝑦 > 0;

slide-15
SLIDE 15

4/25

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0;

slide-16
SLIDE 16

4/25

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-17
SLIDE 17

4/25

𝑦 > 0 ∨ 𝑦 + 𝑧 > 0 ∧ 𝑦 < 0 ∨ 𝑦 + 𝑧 < 3 ∧ 𝑧 < 0 ∧ ¬(𝑦 > 0) 𝐵 𝐸 𝐷 𝐶 𝐹 𝐵 CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-18
SLIDE 18

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-19
SLIDE 19

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-20
SLIDE 20

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-21
SLIDE 21

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-22
SLIDE 22

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-23
SLIDE 23

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-24
SLIDE 24

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-25
SLIDE 25

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 ⊥ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-26
SLIDE 26

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-27
SLIDE 27

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Unit Propagation 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-28
SLIDE 28

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Decision 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-29
SLIDE 29

4/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 Model: Decision 𝐹 ¬𝐵 𝐶 ⊥ ⊤ ⊤ ⊤ ⊤ 𝐷† CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0;

slide-30
SLIDE 30

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-31
SLIDE 31

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-32
SLIDE 32

4/25

¬𝐵 ⟺ 𝑦 ≤ 0; Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? CDCL(LA) 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-33
SLIDE 33

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-34
SLIDE 34

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-35
SLIDE 35

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ⊥ ⊥ ⊥ ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-36
SLIDE 36

4/25

Model: 𝐹 ¬𝐵 𝐶 𝐷† Conflict Analysis: CDCL(LA) UNSAT! (¬𝐹 ∧ 𝐵 ∧ ¬𝐶) ⊥ ⊥ ⊥ ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-37
SLIDE 37

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

slide-38
SLIDE 38

6/25

slide-39
SLIDE 39

SAT and theory interaction:

6/25

slide-40
SLIDE 40

SAT and theory interaction:

6/25

Theory solver extensions:

slide-41
SLIDE 41

SAT and theory interaction:

6/25

Data-structure improvements: Theory solver extensions:

slide-42
SLIDE 42

SAT and theory interaction:

6/25

Data-structure improvements: Theory solver extensions: Preprocessing:

slide-43
SLIDE 43

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

slide-44
SLIDE 44

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

slide-45
SLIDE 45

7/25

SAT and Theory Interaction

slide-46
SLIDE 46

7/25

SAT and Theory Interaction Bare minimum requirements:

  • theory check for complete model
  • return theory conflict for learning
slide-47
SLIDE 47

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
slide-48
SLIDE 48

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]
slide-49
SLIDE 49

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]
slide-50
SLIDE 50

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]
slide-51
SLIDE 51

8/25

¬𝐵 ⟺ 𝑦 ≤ 0; Model: 𝐹 ¬𝐵 𝐶 𝐷† Theory Satisfiable? Early Pruning 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; No! 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤

slide-52
SLIDE 52

8/25

𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Early Pruning 𝐵 ⟺ 𝑦 > 0; 𝐹 ⟺ 𝑧 < 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐷 ⟺ 𝑦 < 0; Check for theory satisfiability before each decision!

slide-53
SLIDE 53

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)

slide-54
SLIDE 54

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!

slide-55
SLIDE 55

Decision Recommendations

9/25

Model: 𝐵 𝐶 𝐵 ⟺ 𝑦 ≥ 0; 𝐷 ⟺ 𝑧 ≥ 5; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1; 𝐷† How to select phase of decision literal?

  • r ¬𝐷†
slide-56
SLIDE 56

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 ¬𝐷†
slide-57
SLIDE 57

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

slide-58
SLIDE 58

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)

slide-59
SLIDE 59

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;

slide-60
SLIDE 60

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;

slide-61
SLIDE 61

Decision Recommendations

11/25

additional instances: 129

QF_LIA (6947 problems)

twice as fast/slow: 389/58

slide-62
SLIDE 62

Decision Recommendations

11/25

additional instances: 129

QF_LIA (6947 problems)

additional instances: 116

convert (319 problems)

twice as fast/slow: 389/58

slide-63
SLIDE 63

Theory Solver Input:

𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛}

12/25

Goal:

QF_LRA: 𝑦1, … , 𝑦𝑜 ∈ ℚ

  • r QF_LIA: 𝑦1, … , 𝑦𝑜 ∈ ℤ
slide-64
SLIDE 64

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, … , 𝑦𝑜 ∈ ℤ
slide-65
SLIDE 65

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, … , 𝑦𝑜 ∈ ℤ
slide-66
SLIDE 66

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, … , 𝑦𝑜 ∈ ℤ
slide-67
SLIDE 67

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, … , 𝑦𝑜 ∈ ℤ
slide-68
SLIDE 68

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, … , 𝑦𝑜 ∈ ℤ
slide-69
SLIDE 69

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, … , 𝑦𝑜 ∈ ℤ
slide-70
SLIDE 70

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, … , 𝑦𝑜 ∈ ℤ
slide-71
SLIDE 71

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, … , 𝑦𝑜 ∈ ℤ
slide-72
SLIDE 72

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)

slide-73
SLIDE 73

Unbounded Problems

14/25

slide-74
SLIDE 74

Unbounded Problems Requirement: unbounded direction

14/25

slide-75
SLIDE 75

Unbounded Problems Requirement: unbounded direction

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

14/25

slide-76
SLIDE 76

Unbounded Problems Requirement: unbounded direction

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

ℎ′

14/25

slide-77
SLIDE 77

Unbounded Problems Requirement: unbounded direction

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

ℎ′

14/25

slide-78
SLIDE 78

Unbounded Problems Requirement: unbounded direction

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

ℎ′

14/25

slide-79
SLIDE 79

Unbounded Problems Requirement: unbounded direction

ℎ ℎ

14/25

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

slide-80
SLIDE 80

Unbounded Problems Requirement: unbounded direction

ℎ ℎ

14/25

ℎ ∈ ℚ𝑜 is bounded iff ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ𝑜. 𝑏𝑗

𝑈𝑦 ≤ 𝑐𝑗

𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ𝑈𝑦 ≤ 𝑣

slide-81
SLIDE 81

Unbounded Problems partially unbounded

ℎ ℎ′

partially unbounded: both bounded and unbounded directions

14/25

slide-82
SLIDE 82

Unbounded Problems absolutely unbounded

ℎ′

absolutely unbounded:

  • nly unbounded directions

partially unbounded

14/25

slide-83
SLIDE 83

Overview: Unit Cube Test for absolutely unbounded problems

15/25

(IJCAR 2016)

slide-84
SLIDE 84

Overview: Unit Cube Test for absolutely unbounded problems

15/25

(IJCAR 2016)

  • unit cube guarantees

integer solution

slide-85
SLIDE 85

Overview: Unit Cube Test for absolutely unbounded problems

15/25

(IJCAR 2016)

  • unit cube guarantees

integer solution

  • computable in

polynomial time

slide-86
SLIDE 86

Overview: Unit Cube Test for absolutely unbounded problems

15/25

(IJCAR 2016)

  • unit cube guarantees

integer solution

  • computable in

polynomial time

  • incremental
slide-87
SLIDE 87

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
slide-88
SLIDE 88

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
slide-89
SLIDE 89

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)

slide-90
SLIDE 90

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)

slide-91
SLIDE 91

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)

slide-92
SLIDE 92

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)

slide-93
SLIDE 93

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)

slide-94
SLIDE 94

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)

slide-95
SLIDE 95

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)

slide-96
SLIDE 96

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

slide-97
SLIDE 97

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)

slide-98
SLIDE 98

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)

slide-99
SLIDE 99

22/25

Modular Arithmetic

Type equation here.

slide-100
SLIDE 100

22/25

Modular Arithmetic 2 ≡9 3 ⋅ 𝑦

Type equation here.

for 𝑦 ∈ ℤ

slide-101
SLIDE 101

22/25

Modular Arithmetic 2 ≡9 3 ⋅ 𝑦

Type equation here.

UNSAT

for 𝑦 ∈ ℤ

slide-102
SLIDE 102

22/25

Modular Arithmetic 2 ≡9 3 ⋅ 𝑦

Type equation here.

UNSAT Proof by case distinction:

for 𝑦 ∈ ℤ

slide-103
SLIDE 103

22/25

Modular Arithmetic 2 ≡9 3 ⋅ 𝑦 0 ≡9 3 ⋅ (3 ⋅ 𝑙)

Type equation here.

𝑦 = 3 ⋅ 𝑙 for 𝑙 ∈ ℤ

UNSAT Proof by case distinction:

for 𝑦 ∈ ℤ

slide-104
SLIDE 104

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 𝑦 ∈ ℤ

slide-105
SLIDE 105

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 𝑦 ∈ ℤ

slide-106
SLIDE 106

23/25

2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ Modular Arithmetic via If-Then-Else

slide-107
SLIDE 107

3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 3 ⋅ 𝑦 − 9

23/25

2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 0 ≤ 𝑦 < 9 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ Modular Arithmetic via If-Then-Else

slide-108
SLIDE 108

𝑧 = 3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 𝑧 = 3 ⋅ 𝑦 − 9

23/25

2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 𝑧 ∧ ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦, 𝑧 ∈ ℤ Modular Arithmetic via If-Then-Else 0 ≤ 𝑦 < 9

slide-109
SLIDE 109

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

slide-110
SLIDE 110

𝑨 = 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

slide-111
SLIDE 111

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 )

slide-112
SLIDE 112

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

slide-113
SLIDE 113

3 ⋅ 𝑦 − 18 3 ⋅ 𝑦 3 ⋅ 𝑦 − 9

24/25

If-Then-Else: Shared Monomial Lifting 2 = 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ

slide-114
SLIDE 114

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

slide-115
SLIDE 115

−18 −9 2 = 3 ⋅ 𝑦 + 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ If-Then-Else: Shared Monomial Lifting

24/25

slide-116
SLIDE 116

−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

slide-117
SLIDE 117

2 1 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ If-Then-Else: Shared Monomial Lifting

24/25

0 ≤ 𝑦 < 9

slide-118
SLIDE 118

𝑨 = 2 𝑨 = 0 𝑨 = 1 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 ∧ 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Bounding

24/25

slide-119
SLIDE 119

𝑨 = 2 𝑨 = 0 𝑨 = 1 𝑗𝑔 3 ⋅ 𝑦 < 9 𝑗𝑔 3 ⋅ 𝑦 < 18 ∧ 2 ≡9 3 ⋅ 𝑦 ∧ 2 = 3 ⋅ 𝑦 − 9 ⋅ 𝑨 0 ≤ 𝑨 ≤ 2 ∧ for 𝑦, 𝑨 ∈ ℤ If-Then-Else: Bounding

24/25

0 ≤ 𝑦 < 9

slide-120
SLIDE 120

∧ 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

slide-121
SLIDE 121

¬ 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

slide-122
SLIDE 122

∧ 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

slide-123
SLIDE 123

∧ 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

slide-124
SLIDE 124

∧ 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

slide-125
SLIDE 125

∧ 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

slide-126
SLIDE 126

∧ 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

slide-127
SLIDE 127

25/25

If-Then-Else: Preprocessing additional instances:157

rings (294 problems)

Techniques: shared monomial lifting, ite bounding, (ite reconstruction)

slide-128
SLIDE 128

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

slide-129
SLIDE 129

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