Additive NTT Correctness #
The stage-wise correctness argument and the final correctness theorem for the Additive NTT.
Running a state fold made only of state updates gives the same final state as the corresponding pure fold.
The bitsToU mapping is a bijection: showing that iterating bits corresponds
exactly to the linear span.
Prove that evalWAt equals the standard definition of W_i(x).
Prove that evalNormalizedWAt equals the standard definition of Ŵ_i(x).
Prove that computableTwiddleFactor equals the standard definition of twiddleFactor.
Prove that computableNTTStage equals the standard definition of NTTStage.
In the binary-field setting, the subspace vanishing polynomials satisfy the
runtime recurrence used by evalWAtCachedConstants.
The cached evaluator computes W_i(x) when the cache stores exactly
W_k(β_k) for k < i. This is stated for the internal loop so later proofs can
resume from a partially consumed cache.
The cached evaluator computes W_i(x) from a complete cache for stage i.
The constants-array builder preserves the invariant that entry k stores
W_k(β_k), and finishes with one entry for every k < i.
The proof-oriented computable additive NTT agrees with the abstract additive NTT specification.
The fast additive NTT array implementation is extensionally equal to the
proof-oriented computable implementation after converting its output array to a
Fin-indexed function.
This is the preferred proof boundary for the fast path: once this theorem is
proved, correctness against the abstract additive NTT specification follows from
computableAdditiveNTT_eq_additiveNTT.
The fast additive NTT array implementation is correct against the abstract
additive NTT specification after converting its output array to a Fin-indexed
function.