The GKR protocol #
The GKR protocol Goldwasser, Kalai, Rothblum lets a verifier check
the claim D about the outputs of a layered arithmetic circuit on an input x over a finite field
F, following Thaler, §4.6. Claims about a layer are claims W̃_j(z) = v about the
multilinear extension of its gate values (Cslib.Interactive.GKR.LayerClaim).
- The output step (
LayeredCircuit.outputStep) draws a uniform pointrof the output layer and reduces the claimDtoW̃_depth(r) = D̃(r); a wrongDsurvives with probability at mostwidth depth / |F|(Schwartz–Zippel). - Each layer (
LayeredCircuit.layer) reduces a claim about layeri + 1atzto a claim about layeri. It runs sumcheck on the GKR summandf_z(sumcheckStage, the library'sSumcheck.rounds bundled overzbyReduction.bundle), and then the line step (lineStep): the prover sends the restrictionqofW̃_ito the line through the two halvesy,wof the last sumcheck point, the verifier checks the last sumcheck claim againstq 0 = W̃_i(y)andq 1 = W̃_i(w), drawstand keeps the claimW̃_i(ℓ(t)) = q(t). - The input step (
inputStep) evaluatesx̃at the last point.
The protocol (LayeredCircuit.protocol) is perfectly complete (protocol_complete) and sound with
error (width depth + ∑_{i < depth} 5 · width i) / |F| (protocol_sound): 2 / |F| for each of
the 2 · width i sumcheck rounds of layer i, width i / |F| for its line step, and
width depth / |F| for the output step. Both follow from the component theorems by the composition
theorems for completeness and round-by-round soundness. Verifier efficiency, which needs uniformity
of the circuit, is not addressed: the verifier evaluates the wiring extensions directly.
Main definitions #
Cslib.Interactive.GKR.LayeredCircuit.outputStep,Cslib.Interactive.GKR.LayeredCircuit.layer,Cslib.Interactive.GKR.LayeredCircuit.lineStep,Cslib.Interactive.GKR.LayeredCircuit.inputStep: the stages.Cslib.Interactive.GKR.LayeredCircuit.protocol: the GKR protocol.
Main results #
Cslib.Interactive.GKR.LayeredCircuit.protocol_complete: perfect completeness.Cslib.Interactive.GKR.LayeredCircuit.protocol_sound: soundness.Cslib.Interactive.GKR.LayeredCircuit.toOuterMeasure_eval_eq_zero_le: Schwartz–Zippel at a uniform point.
References #
The line step #
A claim about layer j: a point z and the claimed value of the multilinear extension of the
layer at z, stored as a sumcheck claim of round 0.
Instances For
A sumcheck claim of the last round of layer i, at the point z of layer i + 1.
Instances For
The combination the verifier checks against the last sumcheck claim:
ãdd_i(z, y, w) (u + v) + m̃ult_i(z, y, w) u v.
Instances For
The verifier's test of the line polynomial q against the last sumcheck claim (z, r, c).
Instances For
The claim about layer i at the point t of the line.
Instances For
The line step of layer i, for the values W of layer i. The prover sends the
restriction q of W̃ to the line through the two halves y, w of the last sumcheck point; the
verifier checks the last sumcheck claim against q 0 = W̃(y) and q 1 = W̃(w), draws t and
outputs the claim W̃(ℓ(t)) = q(t).
Instances For
The claims about layer i that are true.
Instances For
The true last sumcheck claims of layer i.
Instances For
The honest line polynomial passes the check exactly when the last sumcheck claim is true.
The line step is perfectly complete.
The line step is round-by-round sound with error width i / |F|: a false last sumcheck
claim forces a line polynomial other than the true restriction, which agrees with it at a random
point with probability at most width i / |F|.
The sumcheck stage and one layer #
The number of sumcheck variables of layer i.
Instances For
The challenge samplers of k sumcheck rounds: one uniform field element per round.
Instances For
The challenge samplers of the iterated sumcheck rounds do not depend on the polynomial.
The sumcheck stage of layer i, for the values W of layer i: on a claim (z, v) about
layer i + 1, sumcheck on the summand f_z, bundled over z.
Instances For
A round-0 sumcheck claim on the summand is a claim about the multilinear extension of the
layer above.
The sumcheck stage is perfectly complete.
The sumcheck stage is round-by-round sound with error 2 / |F| per round.
The output and input steps #
The single round of the output step: the verifier draws a point of the output layer.
Instances For
The output step: on claimed outputs D, the verifier draws a point r of the output layer
and turns the claim into W̃_depth(r) = D̃(r).
Instances For
The input step: the verifier checks the claim about the input layer by evaluating the multilinear extension of the input.
Instances For
Schwartz–Zippel at a uniform point: a nonzero polynomial of total degree at most d
vanishes with probability at most d / |F|.
The output step is perfectly complete.
The output step is round-by-round sound with error width depth / |F|, by
Schwartz–Zippel for the multilinear extensions of the claimed and the true outputs.
The input step is perfectly complete.
The protocol #
The rounds of layer i: sumcheck on 2 · width i variables, then the line step.
Instances For
One layer of GKR: a claim about layer i + 1 becomes a claim about layer i.
Instances For
The per-round errors of layer i: 2 / |F| per sumcheck round and width i / |F| for the
line step.
Instances For
The rounds from layer m down to the input.
Instances For
The layers from m down to the input, followed by the input step.
Instances For
The per-round errors of descend.
Instances For
The GKR protocol for the claim that the circuit outputs D on the input x: the output
step, then the layers from the output down to the input, then the input step.
Instances For
Completeness of GKR: the honest prover convinces the verifier of the true output with probability one.
Soundness of GKR Goldwasser, Kalai, Rothblum,
Thaler, §4.6: any prover convinces the verifier of a wrong output with probability
at most (width depth + ∑_{i < depth} 5 · width i) / |F|.