Documentation

CslibFrontier.Computability.Complexity.Problems.CSP.SelfDualThreeSAT

A self-dual reference lift of ternary clause satisfiability #

The reduction shares a reference bit across its constraints. Each signed clause is evaluated on the exclusive or of its three variable values with that reference. Complementing all values leaves every relation invariant. Setting the reference false recovers ordinary signed 3SAT, and any model can be normalized that way. This is the reference-bit construction of [Che06], Lemma 5.2 (arXiv v1, p. 18), specialized to the ternary clause language.

The resulting fixed finite Boolean CSP is native NP-complete. Its eight relations have arity four, are nonempty, and separate every pair of coordinate positions. These properties support equality-free primitive-positive gadget construction in the Schaefer hardness proof. Variable labels remain binary; the original variable v becomes v+1, and zero is the reference.

Main definitions #

Main results #

Three literal polarities for a signed ternary clause; all eight possibilities belong to the fixed language.

  • first : Bool

    Polarity expected of the first clause literal relative to the reference bit.

  • second : Bool

    Polarity expected of the second clause literal relative to the reference bit.

  • third : Bool

    Polarity expected of the third clause literal relative to the reference bit.

Instances For
    theorem Cslib.Complexity.SelfDualThreeSAT.SignPattern.ext {x y : SignPattern} (first : x.first = y.first) (second : x.second = y.second) (third : x.third = y.third) :
    x = y

    A reference position followed by the three clause positions.

    Instances For

      Evaluate a signed ternary clause relative to its first, reference coordinate. Other scope lengths are false; the CSP syntax guard also rejects them.

      Instances For
        @[reducible, inline]

        The tuple of the fields of encSign.

        Instances For
          theorem Cslib.Complexity.SelfDualThreeSAT.encSign_mk_budget {γ : Type} {encIn : γ ↪ List Bool} {budget : γ → ℕ} {x0 x1 x2 : γ → Bool} (h0 : Turing.MultiTapeTM.ComputableInSpace x0 encIn Turing.MultiTapeTM.encBool budget) (h1 : Turing.MultiTapeTM.ComputableInSpace x1 encIn Turing.MultiTapeTM.encBool budget) (h2 : Turing.MultiTapeTM.ComputableInSpace x2 encIn Turing.MultiTapeTM.encBool budget) :
          Turing.MultiTapeTM.ComputableInSpace (fun (x : γ) => { first := x0 x, second := x1 x, third := x2 x }) encIn encSign budget
          theorem Cslib.Complexity.SelfDualThreeSAT.encSign_first_budget {γ✝ : Type} {encIn✝ : γ✝ ↪ List Bool} {S✝ : γ✝ → ℕ} {g✝ : γ✝ → SignPattern} :
          theorem Cslib.Complexity.SelfDualThreeSAT.encSign_second_budget {γ✝ : Type} {encIn✝ : γ✝ ↪ List Bool} {S✝ : γ✝ → ℕ} {g✝ : γ✝ → SignPattern} :
          theorem Cslib.Complexity.SelfDualThreeSAT.encSign_mk_inO {γ : Type} {encIn : γ ↪ List Bool} {x0 : γ → Bool} {T0 S0 : γ → ℕ} {x1 : γ → Bool} {T1 S1 : γ → ℕ} {x2 : γ → Bool} {T2 S2 : γ → ℕ} (h0 : Turing.MultiTapeTM.ComputableInO x0 encIn Turing.MultiTapeTM.encBool T0 S0) (h1 : Turing.MultiTapeTM.ComputableInO x1 encIn Turing.MultiTapeTM.encBool T1 S1) (h2 : Turing.MultiTapeTM.ComputableInO x2 encIn Turing.MultiTapeTM.encBool T2 S2) :
          Turing.MultiTapeTM.ComputableInO (fun (x : γ) => { first := x0 x, second := x1 x, third := x2 x }) encIn encSign (fun (x : γ) => T0 x + (T1 x + T2 x)) fun (x : γ) => S0 x + (S1 x + S2 x)
          theorem Cslib.Complexity.SelfDualThreeSAT.encSign_third_budget {γ✝ : Type} {encIn✝ : γ✝ ↪ List Bool} {S✝ : γ✝ → ℕ} {g✝ : γ✝ → SignPattern} :

          Fixed binary encoding of the eight relation symbols.

          Instances For
            @[reducible, inline]

            The inherited framed CSP encoding, with binary variable labels.

            Instances For
              theorem Cslib.Complexity.SelfDualThreeSAT.sem_not (s : SignPattern) (a : Fin 4 → Bool) :
              sem s (List.ofFn fun (i : Fin 4) => !a i) = sem s (List.ofFn a)

              Simultaneous complementation leaves the relative clause values invariant.

              Every relation in the reference-lifted language is self-dual.

              Every signed reference-lifted clause has a satisfying tuple.

              Any two distinct positions are distinguished by some satisfying tuple of the relation.

              Satisfiable instances of the eight signed ternary-clause relations with a reference bit.

              Instances For

                The reduction adds the shared reference at zero and shifts original labels by one. Malformed exact-three syntax produces a malformed target constraint.

                Instances For

                  The reference lift does not increase the number of clauses/constraints. An invalid input is nonempty, so the singleton malformed reject instance satisfies the same bound.

                  The reference lift preserves exact-three satisfiability, rejecting malformed syntax.

                  Exact-three SAT reduces to the self-dual reference-lifted CSP in native polynomial time.

                  The fixed finite reference-lifted clause language is native NP-complete.