Sudan interpolants of least Y-degree by elimination #
Sudan's list decoder [Sud97] for the Reed–Solomon code of dimension d + 1 needs a nonzero
bivariate polynomial Q(X, Y) of (1, d)-weighted degree at most D vanishing at the points
(α i, w i) of a received word (Cslib.Code.Sudan.IsInterpolant). This module computes one by
linear algebra, choosing an interpolant 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 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.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.isInterpolant_interpolant: it 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]
Bivariate polynomials from coefficients #
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 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 for
the dimension d + 1.
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 every monomial of (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
the dimension d + 1, 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.