Documentation

DescriptiveComplexity.Problems.CliqueFamily.FromSat

SAT reduces to Clique by an ordered FO reduction #

The classical reduction from satisfiability to the clique threshold problem, as a first-order interpretation over the ordered expansion of the language of CNF instances: DescriptiveComplexity.sat_ordered_fo_reduction_clique : SAT ≤ᶠᵒ[≤] Clique.

Vertices of the interpreted marked graph are tagged pairs of elements of the CNF structure (DescriptiveComplexity.SatCliqueTag, dimension 2):

A clique at least as large as the marked set must pick one occurrence per clause, pairwise non-conflicting, which is exactly a satisfying assignment; conversely, choosing a true literal in each clause under a satisfying assignment yields such a clique. Empty clauses – which make the CNF unsatisfiable but carry no occurrence vertex – are handled by a spoiler in the mark formula: if some clause is empty, every vertex is marked, and no clique can be as large as the whole universe since clause vertices are isolated.

The formulas do not mention the order. The reduction is nevertheless packaged as an ordered one because DescriptiveComplexity.Clique folds finiteness of the universe into its yes-instances, so correctness can only hold on finite structures – exactly the correctness contract of DescriptiveComplexity.OrderedFOReduction (a plain FOReduction would have to be correct on infinite structures as well, where SAT can hold while no clique instance is a yes-instance).

Tags of the clique instance interpreted in a CNF structure.

  • pos : SatCliqueTag

    Positive-occurrence vertex, at pairs (c, x).

  • neg : SatCliqueTag

    Negative-occurrence vertex, at pairs (c, x).

  • cl : SatCliqueTag

    Marked clause vertex, at diagonal pairs (c, c).

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

    The semantic side #

    Two genuine literal occurrences in distinct clauses that are not conflicting (the same variable with opposite signs): the adjacency condition between occurrence vertices, on the semantic side.

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

      The marking condition of the interpreted graph: diagonal clause vertices – or every vertex, if some clause is empty.

      Equations
      Instances For
        Dependency graph
        Dependency graph
        theorem DescriptiveComplexity.SatToClique.adjCore_ofSign {A : Type} [FirstOrder.Language.sat.Structure A] {s₁ s₂ : Bool} {w₁ w₂ : Fin 2A} :
        AdjCore (SatCliqueTag.ofSign s₁) w₁ (SatCliqueTag.ofSign s₂) w₂ Compat s₁ s₂ w₁ w₂
        Dependency graph
        theorem DescriptiveComplexity.SatToClique.AdjCore.exists_sign {A : Type} [FirstOrder.Language.sat.Structure A] {t₁ t₂ : SatCliqueTag} {w₁ w₂ : Fin 2A} (h : AdjCore t₁ w₁ t₂ w₂) :
        ∃ (s₁ : Bool) (s₂ : Bool), t₁ = SatCliqueTag.ofSign s₁ t₂ = SatCliqueTag.ofSign s₂ Compat s₁ s₂ w₁ w₂
        Dependency graph
        theorem DescriptiveComplexity.SatToClique.AdjCore.genuine_right {A : Type} [FirstOrder.Language.sat.Structure A] {t₁ t₂ : SatCliqueTag} {w₁ w₂ : Fin 2A} (h : AdjCore t₁ w₁ t₂ w₂) :
        Genuine t₂ w₂
        Dependency graph
        theorem DescriptiveComplexity.SatToClique.AdjCore.ne_clause {A : Type} [FirstOrder.Language.sat.Structure A] {t₁ t₂ : SatCliqueTag} {w₁ w₂ : Fin 2A} (h : AdjCore t₁ w₁ t₂ w₂) :
        w₁ 0 w₂ 0
        Dependency graph
        Dependency graph

        The formulas and the interpretation #

        The adjacency formula between occurrence vertices of signs s₁, s₂: the FO counterpart of DescriptiveComplexity.SatToClique.Compat. The free variable (i, j) is the j-th component of the i-th vertex.

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

          The mark formulas of the interpretation, by tag: diagonal clause vertices – or everything, if some clause is empty.

          Equations
          Instances For
            Dependency graph

            The interpretation producing, from an ordered CNF structure, its clique threshold instance.

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

              Characterizations of the interpreted relations #

              theorem DescriptiveComplexity.SatToClique.realize_compatF {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {s₁ s₂ : Bool} {v : Fin 2 × Fin 2A} :
              (compatF s₁ s₂).Realize v Compat s₁ s₂ (fun (j : Fin 2) => v (0, j)) fun (j : Fin 2) => v (1, j)
              Dependency graph
              theorem DescriptiveComplexity.SatToClique.realize_adjF {A : Type} [FirstOrder.Language.sat.Structure A] [LinearOrder A] {t₁ t₂ : SatCliqueTag} {v : Fin 2 × Fin 2A} :
              (adjF t₁ t₂).Realize v AdjCore t₁ (fun (j : Fin 2) => v (0, j)) t₂ fun (j : Fin 2) => v (1, j)
              Dependency graph
              Dependency graph

              Characterization of the interpreted adjacency relation.

              Dependency graph
              Dependency graph

              Correctness #

              Correctness of the reduction: a finite ordered CNF structure is satisfiable iff its interpreted marked graph has a clique at least as large as the marked set.

              Dependency graph

              SAT FO-reduces to Clique on ordered structures: the one-vertex-per-literal-occurrence interpretation SatToClique.satToClique, over the ordered expansion of the language of CNF instances, maps a finite CNF structure to a yes-instance of Clique iff it is satisfiable. (The order is never mentioned by the formulas; the ordered packaging only serves to restrict correctness to finite structures, as required by the finiteness conjunct of DescriptiveComplexity.Clique.)

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