A Verified SAT Solver with Watched Literals Using Imperative HOL - PowerPoint PPT Presentation
A Verified SAT Solver with Watched Literals Using Imperative HOL Mathias Jasmin C. Peter Fleury Blanchette Lammich How reliable are SAT solvers? Two ways to ensure correctness: certify the certificate - certificates are huge
Watched literals invariant 1. Watch one true literal 2. or watch two unset literals 3. or watch a false literal β¨ if all other literals are false or an update is pending unless a conflict has been found οΏ½ 11
Watched literals invariant (less wrong) this literal has been set earlier 1. Watch one true literal 2. or watch two unset literals 3. or watch a false literal β¨ if all other literals are false or an update is pending unless a conflict has been found οΏ½ 11
Watched literals invariant 1. Watch any literal β¨ 1. Watch one true literal if there is a true literal 2. or watch two unset literals 2. or watch two unset literals 3. or watch a false literal β¨ 3. or watch a false literal β¨ if all other literals are false if all other literals are false οΏ½ 12
Watched literals invariant with blocking literals 1. Watch any literal β¨ 1. Watch one true literal if there is a true literal 2. or watch two unset literals 2. or watch two unset literals 3. or watch a false literal β¨ 3. or watch a false literal β¨ if all other literals are false if all other literals are false οΏ½ 12
Watched literals invariant with blocking literals Β¬B C A β¨ β¨ 1. Watch any literal β¨ 1. Watch one true literal if there is a true literal 2. or watch two unset literals 2. or watch two unset literals 3. or watch a false literal β¨ 3. or watch a false literal β¨ if all other literals are false if all other literals are false οΏ½ 12
Watched literals invariant with blocking literals Β¬B C A β¨ β¨ 1. Watch any literal β¨ 1. Watch one true literal if there is a true literal 2. or watch two unset literals 2. or watch two unset literals 3. or watch a false literal β¨ 3. or watch a false literal β¨ if all other literals are false if all other literals are false (not yet refined to code) οΏ½ 12
Blocking Literals β¨ (historical perspective) β’ Barcelogic Tool (?): save other watched literal β¨ in watch list β’ Chu et al. (08): save some literals in watch list β’ Minisat 2.1 (08): save one literal from the clause β¨ in watch list β’ Ryan (04): binary/ternary clause handling οΏ½ 13
Finding invariants (11 new ones) No high-level description sledgehammer οΏ½ 14
Finding invariants (11 new ones) No high-level description sledgehammer Correctness theorem in Isabelle If S is well-formed and S β TWL ! T then S β CDCL ! T οΏ½ 14
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic Program refines Refined SAT solver β¨ Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 15
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines refines Watched Literals Algorithm β¨ Refined SAT solver β¨ Non-deterministic Program Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 15
Picking Next Clause propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause (L, C) U } ) S οΏ½ 16
Refinement Framework: β¨ non-deterministic exception monad propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause (L, C) U } ) S οΏ½ 16
Refinement Framework: β¨ non-deterministic exception monad propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) Assertions ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause (L, C) U } ) S οΏ½ 16
Refinement Framework: β¨ non-deterministic exception monad propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) Non-deterministic β¨ ( Ξ» T. do { getting of a clause ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause (L, C) U } ) S οΏ½ 16
Refinement Framework: β¨ non-deterministic exception monad propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause (L, C) U } ) S οΏ½ 16
β£ More deterministic (order of the rules) β£ But still non deterministic (decisions) β£ Goals of the form οΏ½ 17
β£ More deterministic (order of the rules) β£ But still non deterministic (decisions) β£ Goals of the form in Isabelle propagate_conflict_literal L S β€ SPEC( Ξ» T. S β TWL* T) οΏ½ 17
VCGβs goals hard to read Very tempting to write fragile proofs sledgehammer οΏ½ 18
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic Program refines Refined SAT Solver Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 19
Abstract CDCL Previous work refines Watched Literals Algorithm β¨ Watched Literals Calculus Transition system Non-deterministic Program refines refines Refined SAT Solver Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 19
DPLL with Watched Literals Clauses after refinement β¨ Clauses (multisets) (lists) 1. Β¬B C A 1. Β¬B C A β¨ β¨ β¨ Β¬A 2. Β¬C Β¬B 2. Β¬C Β¬B Β¬A β¨ Β¬A 3. Β¬A Β¬B C 3. C Β¬B β¨ β¨ 4. Β¬A B 4. Β¬A B β¨ To update: A: Β¬A: 4 C: 1,3 Β¬C: 2 B: 4 Β¬B: 1,2,3 οΏ½ 20
propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause L C U } propagate_conflict_literal_list L S := ) WHILE T ( Ξ» (w, T). w < length (watched_by T L)) S ( Ξ» (w, T). do { C β (watched_by T L) ! w; update_clause_list L C T } ) (S, 0) οΏ½ 21
propagate_conflict_literal L S := WHILE T ( Ξ» T. clauses_to_update T β {}) ( Ξ» T. do { ASSERT(clauses_to_update T β {}) C β SPEC ( Ξ» C. C β clauses_to_update T); U β remove_from_clauses_to_update C T; update_clause L C U } propagate_conflict_literal_list L S := ) WHILE T ( Ξ» (w, T). w < length (watched_by T L)) S ( Ξ» (w, T). do { C β (watched_by T L) ! w; update_clause_list L C T } ) (S, 0) propagate_conflict_literal_list L S β€ β conversion_between_states (propagate_conflict_literal L T) in Isabelle οΏ½ 21
More new invariants Aligning goals is hard... Fast code uses many invariants Forgotten and new invariants sledgehammer οΏ½ 22
Choice on the heuristics Choice on the data structures Prepare code synthesis οΏ½ 23
Decision heuristic β£ Variable-move-to-front heuristic β£ No correctness w.r.t. a standard implementation β£ Behaves correctly: β’ returns an unset literal if there is one β’ no exception (out-of-bound array accesses) οΏ½ 24
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines Refined SAT Solver Towards efficient data structures refines Executable SAT Solver Standard ML οΏ½ 25
Abstract CDCL Previous work refines Refined SAT Solver Watched Literals Calculus Towards efficient data structures Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines Executable SAT Solver Standard ML refines οΏ½ 25
sepref_definition executable_version is βΉpropagate_conflict_literal_heuristicsβΊ :: βΉunat_lit_assn k * a state_assn d οΏ½ a state_assnβΊ by sepref Synthesise imperative code and a refinement relation οΏ½ 26
sepref_definition executable_version is βΉpropagate_conflict_literal_heuristicsβΊ :: βΉunat_lit_assn k * a state_assn d οΏ½ a state_assnβΊ by sepref Synthesise imperative code and a refinement relation main_loop S := β¨ heap_WHILET ( Ξ» (finished, _). return (Β¬ finished)) ( Ξ» (_, state). propagate state β€ analyse_or_decide) (False, state) β€ ( Ξ» (_, final_state). return final_state) οΏ½ 26
sepref_definition executable_version is βΉpropagate_conflict_literal_heuristicsβΊ :: βΉunat_lit_assn k * a state_assn d οΏ½ a state_assnβΊ by sepref Synthesise imperative code and a refinement relation fun main_loop state = β¨ fn () => β¨ let β¨ val (_, final_state) = β¨ heap_WHILET β¨ (fn (done, _) => (fn () => not done)) β¨ (fn (_, state) => β¨ (analyse_or_decide (propagate state ()) ())) β¨ (false, xi) β¨ (); β¨ in final_state end; οΏ½ 26
sepref_definition executable_version is βΉpropagate_conflict_literal_heuristicsβΊ :: βΉunat_lit_assn k * a state_assn d οΏ½ a state_assnβΊ by sepref Synthesise imperative code and a refinement relation fun cdcl_twl_stgy_prog_wl_D_code x = fun main_loop state = β¨ (fn xi => fn () => fn () => β¨ let val a = let β¨ heap_WHILET (fn (a1, _) => (fn () => (not a1))) val (_, final_state) = β¨ (fn (_, a2) => (fn f_ => fn () => f_ ((unit_propagation_outer_loop_wl_D a2) ()) ()) heap_WHILET β¨ cdcl_twl_o_prog_wl_D_code) (fn (done, _) => (fn () => not done)) β¨ (false, xi) (); in (fn (_, state) => β¨ let (analyse_or_decide (propagate state ()) ())) β¨ val (_, aa) = a; in (false, xi) β¨ (fn () => aa) end (); β¨ () in final_state end; οΏ½ 26
Choice on the data structures Clauses: resizable arrays of (fixed sized) arrays However, no aliasing β’ Indices instead of pointers β’ N[C] makes a copy, so only use N[C][i] Generates imperative code No error messages Transformations before generating code οΏ½ 27
Clauses of length 0 and 1 Once combined with an initialisation: βΉ(IsaSAT_code, model_if_satisfiable) in Isabelle β [ Ξ» N. each_clause_is_distinct N β§ literals_fit_in_32_bit_integer N] a clauses_as_lists k οΏ½ modelβΊ Exported code tested with an unchecked parser β¨ (easy and medium problems from the SAT competition 2009) οΏ½ 28
SAT-Comp β09, β15 (main track), β¨ and β14 (all submitted problems), β¨ already preprocessed, duplicates removed 2000 2000 2000 2000 2000 2000 IsaSAT β Glucose β versat β β β β β β β β β cadical β β β β β β β β β β β β β β β β β β microsat β β β β β β β β β β β β β β β β β β β β β β minisat β β β β β β β 1500 1500 1500 1500 1500 1500 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β time (s) β β β β β β β β β β β β β β 1000 1000 1000 1000 1000 1000 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 500 500 500 500 500 500 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 0 0 0 0 0 0 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β βββ β ββ β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 0 0 0 0 0 0 100 100 100 100 100 100 200 200 200 200 200 200 300 300 300 300 300 300 400 400 400 400 400 400 500 500 500 500 500 500 600 600 600 600 600 600 # solved οΏ½ 29
SAT-Comp β09, β15 (main track), β¨ and β14 (all submitted problems), β¨ already preprocessed, duplicates removed 2000 2000 2000 2000 2000 2000 IsaSAT β Glucose β versat β β β β β β β β β cadical β β β β β β β β β β β β β β β β β β microsat β β β β β β β β β β β β β β β β β β β β β β minisat β β β β β β β 1500 1500 1500 1500 1500 1500 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β time (s) β β β β β β β β β β β β β β 1000 1000 1000 1000 1000 1000 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β Correct up to: β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β£ run-time checks β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 500 500 500 500 500 500 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β£ checking the model is satisfiable β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 0 0 0 0 0 0 β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β βββ β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β ββ β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β 0 0 0 0 0 0 100 100 100 100 100 100 200 200 200 200 200 200 300 300 300 300 300 300 400 400 400 400 400 400 500 500 500 500 500 500 600 600 600 600 600 600 # solved οΏ½ 29
SAT-Comp β09, β15 (main track), β¨ and β14 (all submitted problems), β¨ already preprocessed Average time Crash or #solved (s) errors 159 233 4 (?) 1192 problems, β¨ versat 30 minutes timeout IsaSAT 200 147 3 (OOM) microsat 483 297 MiniSAT 582 280 cadical 759 330 glucose 784 337 οΏ½ 30
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines Refined SAT Solver Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 31
Abstract CDCL Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines β’ better implementation (trail, conflict) Refined SAT Solver β’ dynamic decision heuristic Towards efficient data structures refines Executable SAT solver β¨ Standard ML οΏ½ 31
β’ allow learned clause minimisation Abstract CDCL β’ no reuse of restarts Previous work refines Watched Literals Calculus Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines β’ better implementation (trail, conflict) Refined SAT Solver β’ dynamic decision heuristic Towards efficient data structures β’ learned clause minimisation refines Executable SAT solver β¨ Standard ML οΏ½ 31
β’ allow learned clause minimisation Abstract CDCL β’ no reuse of restarts Previous work refines Watched Literals Calculus β’ more invariants Transition system refines Watched Literals Algorithm β¨ Non-deterministic program refines β’ better implementation (trail, conflict) Refined SAT Solver β’ dynamic decision heuristic Towards efficient data structures β’ learned clause minimisation refines Executable SAT solver β¨ Standard ML οΏ½ 31
How hard is it? Paper Proof assistant Very 13 pages 50 pages abstract CDCL Abstract 9 pages 90 pages CDCL ( Β½ month) (5 months) Watched 1 page β¨ 600 pages Literals (C++ code of β¨ (15 months) MiniSat) οΏ½ 32
Conclusion Concrete outcome β£ Watched literals optimisation β£ Verified executable SAT solver Methodology β£ Refinement using the Refinement Framework β£ No proof of heuristics (w.r.t. standard) Future work β£ Restarts and blocking literals (ongoing) β£ Use SAT solver in IsaFoR οΏ½ 33
Annex οΏ½ 34
What is in IsaSAT? Conflict Analysis β£ conflict as lookup table (Minisat) β£ and as explicit array (Minisatβs βoutlβ, to simplify proofs) Decisions β£ Variable move to front (Splatz, cadical) Propagations β£ Mostly following MiniSAT (without BLIT) οΏ½ 35
for (i = j = 1; i < out_learnt.size(); i++) if (reason(var(out_learnt[i])) == CRef_Undef || !litRedundant(out_learnt[i])) out_learnt[j++] = out_learnt[i]; οΏ½ 36
fun minimize_and_extract_highest_lookup_conflict_code x = (fn ai => fn bid => fn bic => fn bib => fn bia => fn bi => fn () => let val a = heap_WHILET (fn (_, (a1a, (_, a2b))) => for (i = j = 1; i < out_learnt.size(); i++) (fn f_ => fn () => f_ ((length_arl_u_code heap_uint32 a2b) ()) ()) if (reason(var(out_learnt[i])) == CRef_Undef || (fn x_a => (fn () => (Word32.< (a1a, x_a))))) (fn (a1, (a1a, (a1b, a2b))) => !litRedundant(out_learnt[i])) (fn f_ => fn () => f_ out_learnt[j++] = out_learnt[i]; (((fn () => Array.sub (fst a2b, Word32.toInt a1a))) ()) ()) (fn x_a => (fn f_ => fn () => f_ ((literal_redundant_wl_lookup_code ai bid a1 a1b x_a bia) ()) ()) (fn (a1c, (_, a2d)) => (if not a2d then (fn () => (a1, (Word32.+ (a1a, (Word32.fromInt 1)), (a1c, a2b)))) else (fn f_ => fn () => f_ ((delete_from_lookup_conflict_code x_a a1) ()) ()) (fn x_e => (fn f_ => fn () => f_ ((arl_last heap_uint32 a2b) ()) ()) (fn xa => (fn f_ => fn () => f_ ((arl_set_u heap_uint32 a2b a1a xa) ()) ()) (fn xb => (fn f_ => fn () => f_ ((arl_butlast heap_uint32 xb) ()) ()) (fn xc => (fn () => (x_e, (a1a, (a1c, xc)))))))))))) (bic, ((Word32.fromInt 1), (bib, bi))) (); in let val (a1, (_, (a1b, a2b))) = a; οΏ½ 36
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling delaying restarts trail reuse Splatz @ POSβ15 οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only delaying restarts trail reuse Splatz @ POSβ15 οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only delaying restarts Strengthening trail reuse Splatz @ POSβ15 οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only delaying restarts Strengthening trail reuse Splatz @ POSβ15 Change CDCL οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only Restarts (future) delaying restarts Strengthening trail reuse Splatz @ POSβ15 Change CDCL οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only Restarts (future) delaying restarts Strengthening trail reuse Change WL Splatz @ POSβ15 Change CDCL οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences failed literal probing on binary implication graph roots equivalent literal substitution (ELS) eager recent learned clause subsumption bounded variable elimination (BVE) blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only Restarts (future) delaying restarts Strengthening trail reuse Change WL Splatz @ POSβ15 Change CDCL οΏ½ 37
How much is missing? Features (I) 10 arena based memory allocation for clauses and watchers Thank you, Norbert & Mate! Slides by Armin Biere blocking literals (BLIT) special handling of binary clause watches literal-move-to-front watch replacement (LMTF) Features (II) 11 learned clause minimization with poison stamping based VMTF instead of VSIDS on-the-fly hyper-binary resolution (HBR) subsumption for both irredundant and learned clauses learning additional units and binary clauses (multiple UIPs) β’ Unchecked array accesses (Isabelle takes care on-the-fly self-subsuming resolution (OTFS) inprocessing blocked clause decomposition (BCD) enabling ... of it) decision only clauses (DECO) ... inprocessing SAT sweeping for backbones and equivalences β’ No unbounded integers (in theory, not complete failed literal probing on binary implication graph roots equivalent literal substitution (ELS) anymore) eager recent learned clause subsumption bounded variable elimination (BVE) β’ Restarts blocked clause elimination (BCE) Splatz @ POSβ15 dynamic sticky clause reduction exponential moving average based restart scheduling Code only Restarts (future) delaying restarts Strengthening trail reuse Change WL Splatz @ POSβ15 Change CDCL οΏ½ 37
Update Strategy A first idea A better strategy BAM M Clauses N CBAM Clauses N A A B B C C οΏ½ 38
Update Strategy A first idea A better strategy BAM M Clauses N CBAM Clauses N A A B B C C οΏ½ 38
Update Strategy A first idea A better strategy BAM AM Clauses N CBAM Clauses N A A B B D C C οΏ½ 38
Update Strategy A first idea A better strategy BAM AM Clauses N CBAM Clauses N A A B B C C D οΏ½ 38
Update Strategy A first idea A better strategy BAM Clauses N CBAM Clauses N B A B C C D οΏ½ 38
Update Strategy A first idea A better strategy BAM Clauses N CBAM Clauses N B A B C C D οΏ½ 38
Update Strategy A first idea A better strategy BAM Clauses N DCBAM CBAM Clauses N B A B C D C D οΏ½ 38
Update Strategy A first idea A better strategy BAM Clauses N DCBAM Clauses N B B C C D D οΏ½ 38
Recommend
More recommend
Explore More Topics
Stay informed with curated content and fresh updates.