Pseudo-Boolean Solving by Incremental Translation to SAT Pete Manolios Vasilis Papavasileiou Northeastern University {pete,vpap}@ccs.neu.edu October 31, 2011
How to connect, integrate, assemble thousands of components in an aerospace design, subject to global requirements ? Motivation: Industrial Design Problems 1 Photo by Luis Argerich, CC-by-2.0
Motivation: Industrial Design Problems How to connect, integrate, assemble thousands of components in an aerospace design, subject to global requirements ? 1 Photo by Luis Argerich, CC-by-2.0
The core of the problem is pseudo-Boolean constraints! Solution: Synthesizing Architectures 1 1 CAV 2011
Solution: Synthesizing Architectures 1 The core of the problem is pseudo-Boolean constraints! 1 CAV 2011
variables x i integer coefficients c i generalization of clauses can be encoded as CNF 1 Pseudo-Boolean Problem Conjunction of PB constraints Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
integer coefficients c i generalization of clauses can be encoded as CNF 1 Pseudo-Boolean Problem Conjunction of PB constraints Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ ◮ variables x i ∈ { 0 , 1 } 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
generalization of clauses can be encoded as CNF 1 Pseudo-Boolean Problem Conjunction of PB constraints Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ ◮ variables x i ∈ { 0 , 1 } ◮ integer coefficients c i 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
can be encoded as CNF 1 Pseudo-Boolean Problem Conjunction of PB constraints Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ ◮ variables x i ∈ { 0 , 1 } ◮ integer coefficients c i ◮ generalization of clauses 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
Pseudo-Boolean Problem Conjunction of PB constraints Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ ◮ variables x i ∈ { 0 , 1 } ◮ integer coefficients c i ◮ generalization of clauses ◮ can be encoded as CNF 1 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
Pseudo-Boolean (PB) Constraints Pseudo-Boolean Constraint Constraint of the form c 1 x 1 + c 2 x 2 + · · · + c n x n � r ◮ � is one of < , ≤ , = , > , or ≥ ◮ variables x i ∈ { 0 , 1 } ◮ integer coefficients c i ◮ generalization of clauses ◮ can be encoded as CNF 1 Pseudo-Boolean Problem Conjunction of PB constraints 1 Een and Sorensson, JSAT, 2006 (MiniSat+)
Goal: improve SAT-based PB solving! Impressive performance improvements Flexibility, well-engineered interfaces Open source, easy to experiment with Works well for almost propositional instances Two Families of Solvers . . SAT and ILP solvers and techniques can be applied!
Two Families of Solvers . . SAT and ILP solvers and techniques can be applied! Goal: improve SAT-based PB solving! ◮ Impressive performance improvements ◮ Flexibility, well-engineered interfaces ◮ Open source, easy to experiment with ◮ Works well for almost propositional instances
Satisfiable Formulas Just enough constraints to find satisfying assignment Unsatisfiable Formulas We may hit an unsatisfiable core quickly Incremental Translation to SAT We do not have to encode all the constraints
Unsatisfiable Formulas We may hit an unsatisfiable core quickly Incremental Translation to SAT We do not have to encode all the constraints Satisfiable Formulas Just enough constraints to find satisfying assignment
Incremental Translation to SAT We do not have to encode all the constraints Satisfiable Formulas Just enough constraints to find satisfying assignment Unsatisfiable Formulas We may hit an unsatisfiable core quickly
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do returns a partial assignment A , U ← sat ( C ) ( A ) and a set of units ( U ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ . .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′ .
x x x x x x x x x x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2
x x x x x x x x x x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2
x x x x x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2
x x x x x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2
x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 x 3 + x 4 ≥ 2 ¬ x 1 x 2
x x x x Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 x 3 + x 4 ≥ 2 ¬ x 1 x 2
Simplification 2 x 1 + 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 2 x 2 + x 3 + x 4 ≥ 4 ¬ x 1 x 2 x 3 + x 4 ≥ 2 ¬ x 1 x 2 ¬ x 1 x 2 x 3 x 4
Algorithm procedure pb-sat( P ) C ← { c ∈ P : c is a PB-clause } P ← { p ∈ P : p is not a PB-clause } while true do A , U ← sat ( C ) if A = UNSAT then return UNSAT P ← simplify ( P , U ) if A satisfies P then return A P ′ ← { p ∈ P : p falsified by A } if P ′ = ∅ then P ′ ← select ( P ) for all p ∈ P ′ do C ← C ∧ translate ( p ) P ← P \ P ′
Recommend
More recommend