Documentation

DescriptiveComplexity.Problems.MaxCut.Reduction

NAE-3SAT ordered-FO-reduces to Max Cut #

Correctness of the gadget of DescriptiveComplexity.Problems.MaxCut.Interp. The whole argument runs through one map, DescriptiveComplexity.MaxCutRed.cutMap, which charges every edge of the cut to a threshold unit:

The map is injective on the cut (DescriptiveComplexity.MaxCutRed.cutMap_injOn), and this is exactly where the width bound is used: two cut clause edges with the same charge would give four distinct occurrences of one clause, two on each side of the cut. Injectivity gives cut ≤ threshold for every S.

Conversely, given a not-all-equal assignment, the side that puts a literal vertex with its literal and an occurrence vertex with the negation of its literal makes the map hit every mark (DescriptiveComplexity.MaxCutRed.marked_subset_image), so threshold ≤ cut.

Both halves together say that a cut reaches the threshold iff it is “perfect”: every variable edge cut (which reads off an assignment), every occurrence edge cut (which ties the occurrence vertices to it), and every clause gadget non-monochromatic (which is not-all-equal satisfaction). The penalty marks of clauses with at most one occurrence are never charged, which is what rules those clauses out – as it must, since such a clause is never not-all-equal satisfiable.

Occurrence bookkeeping #

theorem DescriptiveComplexity.MaxCutRed.maxOcc_unique {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {c x y : A} {s t : Bool} (h₁ : SatOcc.MaxOcc c x s) (h₂ : SatOcc.MaxOcc c y t) :
x = y s = t

The last occurrence of a clause is unique.

Dependency graph

The occurrence vertex of the last occurrence of c (a penalty vertex if c has no occurrence at all).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Dependency graph
    Dependency graph
    theorem DescriptiveComplexity.MaxCutRed.no_four_occPt {A : Type} [FirstOrder.Language.sat.Structure A] (hwidth : WidthAtMostThree A) {c : A} {v₁ v₂ v₃ v₄ : MaxCutInterp.mcInterp.Map A} (h₁ : ∃ (x : A) (s : Bool), SatOcc.OccIn c x s v₁ = MaxCutInterp.occPt s c x) (h₂ : ∃ (x : A) (s : Bool), SatOcc.OccIn c x s v₂ = MaxCutInterp.occPt s c x) (h₃ : ∃ (x : A) (s : Bool), SatOcc.OccIn c x s v₃ = MaxCutInterp.occPt s c x) (h₄ : ∃ (x : A) (s : Bool), SatOcc.OccIn c x s v₄ = MaxCutInterp.occPt s c x) (h₁₂ : v₁ v₂) (h₁₃ : v₁ v₃) (h₁₄ : v₁ v₄) (h₂₃ : v₂ v₃) (h₂₄ : v₂ v₄) (h₃₄ : v₃ v₄) :

    No clause has four distinct occurrence vertices: the width bound, read on the gadget.

    Dependency graph
    theorem DescriptiveComplexity.MaxCutRed.atMostOne_iff_noChained {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] [Finite A] {c : A} :
    (∀ (x : A) (s : Bool) (y : A) (t : Bool), SatOcc.OccIn c x sSatOcc.OccIn c y tx = y s = t) ∀ (x : A) (s : Bool), ¬SatOcc.Chained c x s

    A clause has at most one occurrence exactly when none of its occurrences is a non-first one – the first-order form the marks use.

    Dependency graph

    The vertex of the last occurrence, as an occurrence vertex.

    Dependency graph

    Charging a cut edge to a threshold unit #

    The cut of the gadget graph determined by S, as a set of pairs.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Dependency graph
      Dependency graph
      Dependency graph
      Dependency graph

      The endpoint of a clause edge that the threshold unit is charged to.

      Equations
      Instances For
        Dependency graph
        theorem DescriptiveComplexity.MaxCutRed.pick_cases {A : Type} {S : MaxCutInterp.mcInterp.Map AProp} {u v m : MaxCutInterp.mcInterp.Map A} (huv : u v) :
        (pick S u v m = u pick S u v m = v) pick S u v m m
        Dependency graph
        theorem DescriptiveComplexity.MaxCutRed.pick_left {A : Type} {S : MaxCutInterp.mcInterp.Map AProp} {u v m : MaxCutInterp.mcInterp.Map A} (hm : S m) (h : u m) :
        pick S u v m = u
        Dependency graph
        theorem DescriptiveComplexity.MaxCutRed.pick_right {A : Type} {S : MaxCutInterp.mcInterp.Map AProp} {u v m : MaxCutInterp.mcInterp.Map A} (hm : ¬S m) (h : v m) :
        pick S u v m = v
        Dependency graph
        Dependency graph
        Dependency graph

        The charge map: every edge of the cut is charged to a threshold unit.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          Dependency graph
          Dependency graph
          Dependency graph
          Dependency graph
          Dependency graph
          Dependency graph

          The charge map is injective on the cut. This is where the width bound is used: two clause edges with the same charge would exhibit four distinct occurrences of one clause.

          Dependency graph

          The side of the cut given by an assignment #

          The side of the cut determined by an assignment: a literal vertex takes the value of its literal, an occurrence vertex the negation of its literal, and the penalty vertices are outside.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.MaxCutRed.cutSide_lit {A : Type} (ν : AProp) (s : Bool) (x : A) :
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.MaxCutRed.cutSide_occ {A : Type} (ν : AProp) (s : Bool) (c x : A) :
            Dependency graph

            Given a not-all-equal assignment, the charge map hits every threshold unit, so the cut is at least as large as the threshold.

            Dependency graph

            Correctness #

            Correctness of the reduction: a CNF structure is a yes-instance of NAE-3SAT iff its gadget graph has a cut at least as large as its marked relation.

            Dependency graph

            NAE-3SAT ordered-FO-reduces to Max Cut: the gadget graph, whose cut reaches the threshold exactly when the clauses are not-all-equal satisfiable.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Dependency graph