Documentation

DescriptiveComplexity.Problems.MaxCut.Interp

The gadget graph of the reduction from NAE-3SAT to Max Cut #

This file builds the interpretation DescriptiveComplexity.MaxCutInterp.mcInterp of Max Cut instances in ordered CNF instances, and characterizes its two relations. The correctness of the reduction is in DescriptiveComplexity.Problems.MaxCut.Reduction.

The gadget #

Vertices come in three tags over pairs (Fin 2 → A):

and edges in three families:

The threshold marks one pair per element (the variable edge), one pair per occurrence (the occurrence edge), one pair per non-maximal occurrence of a clause (charged against the maximal one, so k − 1 per clause of width k), and one pair per clause with at most one occurrence – a penalty, since such a clause is never not-all-equal satisfiable while its gadget carries no edge at all.

Two design points are worth recording.

Everything is gated on the first-order width check ThreeSatToSat.Wide, as in the reduction of 3SAT to SAT: on a wide input the graph has no edge at all, while the threshold stays positive, so the output is a no-instance. The gate is what makes the per-clause budget k − 1 an upper bound, a clique on k vertices having a larger cut as soon as k ≥ 4.

Tags for the gadget graph: literal vertices, occurrence vertices, and the isolated penalty vertices carrying a threshold unit for degenerate clauses.

  • lit (s : Bool) : MCTag

    litPt s x is the vertex of the literal (x, s).

  • occ (s : Bool) : MCTag

    occPt s c x is the vertex of the occurrence (x, s) of the clause c.

  • pen : MCTag

    penPt c is the isolated penalty vertex of the clause c.

Instances For
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph

    Two more formulas over the ordered expansion #

    No occurrence of c is a non-first one, as a formula: this says exactly that the clause c has at most one occurrence.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Dependency graph
      @[simp]
      theorem DescriptiveComplexity.MaxCutInterp.realize_noChainedF {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {α : Type} {v : α → A} {c : α} :
      (noChainedF c).Realize v ↔ ∀ (x : A) (s : Bool), ¬SatOcc.Chained (v c) x s
      Dependency graph

      The interpretation #

      Defining formula for adjacency, before the width gate: the three edge families.

      Equations
      Instances For
        Dependency graph

        Defining formula for the threshold marks: one pair per element, one per occurrence, one per non-maximal occurrence, one per degenerate clause.

        Equations
        Instances For
          Dependency graph

          The interpretation of Max Cut instances in ordered CNF instances: the gadget graph, with every edge gated on the width check.

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

            The vertices #

            The literal vertex of (x, s).

            Equations
            Instances For
              Dependency graph

              The occurrence vertex of the occurrence (x, s) of c.

              Equations
              Instances For
                Dependency graph

                The penalty vertex of the clause c.

                Equations
                Instances For
                  Dependency graph
                  @[simp]
                  Dependency graph
                  @[simp]
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph

                  Characterization of the two relations #