Documentation

CslibFrontier.Computability.Complexity.Problems.NAEThreeSAT

NAE 3SAT and NAE EU3SAT #

NAEThreeSAT is NAE3SAT, with clauses of width at most three. NAEEUThreeSAT is NAE EU3SAT: every clause has exactly three distinct variables. NAEThreeSATThree adds a bound of three total literal occurrences per variable to NAEThreeSAT. The bounded-occurrence reduction uses binary clauses; it does not prove hardness for exact-three occurrence-three NAE.

The original reduction from positive exact-one triples introduces one shared reference variable. It replaces (a,b,c) by NAE triples (a,b,c), (a,b,t), (a,c,t), (b,c,t). Global complement symmetry lets us assume t=true; the last three clauses then forbid two true source literals, while the first requires at least one. The reference is fresh, and the output has exactly three distinct variables per clause. Source hardness is PositiveOneInExactThreeSAT_npComplete.

Main definitions #

Main results #

Not-all-equal satisfiable formulas, without syntactic restrictions.

Instances For

    Not-all-equal satisfiability with at most three literals per clause.

    Instances For

      NAE EU3SAT: not-all-equal satisfiability with exactly three distinct variables per clause.

      Instances For

        Not-all-equal width-three SAT with at most three literal occurrences per variable.

        Instances For

          Evaluate both polarities of every clause under the usual certificate assignment.

          Instances For

            First-occurrence certificates also encode all NAE assignments.

            Unrestricted NAE satisfiability belongs to NP.

            Width-three NAE satisfiability belongs to NP.

            Exact-three distinct-variable NAE satisfiability belongs to NP.

            Width-three occurrence-three NAE satisfiability belongs to NP.

            Shift source variables away from the shared reference variable zero.

            Instances For

              Shift a source triple and add its three pair constraints using reference variable zero.

              Instances For
                theorem Cslib.Complexity.NAEEUThreeSAT.eval_clause (σ : ℕ → Bool) (hσ : σ 0 = true) (c : Logic.PL.Clause ℕ) (hc : List.length c = 3) :
                Logic.PL.CNF.evalNAE σ (clause c) = Logic.PL.Clause.evalOne (fun (v : ℕ) => σ (v + 1)) c

                A true reference makes every triple's replacement express exactly-one semantics.

                All four target clauses have three distinct variables. The reference is fresh.

                A true reference gives the original exact-one formula under the shifted assignment.

                Global complement symmetry removes the need to pin the fresh reference variable.

                Compile positive exact-one triples to NAE triples, rejecting malformed source syntax.

                Instances For

                  The complete NAE reduction is native polynomial-time under binary CNF encodings.

                  Total correctness of the exact-three distinct-variable NAE compiler.

                  NAE EU3SAT is NP-hard, without an occurrence bound.

                  Forget exact-three syntax after rejecting formulas outside that source syntax.

                  Width-at-most-three NAE SAT is NP-hard.

                  Width-at-most-three NAE SAT is NP-complete.

                  The ordinary splitter is also a total reduction between the NAE languages.

                  The native occurrence splitter gives the bounded-occurrence NAE reduction.

                  NAE 3SAT-3 is NP-hard with binary and ternary clauses allowed.

                  NAE 3SAT-3 is NP-complete with binary and ternary clauses allowed.