Motivation
The current clause learning (CL) infrastructure uses a bounds-only propagation trail — it records lower-bound and upper-bound changes but cannot represent interior domain removals (gaps). This is sufficient for unary/binary constraints that only tighten bounds, but is fundamentally incompatible with global constraints like AllDifferent that perform arc consistency by removing individual values from within a domain's bounds.
As a workaround, AllDifferent operates at bounds consistency when CL is enabled. This is sound but weaker than full arc consistency.
Current state: benchmarks show CL adds 2–6x runtime overhead with no backtrack reduction on any tested problem (NQueens, RCPSP, FurnitureMoving). Before investing in the SAT solver layer, we need to understand why learned clauses aren't triggering unit propagation — i.e., whether the issue is clause quality (too many literals) or clause applicability (wrong problem structure).
Investigation phase (before implementation)
Only proceed with the SAT layer implementation if diagnostics confirm that domain gap support (not clause quality) is the bottleneck.
Implementation scope (contingent on investigation)
References
- Ohrimenko, Stuckey, Codish — "Propagation via lazy clause generation" (2009)
- Chuffed lazy clause generation solver
- OR-Tools CP-SAT solver
Motivation
The current clause learning (CL) infrastructure uses a bounds-only propagation trail — it records lower-bound and upper-bound changes but cannot represent interior domain removals (gaps). This is sufficient for unary/binary constraints that only tighten bounds, but is fundamentally incompatible with global constraints like AllDifferent that perform arc consistency by removing individual values from within a domain's bounds.
As a workaround, AllDifferent operates at bounds consistency when CL is enabled. This is sound but weaker than full arc consistency.
Current state: benchmarks show CL adds 2–6x runtime overhead with no backtrack reduction on any tested problem (NQueens, RCPSP, FurnitureMoving). Before investing in the SAT solver layer, we need to understand why learned clauses aren't triggering unit propagation — i.e., whether the issue is clause quality (too many literals) or clause applicability (wrong problem structure).
Investigation phase (before implementation)
Only proceed with the SAT layer implementation if diagnostics confirm that domain gap support (not clause quality) is the bottleneck.
Implementation scope (contingent on investigation)
x = vorx ≠ v)ConflictAnalyserto resolve both bound literals and domain-gap literals during 1-UIP analysisReferences