Parsimonious elimination of negative exact-one literals #
Every negative literal occurrence receives its own positive proxy. A positive complement gadget forces the proxy to be the opposite of the original variable, with a unique auxiliary extension. Each original variable keeps exactly its original occurrence count. A clause of width at most three yields at most thirteen clauses, and all newly added clauses are positive triples.
The construction is [Hunt, Marathe, Radhakrishnan and Stearns, Theorem 3.8, Figure 3.5] [HMRS98]. The occurrence indexing and quantitative accounting are original.
Main definitions #
Variable,formula: the occurrence-indexed positive compiler.extend: its canonical assignment extension.
Main results #
positive_formula: every emitted literal is positive.length_formula_le: a constant-factor clause bound on bounded-width inputs.oneModelCount_formula,assignments_agree_iff: count preservation and unique extensions.count_inl_formula,count_vars_formula_le: inherited occurrences are preserved exactly, and the occurrence-three restriction is preserved globally.nodup_formula: distinct variables within clauses remain distinct.
References #
- Hunt, Marathe, Radhakrishnan and Stearns, Theorem 3.8, Figure 3.5 and Lemma 3.6.
Source variables and five private auxiliary slots for each negative occurrence.
Instances For
An auxiliary slot at one clause and literal position. Slot zero is the positive proxy.
Instances For
Canonical values of the constant gadget's four slots.
If every complement block holds, the inherited positive clause has the original exact-one value under the assignment read from source variables.
A compiled clause is exactly the source clause together with its complement constraints.
The positive output is exact-one satisfiable exactly when the source is.
Every negative-occurrence complement block is satisfied by a satisfying output assignment.
Satisfying complement blocks with equal source values agree on all of their variables.
Polarity elimination preserves the number of satisfying assignments on occurring variables.
A negative literal introduces four clauses.
An individual complement block has at most four clauses.
An individual source clause contributes at most four clauses per literal, plus itself.
Width at most k gives a factor 1 + 4*k bound on the number of clauses.
The inherited clause retains its width and every complement clause has width three.
Exact-three input clauses yield exact-three positive clauses.
Width at most three is preserved.
Width-three inputs have at most thirty-nine output literal occurrences per source clause.
Clause-block variable counts are the sum of the individual occurrence contributions.
An original variable contributes exactly one occurrence at its original literal position.
A private occurrence contribution uses only its own clause and literal indices and has degree at most three at each auxiliary.
Original variable occurrence counts are unchanged in each compiled clause block.
An auxiliary contributes at most three occurrences in a clause block, and no occurrences outside its own source clause index.
Taking variable occurrences commutes with concatenating clause replacements.
Every original variable keeps exactly its original number of literal occurrences.
Every private auxiliary has at most three occurrences in the whole output.
The positive compiler preserves the three-occurrence restriction.