The SchwartzβZippel lemma, in the form the low-degree machinery uses #
Blueprint lem:schwartz-zippel: two unequal polynomials f, g : π½_q^m β π½_q of total
degree at most d agree at a uniformly random point with probability at most d / q.
Mathlib proves the lemma for a single nonzero polynomial and a product of arbitrary finite
subsets (MvPolynomial.schwartz_zippel_totalDegree, schwartz_zippel_sum_degreeOf).
Everything here is the specialization the paper and the blueprint actually quote:
- the subsets are all of
F, so the denominator isq ^ mrather thanβ #(S i); - the event is
f = grather thanf - g = 0; - the bound is stated over
β, which is where the low-degree machinery's error terms live.
Three forms, because three different consumers want three different shapes:
prob_agree_le_totalDegreeβ the blueprint's statement, a probability overβ;prob_agree_le_individualDegreeβ the individual-degree variant the blueprint asks for alongside it (m * d / q, since a polynomial of individual degreedinmvariables has total degree at mostm * d, and this route avoids that lossy step);card_agree_le_of_natDegreeβ the univariate case as a count rather than a probability, which is the formlem:lidt-sync-transferuses ("two distinct univariate polynomials of degreedagree at no more thandof theqpoints").
The ββ₯0-valued intermediate is kept private: it is Mathlib's shape, not ours.
The points of π½_q^m at which two polynomials agree.
Equations
- MIPRE.LowDegree.agree f g = {x : Fin m β F | (MvPolynomial.eval x) f = (MvPolynomial.eval x) g}
Instances For
agree f g is the zero set of f - g, in the shape Mathlib's lemma states.
The ββ₯0-valued bound, straight from Mathlib, with the denominators evaluated.
SchwartzβZippel (blueprint lem:schwartz-zippel): two unequal polynomials of total
degree at most d in m variables over a finite field of size q agree at a uniformly
random point of π½_q^m with probability at most d / q.
The individual-degree variant: if f β g and both have degree at most d in each of
the m variables separately, they agree with probability at most m * d / q.
The majority test used by the classical PCP. If the field has at least
2 * m * d elements, agreement at more than half the points forces polynomial equality.
The strict acceptance threshold is essential when the field-size bound is an equality.
A verifier may impose other tests as well: agreement on any accepted set larger than half the field cube already forces the same identity.
The univariate case, as a count: two unequal polynomials of degree at most d over a
field agree at no more than d points. This is the form lem:lidt-sync-transfer uses.