Sudan interpolants, weighted degree, and elimination #
Let w : ι → F be a received word and let α be distinct evaluation points. Sudan's list decoder
[Sud97], [GRS19] for polynomials P of degree at most d needs a nonzero
bivariate polynomial Q(X, Y) of (1, d)-weighted degree at most D
(Cslib.Code.Sudan.WeightedDegreeLE), that is with a + d * b ≤ D for each of its monomials
X ^ a * Y ^ b, vanishing at the n points (α i, w i) (Cslib.Code.Sudan.IsInterpolant).
Such a Q is a nonzero solution of n linear equations in its coefficients, so it exists as soon
as there are more than n monomials of (1, d)-weighted degree at most D
(Cslib.Code.Sudan.exists_isInterpolant); for d ≥ 1 there are at least
(D + 1) * (D + 2) / (2 * d) of them
(Cslib.Code.Sudan.add_one_mul_add_two_le_two_mul_mul_card_monomials). If P has degree at most
d, then Q(X, P(X)) has degree at most D
(Cslib.Code.Sudan.WeightedDegreeLE.natDegree_eval_le) and vanishes at every point where P
agrees with w; when there are more than D of them it is zero, so Y - P(X) divides Q(X, Y)
(Cslib.Code.Sudan.IsInterpolant.X_sub_C_dvd): P is a root of Q viewed as a polynomial in Y
over F[X].
This module also computes an explicit interpolant by linear algebra, choosing one of least
Y-degree: for j = 0, 1, …, D / d it finds a kernel vector of the interpolation matrix
restricted to the monomials of Y-degree at most j (Cslib.LinearAlgebra.kernelVec), and takes
the first nonzero one (Cslib.Code.Sudan.interpolant). When d ≥ 1 and there are more monomials
than points this is an interpolant (Cslib.Code.Sudan.isInterpolant_interpolant), and no
interpolant has smaller Y-degree (Cslib.Code.Sudan.natDegree_interpolant_le).
Least Y-degree makes every polynomial P of degree at most d with more than D agreements a
simple root of Q, viewed as a polynomial in Y: if (Y - P)² divided Q, then Q / (Y - P)
would be an interpolant of smaller Y-degree. On division by Y - P the bound D on the
weighted degree drops to D - d (Cslib.Code.Sudan.add_mul_add_one_le_of_mul, an upper bound),
so Q = (Y - P) * S where S(X, P(X)) is a nonzero polynomial of degree at most D - d
(Cslib.Code.Sudan.exists_eq_mul_eval_ne_zero). Simplicity is what lets the root P be lifted
from a single known value by Newton iteration (Cslib.Code.henselValue_eq).
Main definitions #
Cslib.Code.Sudan.monomials: the monomials of bounded weighted degree.Cslib.Code.Sudan.WeightedDegreeLE: bivariate polynomials of bounded(1, d)-weighted degree.Cslib.Code.Sudan.bivariateOf: the bivariate polynomial with given coefficients on a set of monomials.Cslib.Code.Sudan.IsInterpolant: the bivariate interpolants of a received word.Cslib.Code.Sudan.monomialsUpTo: the monomials of bounded weighted degree and boundedY-degree.Cslib.Code.Sudan.interpMatrix: the interpolation matrix on a set of monomials.Cslib.Code.Sudan.coeffsOf: the coefficients on a set of monomials given by a vector indexed by its enumeration.Cslib.Code.Sudan.kernelVecUpTo: the kernel vector of the interpolation matrix on the monomials ofY-degree at mostj.Cslib.Code.Sudan.interpolantCoeffs: the coefficients of the first nonzero kernel vector.Cslib.Code.Sudan.interpolant: an interpolant of leastY-degree, by elimination.
Main results #
Cslib.Code.Sudan.add_one_mul_add_two_le_two_mul_mul_card_monomials: counting the monomials.Cslib.Code.Sudan.WeightedDegreeLE.natDegree_mul_le,Cslib.Code.Sudan.IsInterpolant.natDegree_mul_le: theY-degree under a weighted-degree bound.Cslib.Code.Sudan.WeightedDegreeLE.natDegree_eval_le: the degree ofQ(X, P(X)).Cslib.Code.Sudan.exists_isInterpolant: interpolants exist when there are more thannmonomials.Cslib.Code.Sudan.IsInterpolant.eval_eq_zero,Cslib.Code.Sudan.IsInterpolant.X_sub_C_dvd,Cslib.Code.Sudan.IsInterpolant.mem_roots: root containment, the polynomials with large agreement are roots of every interpolant.Cslib.Code.Sudan.weightedDegreeLE_interpolant,Cslib.Code.Sudan.isInterpolant_interpolant: the elimination interpolant has bounded weighted degree and is an interpolant.Cslib.Code.Sudan.natDegree_interpolant_le: it has leastY-degree.Cslib.Code.Sudan.add_mul_add_one_le_of_mul: division byY - Plowers the weighted degree byd.Cslib.Code.Sudan.exists_eq_mul_eval_ne_zero: polynomials with large agreement are simple roots of an interpolant of leastY-degree.
References #
- M. Sudan, Decoding of Reed Solomon codes beyond the error-correction bound
- [M. Sudan, L. Trevisan, S. Vadhan, Pseudorandom generators without the XOR lemma] [STV01]
- [V. Guruswami, A. Rudra, M. Sudan, Essential Coding Theory] [GRS19]
Monomials and weighted degree #
Counting monomials. For w ≥ 1 there are at least (D + 1) * (D + 2) / (2 * w) monomials
of (1, w)-weighted degree at most D: for each j ≤ D there are j / w + 1 ≥ (j + 1) / w of
weighted degree exactly j.
Q has (1, d)-weighted degree at most D: every nonzero coefficient Q_{a,b} X ^ a Y ^ b
has a + d * b ≤ D.
Instances For
The zero polynomial has (1, d)-weighted degree at most D.
Monotonicity of (1, d)-weighted degree in the bound D.
If Q has (1, d)-weighted degree at most D, its Y-degree satisfies
deg_Y Q * d ≤ D.
Evaluating Q(X, P(X)) at x evaluates Q at (x, P(x)).
Substituting Y = P(X), with P of degree at most d, into a bivariate polynomial of
(1, d)-weighted degree at most E gives a polynomial of degree at most E.
Bivariate polynomials from coefficients #
The bivariate polynomial with coefficient c m at X ^ m.1 * Y ^ m.2 for m ∈ M.
Instances For
A bivariate polynomial whose monomials lie in M is bivariateOf M of its coefficients.
bivariateOf M c has (1, d)-weighted degree at most D when M ⊆ monomials d D.
Sudan interpolants #
Q is a Sudan interpolant for the received word w with evaluation points α, weight d
and weighted degree D: a nonzero bivariate polynomial of (1, d)-weighted degree at most D
that vanishes at the points (α i, w i).
The interpolant is nonzero.
- weightedDegree_le : WeightedDegreeLE d D Q
Every monomial
X ^ a * Y ^ bofQhas(1, d)-weighted degreea + d * bat mostD. The interpolant vanishes at the points
(α i, w i).
Instances For
The Y-degree of a Sudan interpolant: deg_Y Q * d ≤ D.
Interpolation. If there are more than n monomials of (1, d)-weighted degree at most
D, every received word has a Sudan interpolant: the n conditions Q (α i, w i) = 0 are linear
in the coefficients of Q.
Root containment. With distinct points, if P has degree at most d and agrees with the
received word at more than D points, then Q(X, P(X)) = 0 for every Sudan interpolant Q.
Root containment. With distinct points, if P has degree at most d and agrees with the
received word at more than D points, then Y - P(X) divides every Sudan interpolant
Q(X, Y).
With distinct points, a polynomial of degree at most d that agrees with the received word
at more than D points is a root of every Sudan interpolant, as a polynomial in Y.
The interpolation matrix #
The interpolation matrix: its rows are the points (α i, w i) (enumerated by
Fintype.equivFin ι), its columns the monomials of M (enumerated by M.equivFin), and its
entries the values of the monomials at the points.
Instances For
The product of a row of the interpolation matrix with a vector u is the value at the row's
point of the polynomial with coefficients u.
The interpolant of least Y-degree #
The kernel vector of the interpolation matrix on the monomials of Y-degree at most j.
Instances For
An interpolant of least Y-degree, computed by elimination.
Instances For
The elimination interpolant always has (1, d)-weighted degree at most D.
The elimination interpolant is an interpolant. With d ≥ 1 and more monomials of
(1, d)-weighted degree at most D than points, interpolant α w d D is a Sudan interpolant of
weight d and weighted degree D.
The elimination interpolant has least Y-degree among all Sudan interpolants.
Simplicity of the roots #
Division by Y - P lowers the weighted degree bound by d. If P has degree at most d
and (Y - P) * S has (1, d)-weighted degree at most D, then every monomial X ^ a * Y ^ b of
S has a + d * (b + 1) ≤ D.
Large agreement gives simple roots. Let Q be a Sudan interpolant of least Y-degree for
weight d and weighted degree D, with distinct points. If P has degree at most d and agrees
with the received word at more than D points, then Q = (Y - P) * S where S(X, P(X)) is a
nonzero polynomial of degree at most D - d.