Documentation

Complexitylib.Classes.PCP.Internal.TesterChecks

The remaining checks of the assignment tester #

HadamardTester proves the linearity and consistency checks. Two more are needed for the tester to plug into Dinur's composition, and both are analysed here on raw tables, over bundled randomness, in the same style.

The last point is what makes the composition work with constantly many queries: the outer graph's labels are handed to the tester as Hadamard codewords, and a wrong label is far from every right one.

Main results #

The constraint check on a system #

The random-combination constraint check. Reading the combined constraint off the raw tables passes often enough only if every constraint of the system holds on the decoded tables. The coefficient vector is the first block, the correction strings the second.

The input check, one coordinate at a time #

The single-coordinate input check, on the raw table: a random coordinate r (first block) of the input table w is compared with the decoded assignment's bit at variable idx r, read by self-correction at the basis vector (correction string: second block).

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

    Passing the coordinate check means agreeing on most coordinates.

    theorem Complexity.coordAccepts_of_honest {n m : } (a : BooleanAnalysis.Cube n) (idx : BooleanAnalysis.Cube mFin n) (z : BooleanAnalysis.Cube (m + n)) :
    CoordAccepts (signOf (hadamard a)) (fun (r : BooleanAnalysis.Cube m) => a (idx r)) idx z

    The honest table passes the coordinate check everywhere, when the input table is the decoded assignment's input part.

    Decoding a label from a table #

    noncomputable def Complexity.bitDist {m : } (s t : BooleanAnalysis.Cube mZMod 2) :

    The distance between two bit tables: the fraction of coordinates where they differ.

    Equations
    Instances For
      theorem Complexity.bitDist_hadamard {m : } (u v : BooleanAnalysis.Cube m) (h : u v) :
      bitDist (hadamard u) (hadamard v) = 1 / 2

      Distinct codewords are far apart: at distance exactly one half.

      noncomputable def Complexity.decodeLabel {m : } {β : Type} [Nonempty β] (enc : βBooleanAnalysis.Cube m) (t : BooleanAnalysis.Cube mZMod 2) :
      β

      Decoding: the label whose codeword is within a quarter of the table, if any; an arbitrary label otherwise.

      Equations
      Instances For
        theorem Complexity.decodeLabel_eq {m : } {β : Type} [Nonempty β] (enc : βBooleanAnalysis.Cube m) (henc : Function.Injective enc) (t : BooleanAnalysis.Cube mZMod 2) (σ : β) (h : bitDist t (hadamard (enc σ)) < 1 / 4) :
        decodeLabel enc t = σ

        A table close to a codeword decodes to its label.