Documentation

LeanPool.MatrixMultiplicationAllFields.LinearAlgebra.MatrixMultiplication.AuxiliarySeparation.Convolution.Rank

Polynomial convolution by evaluation and interpolation #

Evaluating the two input polynomials at a + b - 1 distinct points of K, then interpolating their product, expresses the convolution tensor as a sum of a + b - 1 rank-one tensors. This is the polynomial multiplication rank upper bound used in Section 5.

Recover each monomial coefficient from evaluations at distinct nodes.

theorem MatrixMultiplicationAllFields.MatrixMultiplication.AuxiliarySeparation.convolution_eq_sum_rankOne {K : Type} [Field K] {a b : ℕ} (v : Fin (a + b - 1) → K) (hv : Function.Injective v) :
convolution K a b = fun (i : Fin a) (j : Fin b) (k : Fin (a + b - 1)) => ∑ r : Fin (a + b - 1), Foundation.Tensor.rankOne (fun (i : Fin a) => v r ^ ↑i) (fun (j : Fin b) => v r ^ ↑j) (fun (k : Fin (a + b - 1)) => (Lagrange.basis Finset.univ v r).coeff ↑k) i j k

Evaluation at distinct nodes and Lagrange interpolation give an explicit rank-one decomposition of polynomial convolution.

The convolution tensor C(a,b) has rank at most a + b - 1 over K.