Documentation

Complexity.Logics.Propositional.CNF.PolyTime

Polynomial-time CNF construction #

The clause and formula constructors used by reductions to satisfiability are polynomial-time for any fixed encoding of their variables. Literals use encPair, and clauses and formulas use encList. Specializing the variable encoding to binary naturals gives the encoding of SAT.

These results certify the existing constructors, including the ordered-pair implementation of exactly-one constraints. They apply to empty lists and lists with repeated variables. Relabelling requires a polynomial-time renaming function, but does not require injectivity; injectivity is needed separately when transferring satisfiability.

Main results #

References #

The number of literals in a polynomial-time clause, in unary, is polynomial-time.

The number of clauses in a polynomial-time formula, in unary, is polynomial-time.

The number of variable occurrences in a polynomial-time formula, in unary, is polynomial-time.

Construct the clauses forbidding two distinct listed variables from both holding. The list may contain repeated variables.

The entire input-dependent renaming is polynomial-time for any original variable encoding. Its output indices use unary encoding and are bounded by the input's number of occurrences.