Polynomial-time count-preserving clause splitting #
The recursive OR-gate chain agrees with an indexed traversal of the input clause, with three
clauses per gate. The certificate charges every lookup, fresh variable, copied literal and list
delimiter. Original variables keep their supplied encoding; gate variables use their unary clause
and gate indices. This mirrors the certificate for Cslib.Logic.PL.CNF.to3CNF.
Main results #
Cslib.Logic.PL.Clause.isPolyTime_orChainAux: efficient OR-gate chains of clause tails.Cslib.Logic.PL.Clause.isPolyTime_orSplit3: efficient chains with a certified fresh-variable routine, retaining its captured input.Cslib.Logic.PL.CNF.isPolyTime_toExact3CNF: a uniform certificate for the count-preserving 3CNF reduction.
References #
The OR-gate chain of a clause tail, with a certified fresh-variable routine and runtime gate index.
The OR-gate chain of a computed clause retains the input captured by its fresh-variable routine.
Convert an arbitrary CNF formula to 3CNF with the same number of models, encoding gate variables by unary clause and gate indices. The certificate includes relabelling, clause traversal and all output copying.