About the SAT Solvers
Limmat, Compsat, Funex
and the QBF Solver
Quantor
May 2003 Armin Biere Computer Systems Institute ETH Z¨ urich, Switzerland
SAT’03, Santa Margherita Ligure, Portofino, Italy
Limmat , Compsat , Funex and the QBF Solver Quantor May 2003 - - PowerPoint PPT Presentation
About the SAT Solvers Limmat , Compsat , Funex and the QBF Solver Quantor May 2003 Armin Biere Computer Systems Institute ETH Z urich, Switzerland SAT03, Santa Margherita Ligure, Portofino, Italy Separate Clause Structure limmat+funex
SAT’03, Santa Margherita Ligure, Portofino, Italy
limmat+funex 2
clause stack w0: w1: idx: sz: w0: w1: idx: sz: sz: w0: w1: idx:
idx:
idx:
idx:
1 2
1 3 2 −2 1 −3 literals stack
1 4 8 9 5 6 7 3 2 10
5 5 6 8 8 9 1 1 3 −1 stack variable 2 1 2 1 2 3 2 variable index
2 2 3 in which resp. literal is watched size idx of first literal idx of 2nd watched idx of 1st watched
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
limmat+funex 3
– no traversal when assigning literals where the other watched is satisfied
– heuristics: shorter clauses as reasons in assignments preferred
– Zchaff and Compsat: occurrence stacks store literal positions directly
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
compsat 4
eg [VanGelder] 1 4 2 7 8 5 9 3 traversal X X X watched 1 4 2 7 8 5 9 3 X X X watched X 1 4 2 8 5 3 X X watched X 7 9 assignment assignment assignment
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
compsat 5
– as in BDD library ABCD: minimize time by minimizing space
– compact stack with 8 Byte anchor (C++ STL requires 12 Byte anchor) – elements can be 16 bit or 32 bit (may change dynamically) – fully configurable ⇒ therefore very low memory footprint
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
compsat 6
– at least one restart required
– added new test cases with restart intervals of length 1
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
funex 7
– cache of satisfied clauses reduces time spent in decision function
– decision functions: dlis, horn, chaff, berkmin – default selection: (horn.berkminˆ3000)ˆinfinity
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
quantor 8
∃ a,b [ ∀x [ ∃ c,d [ f(a,b,c,d,x) ] ] ] ≡ ∃ a,b [ ∃ c,d [ f(a,b,c,d,x) ] <x/1> ∧ ∃ c,d [ f(a,b,c,d,x) ] <x/0> ] ≡ ∃ a,b [ ∃ c,d,x [ x∧ f(a,b,c,d,x) ] ∧ ∃ c,d [ f(a,b, c,d ,0) ] ] ≡ ∃ a,b [ ∃ c,d,x [ x∧ f(a,b,c,d,x) ] ∧ ∃ c′,d′ [ f(a,b, c′,d′ ,0) ] ] ≡ ∃ a,b,c,d,c′,d′ [ x∧ f(a,b,c,d,x)∧ f(a,b,c′,d′,0) ]
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
quantor 9
∃ a,b [ ∀x,y [ ∃ c,d [ f(a,b,c,d,x,y) ] ] ] ≡ ∃ a,b [ ∀y [ ∀x [ ∃ c,d [ f(a,b,c,d,x,y) ] ] ] ] ≡ ∃ a,b [ ∀y [ ∃ c,d [ f(a,b,c,d,x,y) ] <x/1> ∧ ∃ c,d [ f(a,b,c,d,x,y) ] <x/0> ] ] ≡ ∃ a,b [ ∀y [ ∃ c,d,x [ x∧ f(a,b,c,d,x,y) ] ∧ ∃ c,d [ f(a,b, c,d ,0,y) ] ] ] ≡ ∃ a,b [ ∀y [ ∃ c,d,x [ x∧ f(a,b,c,d,x,y) ] ∧ ∃ c′,d′ [ f(a,b, c′,d′ ,0,y) ] ] ] ≡ ∃ a,b [ ∀y [ ∃ c,d,c′,d′ [ x∧ f(a,b,c,d,x,y)∧ f(a,b,c′,d′,0,y) ] ] ]
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
quantor 10
– heuristically maximizes the number of removed clauses after expansion
– unit resolution – pruning of unates, zombies, and empty scopes – elimination of satisfied clauses – garbage collection of indices
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich
quantor 11
– investigate when to eliminate universal or existential variables
– facts involving universal variables may lead to early conflicts – existential implications or equivalences may lead to elimination
– eg [PlaistedBiereZhu] or simply use BDDs
SAT’03 – Santa Margherita Ligure – Portofino – Italy – May 2003 Armin Biere – ETH Z¨ urich