SMT-COMP 2018 QF_LIA (Main Track) QF_LRA (Main Track) QF_LIA = quantifier-free linear integer arithmetic QF_LRA = quantifier-free linear rational arithmetic Benchmarks: 6947 Benchmarks: 1649 Time limit: 1200s Time limit: 1200s Solved CPU time Solved CPU time Solver Solved Solver Solved Score Score Score Score SPASS-SATT 6587.626 72.048 6744 CVC4 1586.833 69.006 1566 Ctrl-Ergo 6221.467 156.086 6259 SPASS-SATT 1586.396 64.292 1590 MathSAT n 6135.114 164.626 6528 Yices 2.6.0 1583.186 63.901 1567 SMTInterpol 5915.623 204.123 6286 veriT 1568.212 79.840 1527 CVC4 5891.019 194.986 6357 SMTInterpol 1548.476 102.257 1521 MathSAT n 1536.458 107.673 1461 Yices 2.6.0 5867.976 209.452 6232 z3-4.7.1 n z3-4.7.1 n 5733.374 224.539 6195 1527.249 113.154 1435 SMTRAT-Rat 4049.914 515.394 3112 opensmt2 1498.663 131.674 1329 veriT 3155.162 295.434 2734 Ctrl-Ergo 1450.082 172.097 1354 SMTRAT-Rat 1297.891 275.918 984 SMTRAT-MCSAT 1090.526 409.015 711 5/25
6/25
SAT and theory interaction: 6/25
SAT and theory interaction: Theory solver extensions: 6/25
SAT and theory interaction: Theory solver extensions: Data-structure improvements: 6/25
SAT and theory interaction: Theory solver extensions: Data-structure improvements: Preprocessing: 6/25
[…] 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] Theory solver extensions: • unit cube test [Bromberger16] • bounding transformation [Bromberger18] • simple rounding and bound propagation [Schrijver86] 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] Preprocessing: • if-then-else (reconstruction, lifting, simplification, bounding) [CVC4] • pseudo-Boolean inequalities [CVC4] • small CNF transformation [Weidenbach01] 6/25
[…] 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] Theory solver extensions: • unit cube test [Bromberger16] • bounding transformation [Bromberger18] • simple rounding and bound propagation [Schrijver86] 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] Preprocessing: • if-then-else (reconstruction, lifting, simplification, bounding) [CVC4] • pseudo-Boolean inequalities [CVC4] • small CNF transformation [Weidenbach01] 6/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] 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 • decision recommendations [Yices] 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 SAT heuristics based on theory knowledge • decision recommendations [Yices] 7/25
Early Pruning 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ ⊤ Theory Satisfiable? No! 𝐷 † Model: 𝐹 ¬𝐵 𝐶 𝐹 ⟺ 𝑧 < 0 ; 𝐵 ⟺ 𝑦 > 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; ¬𝐵 ⟺ 𝑦 ≤ 0; 𝐷 ⟺ 𝑦 < 0 ; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐹 ⟺ 𝑧 < 0 ; 8/25
Early Pruning 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Check for theory satisfiability before each decision! 𝐵 ⟺ 𝑦 > 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐷 ⟺ 𝑦 < 0 ; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐹 ⟺ 𝑧 < 0 ; 8/25
Early Pruning 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Check for theory satisfiability before each decision! Full theory check is too expensive? (NP for QF_LIA) 𝐵 ⟺ 𝑦 > 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐷 ⟺ 𝑦 < 0 ; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐹 ⟺ 𝑧 < 0 ; 8/25
Weakened Early Pruning 𝐵 ∨ 𝐶 ∧ 𝐷 ∨ 𝐸 ∧ 𝐹 ∧ ¬ 𝐵 ⊥ ⊤ ⊤ ⊤ Check for theory satisfiability before each decision! Full theory check is too expensive? (NP for QF_LIA) Do a weaker check! (Check only for rational solutions) 𝐵 ⟺ 𝑦 > 0; 𝐶 ⟺ 𝑦 + 𝑧 > 0; 𝐷 ⟺ 𝑦 < 0 ; 𝐸 ⟺ 𝑦 + 𝑧 > 4; 𝐹 ⟺ 𝑧 < 0 ; 8/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; Model: 𝐵 𝐶 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? Use rational assignment as heuristic (Assignment is side effect of failed weakened early pruning) 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; Model: 𝐵 𝐶 Assignment: 𝑦 = 0, 𝑧 = 1 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? Use rational assignment as heuristic (Assignment is side effect of failed weakened early pruning) Goal: assignment should stay solution for model 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; Model: 𝐵 𝐶 Assignment: 𝑦 = 0, 𝑧 = 1 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? Use rational assignment as heuristic (Assignment is side effect of failed weakened early pruning) Goal: assignment should stay solution for model (Why? Might reduce time spent on theory checking) 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; Model: 𝐵 𝐶 Assignment: 𝑦 = 0, 𝑧 = 1 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? Use rational assignment as heuristic (Assignment is side effect of failed weakened early pruning) Goal: assignment should stay solution for model (Why? Might reduce time spent on theory checking) 𝐷 † ⟺ 1 ≥ 5 ; ¬𝐷 † ⟺ 1 < 5 ; 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; Model: 𝐵 𝐶 Assignment: 𝑦 = 0, 𝑧 = 1 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations 𝐷 † or ¬𝐷 † How to select phase of decision literal? Use rational assignment as heuristic (Assignment is side effect of failed weakened early pruning) Goal: assignment should stay solution for model (Why? Might reduce time spent on theory checking) 𝐷 † ⟺ 1 ≥ 5 ; ¬𝐷 † ⟺ 1 < 5 ; 𝐵 ⟺ 𝑦 ≥ 0; 𝐶 ⟺ 𝑧 ≥ 𝑦 + 1 ; ¬𝐷 † Model: 𝐵 𝐶 Assignment: 𝑦 = 0, 𝑧 = 1 𝐷 ⟺ 𝑧 ≥ 5 ; 9/25
Decision Recommendations QF_LIA (6947 problems) additional instances: 129 twice as fast/slow: 389/58 11/25
Decision Recommendations QF_LIA (6947 problems) convert (319 problems) additional instances: 116 additional instances: 129 twice as fast/slow: 389/58 11/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℚ QF_LRA 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℚ QF_LRA 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℤ QF_LIA 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℤ QF_LIA 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Solver: QF_LRA: dual simplex QF_LIA: branch and bound Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℤ QF_LIA 12/25
Theory Solver 𝑈 𝑦 ≤ 𝑐 𝑗 𝑏 𝑗 𝑗 = 1, … , 𝑛} Input: QF_LRA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℚ or QF_LIA: 𝑦 1 , … , 𝑦 𝑜 ∈ ℤ Goal: Solver: QF_LRA: dual simplex QF_LIA: branch and bound Example: 2𝑦 2 ≤ 5𝑦 1 , 3𝑦 2 ≥ 4𝑦 1 , 2𝑦 2 ≤ −5𝑦 1 + 15, 2𝑦 2 ≥ −3𝑦 1 + 4, 𝑦 1 , 𝑦 2 ∈ ℤ QF_LIA 12/25
Theory Solver Extensions Unit Cube Test Bounding Transformation (IJCAR 2018) (IJCAR 2016) 2 2 1 1 1 1 2 1 2 2 −1 1 1 0 −1 1 0 for partially unbounded for absolutely unbounded problems problems 13/25
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 ℎ ∈ ℚ 𝑜 is bounded iff 𝑈 𝑦 ≤ 𝑐 𝑗 ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ 𝑜 . 𝑏 𝑗 𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ 𝑈 𝑦 ≤ 𝑣 14/25
Unbounded Problems ℎ ℎ Requirement: unbounded direction ℎ ∈ ℚ 𝑜 is bounded iff 𝑈 𝑦 ≤ 𝑐 𝑗 ∃𝑚, 𝑣 ∈ ℤ. ∀𝑦 ∈ ℚ 𝑜 . 𝑏 𝑗 𝑗 = 1, … , 𝑛} → 𝑚 ≤ ℎ 𝑈 𝑦 ≤ 𝑣 14/25
Unbounded Problems ℎ ℎ′ partially unbounded partially unbounded: both bounded and unbounded directions 14/25
Unbounded Problems ℎ′ partially unbounded absolutely unbounded absolutely unbounded: only unbounded directions 14/25
Overview: Unit Cube Test (IJCAR 2016) for absolutely unbounded problems 15/25
Overview: Unit Cube Test (IJCAR 2016) • unit cube guarantees integer solution for absolutely unbounded problems 15/25
Overview: Unit Cube Test (IJCAR 2016) • unit cube guarantees integer solution • computable in polynomial time for absolutely unbounded problems 15/25
Overview: Unit Cube Test (IJCAR 2016) • unit cube guarantees integer solution • computable in polynomial time • incremental for absolutely unbounded problems 15/25
Overview: Unit Cube Test (IJCAR 2016) • unit cube guarantees integer solution • computable in polynomial time • incremental • not complete in general for absolutely unbounded problems 15/25
Overview: Unit Cube Test (IJCAR 2016) • unit cube guarantees integer solution • computable in polynomial time • incremental • not complete in general • always succeeds on abs. unbd. problems for absolutely unbounded problems 15/25
Results: Unit Cube Test (IJCAR 2016) QF_LIA (6947 problems) for absolutely unbounded additional instances: 56 problems more than twice as fast: 705 16/25
Overview: Bounding Transformation (IJCAR 2018) 2 2 1 1 1 1 2 1 2 2 −1 1 1 0 −1 1 0 for partially unbounded problems 17/25
Overview: Bounding Transformation (IJCAR 2018) • transforms unbounded 2 2 into bounded problems 1 1 1 1 2 1 2 2 −1 1 1 0 −1 1 0 for partially unbounded problems 17/25
Overview: Bounding Transformation (IJCAR 2018) • transforms unbounded 2 2 into bounded problems 1 1 • computable in 1 1 2 1 2 polynomial time 2 −1 1 1 0 −1 1 0 for partially unbounded problems 17/25
Overview: Bounding Transformation (IJCAR 2018) • transforms unbounded 2 2 into bounded problems 1 1 • computable in 1 1 2 1 2 polynomial time • solution & conflict conversion (polynomial 2 time) −1 1 1 0 −1 1 0 for partially unbounded problems 17/25
Overview: Bounding Transformation (IJCAR 2018) • transforms unbounded 2 2 into bounded problems 1 1 • computable in 1 1 2 1 2 polynomial time • solution & conflict conversion (polynomial 2 time) −1 1 1 0 • incremental −1 1 0 for partially unbounded problems 17/25
Results: Bounding Transformation (IJCAR 2018) QF_LIA (6947 problems) 2 2 1 1 1 1 2 1 2 2 −1 1 1 0 −1 1 0 for partially unbounded additional instances: 169 problems more than twice as fast: 167 18/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 Preprocessing: • if-then-else (reconstruction, lifting, simplification, bounding) [CVC4] • pseudo-Boolean inequalities [CVC4] • small CNF transformation [Weidenbach01] QF_LIA (6947 problems) additional instances:1776 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] QF_LIA (6947 problems) additional instances:1776 21/25
Modular Arithmetic Type equation here. 22/25
Modular Arithmetic 2 ≡ 9 3 ⋅ 𝑦 for 𝑦 ∈ ℤ Type equation here. 22/25
Recommend
More recommend