Download presentation
Presentation is loading. Please wait.
1
Stronger learning and higher backjumping
Clause minimization Stronger learning and higher backjumping Recursive conflict clause reduction (deep /shallow) Glucose-style Volunteers and inverse-arcs ContraMinisat
2
Learnt Conflict Clauses, and minimization
ππππ ππ π₯ 3 = π 4 , ππππ ππ π₯ 6 = π 5 , β¦ Local / General implication graph ο·4 ο·1 Learnt Conflict clause: (x10 Γ :x4 Γ x11) ο·6 ο« conflict Decision ο·3 ο·3 ο·2 ο·5 Redundant β does not change the satisfiability ο·2 ο·5 π₯ 10 β π₯ 11 or, π₯ 11 β π₯ 10 Clause minimization: Drop π₯ 11
3
Learnt Conflict Clauses, and minimization
More generally: if we have a c.c. π=( π₯ 0 β¨β―β¨ π₯ π ), and ... all reverse paths on the implication graph hit π literals... ο·4 ο·6 ο« conflict ο·5 Redundant β does not change the satisfiability ο·5 π₯ π βπ π₯ π β§ π₯ π β§ π₯ π β π₯ π or, π₯ π β π₯ π β¨ π₯ π β¨ π₯ π Clause minimization: Drop π₯ π π₯ π π₯ π βπ π₯ π βπ
4
More generally... Learnt clause: π= π₯ 0 β¨β―β¨ π₯ π
For 0β€πβ€π, we can remove π₯ π if πβ§ π₯ π β πβπ₯ π Or, more generally, for any π β² β πβ π₯ π , πβ§ π₯ π βπβ² equivalently, if πβ§ π β² β π₯ π E.g., in the previous slide: π₯ π β§ π₯ π β§ π₯ π β π₯ π Order of checking matters. Can we optimize ?
5
Clause minimization: minisat
Deep mode (recursive conflict-clause reduction): Traverse recursively ππππ ππ( π₯ π ) Stop if a literal is not in the decision levels of π . Stop if hitting a decision variable. If all paths hit a variable from π, remove π₯ π . e.g., we hit π₯ 2 , π₯ 5 , π₯ 7 , hence π₯ 2 β§ π₯ 5 β§ π₯ 7 β π₯ π , or equivalently π₯ π β π₯ 2 β¨ π₯ 5 β¨ π₯ 7 Instead of maintaining the list of decision levels of cβs literals and checking it each time, they maintain an abstraction of that list; hence they might end up visiting such a level, which will anyway result in hitting a decision variable and aborting. * Minimizing Learned clauses/SΓΆrensson, Biere, SATβ09
6
Clause minimization: minisat
Deep mode (recursive conflict-clause reduction), optimization: Suppose πΏ= π₯βπ π.π.(π₯) Donβt: maintain πΏ as a list and search it. Do: maintain an abstraction of πΏ in a 32- bit int; Suppose we hit πβπΏ but πβπππ (πΏ) => hit a decision variable and abort. Hence, cannot hinder correctness * Minimizing Learned clauses/SΓΆrensson, Biere, SATβ09
7
Clause minimization: minisat
Shallow mode: same as deep mode, but only search in current d.l. Literals seen in the current analysis * Minimizing Learned clauses/SΓΆrensson, Biere, SATβ09
8
Clause minimization: Glucose
Use binary clauses: If (π 0 β¨ π₯ π ) is a binary clause, remove π₯ π from π. asserting literal Instead of maintaining the list of decision levels of cβs literals and checking it each time, they maintain an abstraction of that list; hence they might end up visiting such a level, which will anyway result in hitting a decision variable and aborting. * ChanseokΒ Hoβs Glucose patch to minisat.
9
Volunteers and inverse arcs
Let c = ( π₯ 0 β¨β¦β¨ π₯ π ) = ππππ ππ(π₯ 0 ) i.e., π₯ 1 β§β―β§ π₯ π β π₯ 0 π has the following two properties: π₯ 1 β¦ π₯ π are currently false π₯ 0 is the latest in the trail In a volunteer of π₯ 0 , item#2 no longer holds: For some 1β€πβ€π, πππ£ππ π₯ π >πππ£ππ( π₯ 0 ) i.e., some false literal discovered after true literal.
10
Volunteers and inverse arcs
Let c β² = π₯ 0 β¨ π¦ 1 β¦β¨ π¦ π i.e., π¦ 1 β§β―β§ π¦ π β π₯ 0 πβ² has the following two properties: π¦ 1 β¦ π¦ π are currently false π₯ 0 is not the latest in the trail // (possibly earlier d.l., possibly was a decision) e.g., current level: π₯ 1 β§ π₯ 2 β§β―β§ π₯ π β π₯ 0 π β² is called a volunteer* for π₯ 0 : gives us an alternative reason clause. Volunteers are generalization of inverse-arcs** 6 5 3 level: * Generalized Conflict-Clause Strengthening for Satisfiability Solvers/Van-Gelder, SATβ11 ** generalized framework for conflict analysis / Audemard et al. SATβ08.
11
Inverse arcs Conflict clause A=( Ξ±β¨ π₯ π β¨ π¦ π )
Conflict clause A=( Ξ±β¨ π₯ π β¨ π¦ π ) πΌ β literals with level β€π π₯ β asserting literal π<π β back-jumping level 4. Find a volunteer for π¦ π πβ²=( π½ π β¨ πΎ π β¨ π¦ π ) π΄ β² = πππ π΄,πβ²,π¦ = πΌβ¨ π½ π β¨ πΎ π β¨ π₯ π Ideally: πΎ π =0 Then π΄β² is an asserting clause with back-jumping level π<π. Otherwiseβ¦ (next slide) π<π πβ₯π 1 Note that we do not start the process if in A there is more than one literal at level i. ** generalized framework for conflict analysis / Audemard et al. SATβ08.
12
Inverse arcs Otherwise πΎ π >0 : repeat with π΄β² being the conflicting clause. Not necessarily will be better. But we can apply recursively. Heuristics for choosing the inverse arc πβ²: Do not start the process if in π΄ there is more than one literal at level π. Otherwise, allow only if βπβ πΎ π . πππ£ππ π =π and π seen on the implication graph so far This guarantees that it will be eliminated during conflict analysis, β¦ and that we jump to π < π ** generalized framework for conflict analysis / Audemard et al. SATβ08.
13
Inverse arcs can create cycles
Generally adding inverse arcs can lead to cycles in the implication graph, e.g.: π 0 = π₯ 0 π₯ 1 π₯ π 1 =( π₯ π₯ π₯ 3 ) π 2 = π₯ π₯ 2 This, in turn, may lead to cycles in the resolution process. Such cycles are expensive to detect. π₯ 0 π₯ 1 π₯ 3 π₯ 2 π₯ 4 ** generalized framework for conflict analysis / Audemard et al. SATβ08.
14
Precosatβs solution to volunteers without cycles
Precosat considers volunteers of a specific type: When learning π with asserting literal π₯ 0 (ππππ ππ π₯ 0 =π) Consider a clause cβ²=( π₯ 0 π¦ 1 β― π¦ π ) a volunteer if π₯ 0 was last to be assigned in πβ. β π₯ 0 did not lead to propagating any π¦ π , β no cycles πβ²β ππππ ππ( π₯ 0 ) because of the literal order in the trail. Precosat apparently has the same goal but looks only at a specific type of volunteers. * Precosat (unpublished; open source)
15
Example Suppose π= π₯ 0 π§ , πβ²={ π₯ 0 π¦ } The trail:
Had π¦ been processed firstβ¦ ππππ ππ π₯ 0 =πβ² π₯ β¦ π¦ π₯ 0 ππππ ππ π₯ 0 =πΆ qhead * Precosat (unpublished; open source)
16
ContraMiniSat BCP is not done directly on the trail as in Minisat
Instead, maintain a priority-queue of implications Implication = clause + priority πππ£ππ, π‘ππππ_πΌππππ₯ // lower is better Rationale: prefer antecedents with low decision levels; among those, prefer stronger literals. Max. dec. level of the non-watched literals Index of the implying literal in the local trail * Contrasat β A contrarian SAT solver (system description) /Van-Gelder
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.