Documentation

DescriptiveComplexity.Problems.ThreeDimMatching.Hardness

3-dimensional matching is NP-hard #

The reduction is Karp's, from SATISFIABILITY, with its three families of triples read off the occurrences of the input formula. Write (c, s) for a signed occurrence – the clause c contains the literal (x, s) – and let a tip be one of the two X-elements tip(x, c, s, σ) attached to it.

Nothing here bounds the width of a clause, so the source is SAT itself; an empty clause leaves its two elements uncoverable, which is the right answer.

The tags #

Tags of the reduction: the two tips of an occurrence, the two elements of its truth-setting gadget, the two elements of a clause, and the two elements of a garbage pair.

  • tip (s σ : Bool) : TTag

    The σ-tip of the occurrence (c, s) of x; its tuple is (x, c).

  • av (s : Bool) : TTag

    The Y-element of the occurrence (c, s) of x; its tuple is (x, c).

  • bv (s : Bool) : TTag

    The Z-element of the occurrence (c, s) of x; its tuple is (x, c).

  • cy : TTag

    The Y-element of the clause c; its tuple is (c, ⊥).

  • cz : TTag

    The Z-element of the clause c; its tuple is (c, ⊥).

  • gy (s : Bool) : TTag

    The Y-element of the garbage pair of a non-first occurrence (x, s) of c; its tuple is (x, c).

  • gz (s : Bool) : TTag

    The Z-element of that garbage pair; its tuple is (x, c).

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

      The interpretation #

      noncomputable def DescriptiveComplexity.TDMRed.minF {α : Type} (x : α) :

      A minimum of the order, as a formula over the ordered expansion of the vocabulary of CNF instances.

      Equations
      Instances For
        Dependency graph
        @[simp]
        Dependency graph

        Defining formula for the first class: the tips of the occurrences.

        Equations
        Instances For
          Dependency graph
          Dependency graph
          Dependency graph

          Defining formula for the triples: the two of the truth-setting gadget of each occurrence, one per occurrence of a clause, and one per tip and garbage pair.

          Equations
          Instances For
            Dependency graph

            The interpretation of a triple system in a CNF structure.

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

              The points of the interpreted structure #

              def DescriptiveComplexity.TDMRed.tPt {A : Type} (t : TTag) (w : Fin 2 → A) :

              The point of tag t over the pair w.

              Equations
              Instances For
                Dependency graph
                def DescriptiveComplexity.TDMRed.tTip {A : Type} (s σ : Bool) (x c : A) :

                The σ-tip of the occurrence (c, s) of x.

                Equations
                Instances For
                  Dependency graph

                  The second-class element of the occurrence (c, s) of x.

                  Equations
                  Instances For
                    Dependency graph

                    The third-class element of the occurrence (c, s) of x.

                    Equations
                    Instances For
                      Dependency graph

                      The second-class element of the clause c.

                      Equations
                      Instances For
                        Dependency graph

                        The third-class element of the clause c.

                        Equations
                        Instances For
                          Dependency graph

                          The second-class element of the garbage pair of the occurrence (x, s) of c.

                          Equations
                          Instances For
                            Dependency graph

                            The third-class element of that garbage pair.

                            Equations
                            Instances For
                              Dependency graph

                              The three classes #

                              Dependency graph
                              Dependency graph
                              Dependency graph
                              @[simp]
                              theorem DescriptiveComplexity.TDMRed.tsY_cy {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {a₀ : A} (ha₀ : IsBot a₀) (c : A) :
                              Dependency graph
                              @[simp]
                              theorem DescriptiveComplexity.TDMRed.tsZ_cz {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {a₀ : A} (ha₀ : IsBot a₀) (c : A) :
                              Dependency graph
                              Dependency graph
                              Dependency graph

                              The triples #

                              From a matching to an assignment #

                              From an assignment to a matching #

                              Correctness of the reduction #

                              Correctness: a CNF structure is satisfiable exactly when the interpreted triple system has a matching.

                              Dependency graph

                              SAT ordered-FO-reduces to 3-dimensional matching: two tips, a Y and a Z element per occurrence, a pair per clause, and a garbage pair per non-first occurrence. The truth-setting gadget of a variable runs cyclically through its occurrences, so it admits exactly two matchings – the variable's two truth values – and the pair of a clause can only be covered through the tip of a true literal.

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