Reed–Solomon list decoding with a hint #
List decoding a Reed–Solomon codeword from a small fraction of agreements returns several
candidate polynomials. In local list decoding of Reed–Muller codes [STV01] the
right candidate is singled out by its value a = P(τ) at one further point, supplied as advice.
This module computes the value P(0) of that candidate from the received word, τ and a
alone, with linear algebra and Newton iteration, and no root finding or factoring.
Let Q be the Sudan interpolant of least Y-degree of the received word
(Cslib.Code.Sudan.interpolant). If P has degree at most d and more than D agreements, then
Q = (Y - P) * S with S(X, P(X)) ≠ 0 of degree at most D - d
(Cslib.Code.Sudan.exists_eq_mul_eval_ne_zero), so for all but D - d points τ the root P is
simple at (τ, P(τ)): ∂Q/∂Y (τ, P(τ)) = S(τ, P(τ)) ≠ 0. Then the Taylor coefficients of P at
τ are determined one at a time by Newton's (Hensel's) rule: if A has degree less than
k ≤ d and agrees with P(X + τ) below degree k, then the coefficient of X ^ k in
P(X + τ) is -[X ^ k] Q(X + τ, A(X)) / ∂Q/∂Y (τ, a) (Cslib.Code.henselCoeff_eq). The
coefficient [X ^ k] Q(X + τ, A(X)) is a fixed linear combination of the values
Q(s + τ, A(s)) for s ∈ F (Cslib.Code.sum_coeffWeight_mul_eval), because this polynomial has
degree at most D < |F|. So the whole computation Cslib.Code.hintDecode is an arithmetic
computation on the received word, the hint and fixed constants, with no other branching than the
tests for zero in the elimination; the decoded value is correct for all but D - d of the hint
points (Cslib.Code.card_hintDecode_ne_le).
Main definitions #
Cslib.Code.coeffWeight: the weights extracting a coefficient from the values on all ofF.Cslib.Code.henselCoeff: the coefficient chosen by one Newton step.Cslib.Code.henselTrunc: the Newton iteration from a hint.Cslib.Code.henselSeq: the coefficients chosen by the Newton iteration.Cslib.Code.henselValue: the value at0of the lifted root.Cslib.Code.hintDecode: Sudan decoding with a hint.
Main results #
Cslib.Code.sum_coeffWeight_mul_eval: coefficients from values.Cslib.Code.henselValue_eq: Newton iteration recovers a simple root of degree at mostd.Cslib.Code.card_hintDecode_ne_le: decoding with a hint is correct at all butD - dhint points.
References #
- [M. Sudan, L. Trevisan, S. Vadhan, Pseudorandom generators without the XOR lemma] [STV01]
- M. Sudan, Decoding of Reed Solomon codes beyond the error-correction bound
Coefficients from values #
The weights extracting the coefficient of X ^ k from the values at all points of F: the
coefficients of the Lagrange basis polynomials of F.
Instances For
Coefficients from values. A polynomial of degree less than |F| has coefficient
∑ s, coeffWeight k s * R(s) at X ^ k.
Newton iteration #
The coefficient chosen by one Newton step: -[X ^ k] Q(X + τ, A(X)) / λ, computed from the
values of Q(X + τ, A(X)) on F.
Instances For
Newton iteration from a hint. Starting from the constant a, the step to k + 1 adds the
monomial henselCoeff Q τ lam A (k + 1) * X ^ (k + 1).
Instances For
The coefficients chosen by the Newton iteration: a and then the successive steps.
Instances For
The iterate to degree k is the polynomial with the first k + 1 chosen coefficients.
The value at s of the iterate to degree k.
The value at 0 of the root lifted from the hint a at τ, to degree d.
Instances For
One Newton step. Let Q(X, P(X)) = 0 with P of degree at most d, let the monomials of
Q have (1, d)-weighted degree at most D < |F|, and let λ = ∂Q/∂Y (τ, P(τ)) ≠ 0. If A has
degree at most k < d and agrees with P(X + τ) below degree k + 1, then the Newton step
returns the coefficient of X ^ (k + 1) in P(X + τ).
Newton iteration recovers a simple root. Let Q(X, P(X)) = 0 with P of degree at most
d, let the monomials of Q have (1, d)-weighted degree at most D < |F|, and let
∂Q/∂Y (τ, P(τ)) ≠ 0. Then Newton iteration from the hint P(τ) returns P(0).
The derivative in Y of bivariateOf M c at (x, y).
Decoding with a hint #
Sudan decoding with a hint. The value at 0 of the root of the least-Y-degree Sudan
interpolant of the received word w (with evaluation points α), lifted by Newton iteration from
the hint a at τ.
Instances For
Decoding with a hint is correct at almost every hint point. With distinct points, d ≥ 1,
more monomials of (1, d)-weighted degree at most D than points, and D < |F|: if P has
degree at most d and agrees with the received word at more than D points, then
hintDecode α w d D τ (P τ) = P 0 for all but at most D - d points τ.