Documentation

Complexitylib.Classes.PCP.Internal.AlgGapAll

The gap graph of an input #

Everything the reduction does, in one function: read the formula, write its constraint graph padded to a size the input's length decides, and amplify it as many times as a logarithmic ruler is long.

Main definitions #

Main results #

noncomputable def Complexity.gapRuler (padU : List BoolList Bool) (x : List Bool) :

How many rounds an input gets: enough that the padded edge count is below 2 ^ rounds.

Equations
Instances For
    theorem Complexity.gapRuler_mem_FP (padU : List BoolList Bool) (hpad : padU FP) :
    @[simp]
    theorem Complexity.length_gapRuler (padU : List BoolList Bool) (x : List Bool) :
    (gapRuler padU x).length = rulerLen (padU x).length
    noncomputable def Complexity.gapAllG (F : FinBase) (hd : 1 < F.deg) (padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (x : List Bool) :

    The gap graph of an input.

    Equations
    Instances For
      noncomputable def Complexity.gapAll (F : FinBase) (hd : 1 < F.deg) (E padU : List BoolList Bool) :

      The gap graph of an input, as a string.

      Equations
      Instances For
        theorem Complexity.gapAll_eq (F : FinBase) (hd : 1 < F.deg) (E padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (hE : ∀ (x : List Bool), E x = (Φ x).encode) (h3 : ∀ (x : List Bool), (Φ x).Is3CNF) (hmark : ∀ (x : List Bool), padU x = List.replicate (padU x).length true) (hle : ∀ (x : List Bool), 3 * List.length (Φ x) (padU x).length) (x : List Bool) :
        gapAll F hd E padU x = encGraph (gapAllG F hd padU x)

        The gap #

        theorem Complexity.numEdges_padded_le (padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (x : List Bool) (hle : 3 * List.length (Φ x) (padU x).length) :
        ((baseCSP (Φ x)).padGraph (padU x).length).numEdges 2 ^ rulerLen (padU x).length
        theorem Complexity.satisfiable_gapAllG (F : FinBase) (hd : 1 < F.deg) (padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (h3 : ∀ (x : List Bool), (Φ x).Is3CNF) (hle : ∀ (x : List Bool), 3 * List.length (Φ x) (padU x).length) (x : List Bool) (h : (Φ x).Satisfiable) :
        (gapAllG F hd padU x).Satisfiable

        Completeness.

        theorem Complexity.gap_le_unsatVal_gapAllG (F : FinBase) (hd : 1 < F.deg) (padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (h3 : ∀ (x : List Bool), (Φ x).Is3CNF) (hle : ∀ (x : List Bool), 3 * List.length (Φ x) (padU x).length) (x : List Bool) (h : ¬(Φ x).Satisfiable) :

        Soundness.

        Writing it is polynomial-time #

        noncomputable def Complexity.growthExp (F : FinBase) (hd : 1 < F.deg) :

        The exponent by which the whole iteration can grow the graph.

        Equations
        Instances For
          theorem Complexity.pow_edgeFactor_le (F : FinBase) (hd : 1 < F.deg) (m : ) :
          Dinur.edgeFactor (F.toFamily hd) (qOf F hd) ^ rulerLen m (2 * m + 1) ^ growthExp F hd
          noncomputable def Complexity.widthPoly (F : FinBase) (hd : 1 < F.deg) (p₀ q : Polynomial ) :

          How wide the iteration ever gets.

          Instances For
            def Complexity.widthFn (p₀ q : Polynomial ) (v cw d n : ) :

            How wide the iteration ever gets, as a function of the input's length. The round's constants are parameters, so that no tactic here ever meets them.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Complexity.widthFn_hasRuler (p₀ q : Polynomial ) (v cw d : ) :
              HasRuler (widthFn p₀ q v cw d)
              theorem Complexity.gapAll_mem_FP (F : FinBase) (hd : 1 < F.deg) (E padU : List BoolList Bool) {Φ : List BoolSAT.CNF} (hEfp : E FP) (hpad : padU FP) (hE : ∀ (x : List Bool), E x = (Φ x).encode) (h3 : ∀ (x : List Bool), (Φ x).Is3CNF) (hmark : ∀ (x : List Bool), padU x = List.replicate (padU x).length true) (hle : ∀ (x : List Bool), 3 * List.length (Φ x) (padU x).length) (p₀ q : Polynomial ) (hp₀ : ∀ (x : List Bool), (E x).length Polynomial.eval x.length p₀) (hq : ∀ (x : List Bool), (padU x).length = Polynomial.eval x.length q) :
              gapAll F hd E padU FP

              Writing the gap graph is polynomial-time.