The Reed–Solomon evaluation certificate — the interpolation-dual of the syndrome certificate #
A third instance of Sundogcert.Certificate's discipline: machine-check the deductive cheap-CHECK
core, name the imported hard-FIND wall. The syndrome certificate views a code through its
parity-check / coset; this views the same Reed–Solomon code through its evaluation face: a
codeword is the evaluation vector i ↦ f(xᵢ) of a degree-<k polynomial f at n distinct nodes.
CHEAP to VERIFY (proved):
kevaluations DETERMINE the unique degree-<kpolynomial (rs_unique, a thin specialization ofPolynomial.eq_of_natDegree_lt_card_of_eval_eq). A claimed decodingfof a wordyis verified by one forward pass — degree<k, agreement withyin≥ n−τpositions (O(n·k));accept_soundmakes the check SOUND. Within the unique-decoding radius (2τ+k ≤ n) the decoding is the unique one (unique_decoding, inclusion–exclusion +rs_unique). Node-distinctness is a one-determinant certificate (nodes_distinct_cert).DETERMINE but LOSE (the new face vs the syndrome pillar):
corruption_fiber_nontrivial— many words decode to the SAMEf. The evaluation shadow DETERMINES the message but LOSES which corruptions were applied — the determining-shadow split, on a DIFFERENT mathlib core (polynomial root-counting) the syndrome lane never touches.HARD to FIND (the imported wall, NOT proved): a low-degree poly agreeing with a CORRUPTED word past the unique-decoding radius is list decoding — NP-hard for general RS (Guruswami–Vardy 2005). Named, not proved, as the syndrome certificate imports ISD/decoding hardness.
The one imported analytic input #
Polynomial.eq_of_natDegree_lt_card_of_eval_eq (a domain polynomial of degree < #points vanishing
there is zero) + det_vandermonde_ne_zero_iff. A field discharges [CommRing]+[IsDomain].
References #
- Reed–Solomon 1960; MacWilliams–Sloane (two RS views); Guruswami–Vardy 2005 (list-decode NP-hard).
Polynomial.eq_of_natDegree_lt_card_of_eval_eq,Matrix.det_vandermonde_ne_zero_iff.
A Reed–Solomon scheme: n DISTINCT nodes, message-degree bound k, decode radius τ.
Trust surface: hnodes (node distinctness — itself cheaply certifiable, below).
- n : ℕ
Block length: the number of evaluation nodes.
- k : ℕ
Message-degree bound: codewords are evaluations of polynomials of degree
< k. - τ : ℕ
Decode radius: at most
τdisagreements are tolerated. The evaluation nodes (must be distinct, see
hnodes).- hnodes : Function.Injective self.nodes
Node distinctness: the nodes are pairwise distinct.
Instances For
The codeword of a message polynomial: its evaluation vector at the nodes.
Equations
- Sundog.RSCertificate.encode S f i = Polynomial.eval (S.nodes i) f
Instances For
The positions where a polynomial's codeword agrees with a received word y.
Equations
- Sundog.RSCertificate.agree S f y = {i : Fin S.n | Polynomial.eval (S.nodes i) f = y i}
Instances For
f is a valid decoding of y: degree <k, at most τ disagreements (n ≤ #agree + τ).
Equations
Instances For
Semantic safety: the received word has a valid decoding.
Equations
- Sundog.RSCertificate.Safe S y = ∃ (f : Polynomial F), Sundog.RSCertificate.Decodes S f y
Instances For
CORE (cheap-check soundness) — k evaluations DETERMINE the degree-<k polynomial.
Two polys of natDegree < k agreeing on a set s of ≥k distinct nodes are EQUAL, by
Polynomial.eq_of_natDegree_lt_card_of_eval_eq (max deg < #s, nodes restricted to s injective).
The deductive core: the evaluation map is injective on degree-<k messages.
Node-distinctness is a one-determinant certificate. A single nonzero Vandermonde determinant
cheaply certifies the scheme's trust-surface hypothesis hnodes.
The cheap verifier and its accept-soundness. #
A cheap verifier: a forward decoder whose some f output carries a proof it decodes.
- decodeOpt : (Fin S.n → F) → Option (Polynomial F)
Forward decoder: optionally produce a decoding polynomial for a received word.
Soundness of the decoder: any returned polynomial genuinely decodes the received word.
Instances For
accept if a decoding is exhibited; quarantine otherwise (the cheap forward check).
Equations
- Sundog.RSCertificate.Verifier.run S V y = match V.decodeOpt y with | some val => Sundog.RSCertificate.Verdict.accept | none => Sundog.RSCertificate.Verdict.quarantine
Instances For
Accept-soundness (by construction). accept ⟹ Safe — the exhibited decoding IS a witness.
UNIQUE DECODING (the quantitative half) — within the radius the decoding is THE unique one. If
2τ+k ≤ n (the unique-decoding radius 2τ ≤ n−k), two valid decodings of a word are equal. Each
agrees with y in ≥ n−τ positions, so (inclusion–exclusion) they agree with EACH OTHER in
≥ n−2τ ≥ k positions — whence rs_unique. So accept returns the unique message.
CORRUPTION_FIBER_NONTRIVIAL — DETERMINE the message, LOSE the corruption. For degree-<k f
and radius τ ≥ 1 (n ≥ 1), at least TWO distinct words decode to the same f: the clean codeword
encode f, and encode f with one position corrupted (still ≤ τ errors). So it DETERMINES
the message but LOSES which corruptions were applied — the determine/lose split, on the
polynomial-evaluation core.