Generic Basis Combination Helpers #
Generic finite-Y and basis-combination lemmas used by Lee-O'Sullivan correctness.
theorem
CompPoly.cpoly_eval_add
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
(x : F)
(P Q : CPolynomial F)
:
theorem
CompPoly.CBivariate.coeff_neg
{R : Type u_1}
[Ring R]
[BEq R]
[LawfulBEq R]
[Nontrivial R]
(P : CBivariate R)
(i j : ℕ)
:
theorem
CompPoly.CBivariate.coeff_sub
{R : Type u_1}
[Ring R]
[BEq R]
[LawfulBEq R]
[Nontrivial R]
(P Q : CBivariate R)
(i j : ℕ)
:
theorem
CompPoly.CBivariate.coeff_CC_mul
{R : Type u_1}
[Semiring R]
[BEq R]
[LawfulBEq R]
[Nontrivial R]
(c : R)
(Q : CBivariate R)
(i j : ℕ)
:
theorem
CompPoly.CBivariate.coeff_X_mul_zero
{R : Type u_1}
[Semiring R]
[BEq R]
[LawfulBEq R]
[Nontrivial R]
(Q : CBivariate R)
(j : ℕ)
:
theorem
CompPoly.CBivariate.coeff_X_mul_succ
{R : Type u_1}
[Semiring R]
[BEq R]
[LawfulBEq R]
[Nontrivial R]
(Q : CBivariate R)
(i j : ℕ)
:
theorem
CompPoly.CBivariate.evalEval_CC_mul
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(c x y : F)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.evalEval_X_mul
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(x y : F)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.evalEval_sub
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(x y : F)
(P Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivative_sub
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(a b : ℕ)
(P Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivative_CC_mul
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(c : F)
(a b : ℕ)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivative_X_mul_zero_xOrder
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(b : ℕ)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivative_X_mul_succ_xOrder
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(a b : ℕ)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivativeEval_CC_mul
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(c : F)
(a b : ℕ)
(x y : F)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivativeEval_sub
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(a b : ℕ)
(x y : F)
(P Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivativeEval_X_mul_zero_xOrder
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(b : ℕ)
(x y : F)
(Q : CBivariate F)
:
theorem
CompPoly.CBivariate.hasseDerivativeEval_X_mul_succ_xOrder
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(a b : ℕ)
(x y : F)
(Q : CBivariate F)
:
hasseDerivativeEval (a + 1) b x y (X * Q) = x * hasseDerivativeEval (a + 1) b x y Q + hasseDerivativeEval a b x y Q
Finite Y cap shared by positive-Y-weight interpolation proofs.
Instances For
theorem
CompPoly.GuruswamiSudan.coeff_ofYCoefficient
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
[DecidableEq F]
(j : ℕ)
(P : CPolynomial F)
(i k : ℕ)
:
theorem
CompPoly.GuruswamiSudan.coeff_ofYConstant
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(P : CPolynomial F)
(i j : ℕ)
:
theorem
CompPoly.GuruswamiSudan.coeff_ofYConstant_mul
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(A : CPolynomial F)
(P : CBivariate F)
(i j : ℕ)
:
theorem
CompPoly.GuruswamiSudan.natWeightedDegree_ofYConstant_mul_le
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(A : CPolynomial F)
(P : CBivariate F)
(w : ℕ)
:
theorem
CompPoly.GuruswamiSudan.validWitness_coeffY_eq_zero_of_yCap_lt
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
{points : Array (F × F)}
{params : GSInterpParams}
{Q : CBivariate F}
(hMessage : ¬params.messageDegree ≤ 1)
(hQ : ValidInterpolationWitness points params Q)
{j : ℕ}
(hj : koetterYCap params < j)
:
theorem
CompPoly.GuruswamiSudan.ofYConstant_zero
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
:
theorem
CompPoly.GuruswamiSudan.ofYConstant_add
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(P Q : CPolynomial F)
:
theorem
CompPoly.GuruswamiSudan.ofYConstant_C
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(c : F)
:
theorem
CompPoly.GuruswamiSudan.ofYConstant_mul
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(P Q : CPolynomial F)
:
theorem
CompPoly.GuruswamiSudan.ofYConstant_X_mul
{F : Type u_1}
[Semiring F]
[BEq F]
[LawfulBEq F]
[Nontrivial F]
(P : CPolynomial F)
:
theorem
CompPoly.GuruswamiSudan.cpoly_eq_zero_of_val_size_eq_zero
{F : Type u_1}
[Zero F]
[BEq F]
[LawfulBEq F]
(P : CPolynomial F)
(hsize : Array.size ↑P = 0)
:
theorem
CompPoly.GuruswamiSudan.hasseDerivativeEval_ofYConstant_mul_eq_eval_mul_of_lower
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(x y : F)
(b : ℕ)
(A : CPolynomial F)
(P : CBivariate F)
(order : ℕ)
:
(∀ a < order, CBivariate.hasseDerivativeEval a b x y P = 0) →
CBivariate.hasseDerivativeEval order b x y (CBivariate.ofYConstant A * P) = CPolynomial.eval x A * CBivariate.hasseDerivativeEval order b x y P
theorem
CompPoly.GuruswamiSudan.hasseDerivativeEval_ofYConstant_mul_eq_zero_of_lower
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(x y : F)
(b : ℕ)
(A : CPolynomial F)
(P : CBivariate F)
(order : ℕ)
(hLower : ∀ a ≤ order, CBivariate.hasseDerivativeEval a b x y P = 0)
:
theorem
CompPoly.GuruswamiSudan.foldl_add_congr_terms
{α : Type u_1}
[Add α]
(xs : List ℕ)
(f g : ℕ → α)
(z : α)
(h : ∀ x ∈ xs, f x = g x)
:
List.foldl (fun (out : α) (x : ℕ) => out + f x) z xs = List.foldl (fun (out : α) (x : ℕ) => out + g x) z xs
theorem
CompPoly.GuruswamiSudan.foldl_add_distrib_terms_aux
{α : Type u_1}
[AddCommMonoid α]
(xs : List ℕ)
(f g : ℕ → α)
(a b : α)
:
List.foldl (fun (out : α) (x : ℕ) => out + (f x + g x)) (a + b) xs = List.foldl (fun (out : α) (x : ℕ) => out + f x) a xs + List.foldl (fun (out : α) (x : ℕ) => out + g x) b xs
theorem
CompPoly.GuruswamiSudan.foldl_add_distrib_terms
{α : Type u_1}
[AddCommMonoid α]
(xs : List ℕ)
(f g : ℕ → α)
:
List.foldl (fun (out : α) (x : ℕ) => out + (f x + g x)) 0 xs = List.foldl (fun (out : α) (x : ℕ) => out + f x) 0 xs + List.foldl (fun (out : α) (x : ℕ) => out + g x) 0 xs
def
CompPoly.GuruswamiSudan.koetterBasisCombination
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(weights : ℕ → CPolynomial F)
(basis : Array (CBivariate F))
:
Instances For
def
CompPoly.GuruswamiSudan.koetterBasisSpanContains
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(basis : Array (CBivariate F))
(Q : CBivariate F)
:
Instances For
theorem
CompPoly.GuruswamiSudan.koetterBasisCombination_eq_zero_of_weights_zero
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(weights : ℕ → CPolynomial F)
(basis : Array (CBivariate F))
(hzero : ∀ idx < basis.size, weights idx = 0)
:
theorem
CompPoly.GuruswamiSudan.coeff_koetterBasisCombination
{F : Type u_1}
[Field F]
[BEq F]
[LawfulBEq F]
[DecidableEq F]
(weights : ℕ → CPolynomial F)
(basis : Array (CBivariate F))
(i j : ℕ)
:
(koetterBasisCombination weights basis).coeff i j = List.foldl (fun (out : F) (idx : ℕ) => out + (CBivariate.ofYConstant (weights idx) * basis.getD idx 0).coeff i j) 0
(List.range basis.size)