Documentation

CslibFrontier.Computability.Complexity.Problems.ThreeSATThree.Counting

Parsimonious occurrence reduction for 3SAT #

The existing occurrence splitter preserves the number of satisfying assignments. Each source variable has one value on every copy in its implication cycle, and numbering copies is injective. The counting problems below count only occurring variables and return zero outside their syntax. They reuse SharpSAT and the existing syntax guards rather than introducing new assignment or satisfiability semantics.

Main definitions #

Main results #

References #

The occurrence construction and its source credit are documented in ThreeSATThree. Its count preservation is an original elementary consequence of CNF.copies_agree.

Count satisfying assignments of width-at-most-three CNF; reject other syntax with count zero. Only variables occurring in the formula are counted.

Instances For

    Count satisfying assignments of width-three, occurrence-three CNF; reject other syntax with count zero. Repetitions are literal positions, as in ThreeSATThree.syntaxCheck.

    Instances For

      Membership in ThreeSAT is equivalent to a positive guarded model count.

      Membership in ThreeSATThree is equivalent to a positive guarded model count.

      The total occurrence compiler preserves the count, including rejected inputs.