Documentation

Complexity.Computability.PCP.GapTheorem

Dinur's gap theorem #

The combinatorial heart of Dinur's proof of the PCP theorem Dinur, Corollary 4.2: every formula φ in 3-CNF with m clauses yields a constraint graph gapGraph φ over the fixed alphabet Σ₀ = Bool × (Fin 6 → Bool) with polynomially many vertices and edges in m (exists_card_gapGraph_le), which is satisfiable exactly when φ is (satisfiable_gapGraph_iff), and whose value is at least the universal constant Cslib.PCP.Dinur.gap when φ is unsatisfiable (gap_le_unsatVal_gapGraph). As the construction can be carried out in polynomial time Dinur, Theorem 4.1, telling the two cases apart is as hard as 3-SAT: this is the PCP theorem in its gap form. This module proves its combinatorial half; the polynomial-time half is Cslib.PCP.Encoded.isPolyTime_gapGraph.

The construction:

  1. the constraint graph ofCNF φ of the formula, with 3 m edges, over the alphabet Fin 3 → Bool, satisfiable exactly when φ is;
  2. preprocessed and composed (cnfGraph φ): its vertices become the half-edges, so the variables of φ disappear, and its alphabet becomes Σ₀; it has a number of edges linear in m;
  3. then ⌈log₂ |E|⌉ rounds of Dinur's amplifier (Cslib.PCP.Dinur.amplifier), which double the value up to the threshold: since an unsatisfiable graph with |E| edges has value at least 1 / |E|, the value reaches the threshold, while the size grows by a factor polynomial in |E|.

Everything here is a noncomputable definition: the expanders of preprocessing are chosen non-constructively (Cslib.RotationMap.expanderFamily). The polynomial-time realization, which needs explicit expanders Dinur, Lemma 2.2, is the separate pipeline Cslib.PCP.Encoded.gapGraph in Complexity.Computability.PCP.Encoded.GapTheorem, built on the explicit arithmetic expander family; it is the construction the PCP theorem uses. As the function gapGraph is fixed, the theorems below are not mere existence statements, which would be trivial: a function deciding satisfiability could output one fixed graph of each kind.

Main definitions #

Main results #

References #

Dinur's round on a finite constraint graph over the fixed alphabet Σ₀: amplify walkLength killRate, with the vertices and edges it builds from the edges of its input.

Instances For

    Dinur's main theorem Dinur, Theorem 4.1: Dinur's round doubles the value up to the threshold gap.

    Dinur's round has vertexFactor vertices per edge of its input.

    Dinur's round has edgeFactor edges per edge of its input.

    Dinur's amplifier Dinur, Theorem 4.1: Dinur's round on finite constraint graphs over the fixed alphabet Σ₀, which doubles the value up to the threshold gap and multiplies the numbers of vertices and edges by at most vertexFactor + edgeFactor.

    Instances For
      @[simp]

      The threshold of Dinur's amplifier is gap.

      @[simp]

      The size factor of Dinur's amplifier is vertexFactor + edgeFactor.

      The gap graph of a formula #

      The constraint graph of a formula φ over the fixed alphabet Σ₀: its constraint graph ofCNF φ, preprocessed, then composed. Preprocessing replaces the vertices by the half-edges, so that the variables of φ disappear, and composition brings the alphabet to Σ₀.

      Instances For

        If the clauses of φ have at most three literals, its constraint graph over Σ₀ is satisfiable exactly when φ is.

        The constraint graph over Σ₀ of a formula with m clauses has 43560 · 2 ^ 1403 · m edges.

        theorem Cslib.PCP.Dinur.card_vertices_cnfGraph {V : Type u} [DecidableEq V] (φ : Logic.PL.CNF V) :
        Fintype.card (cnfGraph φ).V = (1536 + 1452 * (2 ^ 16 + 2 ^ 256 + 5 * 2 ^ 1403)) * List.length φ

        The constraint graph over Σ₀ of a formula with m clauses has (1536 + 1452 (2 ^ 16 + 2 ^ 256 + 5 * 2 ^ 1403)) m vertices.

        The gap graph of a formula φ Dinur, Corollary 4.2: ⌈log₂ |E|⌉ rounds of Dinur's amplifier on the constraint graph of φ over Σ₀, which has |E| edges.

        Instances For

          Completeness and soundness of the gap graph: if the clauses of φ have at most three literals, its gap graph is satisfiable exactly when φ is.

          theorem Cslib.PCP.Dinur.gap_le_unsatVal_gapGraph {V : Type u} [DecidableEq V] (φ : Logic.PL.CNF V) (h3 : ∀ κ ∈ φ, List.length κ ≤ 3) (h : ¬φ.Satisfiable) :

          Dinur's gap theorem Dinur, Corollary 4.2: if the clauses of φ have at most three literals and φ is unsatisfiable, the value of its gap graph is at least the universal constant gap.

          The dichotomy Dinur, Corollary 4.2: the value of the gap graph of a formula is either zero or at least the universal constant gap.

          theorem Cslib.PCP.Dinur.exists_card_gapGraph_le :
          ∃ (C : ℕ) (c : ℕ), ∀ {V : Type u} [inst : DecidableEq V] (φ : Logic.PL.CNF V), Fintype.card (gapGraph φ).V ≤ C * List.length φ ^ c ∧ Fintype.card (gapGraph φ).E ≤ C * List.length φ ^ c

          The gap graph is polynomial Dinur, Corollary 4.2: its numbers of vertices and edges are at most C m ^ c for a formula with m clauses, for universal constants C and c.