Documentation

Complexitylib.Classes.PCP.Internal.AlgPCP

Every NP language has a PCP verifier #

The pieces are all in place: an NP language is the satisfiability of an FP family of 3-CNFs, the gap reduction turns each into a constraint graph with a constant gap, that graph is written by an FP function, and a verifier reading one edge of it accepts members always and non-members with probability bounded away from one.

Main definitions #

Main results #

noncomputable def Complexity.algF :

The finite base the reduction's expander family comes from.

Equations
Instances For
    noncomputable def Complexity.gapNumEdges (q : Polynomial ) (n : ) :

    How many edges the gap graph of an input of length n has: the padded count, multiplied by the round's factor once per round.

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

      The gap graph's size is polynomial in the input's length.

      noncomputable def Complexity.gapCoins (q : Polynomial ) (n : ) :

      The coin count: enough for the gap graph's edges, and no more than one too many.

      Equations
      Instances For
        theorem Complexity.constructible_pow_mul {t : } (ht : (fun (x : List Bool) => List.replicate (t x.length) true) FP) (j : ) :
        (fun (x : List Bool) => List.replicate (2 ^ j * t x.length) true) FP

        Doubling a constructible bound j times keeps it constructible.

        The edge count of the algorithmic graph #

        theorem Complexity.numEdges_gapAlg_eq {E padU : List BoolList Bool} {Φ : List BoolSAT.CNF} (hgap : gapAll algF algHd E 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) {q : Polynomial } (hq : ∀ (x : List Bool), (padU x).length = Polynomial.eval x.length q) (x : List Bool) :

        The verifier #

        theorem Complexity.exists_pcp_of_mem_NP {L : Language} (hL : L NP) :
        ∃ (r : ), (BigO r fun (n : ) => Nat.log 2 n) Constructible r ∃ (qc : ), (BigO qc fun (x : ) => 1) L PCP r qc

        Every NP language has a PCP verifier with logarithmically many coins and constantly many queries.