Documentation

CompPoly.Bivariate.GuruswamiSudan.Interpolation.LeeOSullivan.Correctness.Combinations

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.cpoly_eq_of_toPoly_eq {F : Type u_1} [Semiring F] [BEq F] [LawfulBEq F] {P Q : CPolynomial F} (h : P.toPoly = Q.toPoly) :
P = Q
theorem CompPoly.cpoly_coeff_eq_zero_of_natDegree_lt {F : Type u_1} [Zero F] [BEq F] [LawfulBEq F] {P : CPolynomial F} {i : } (h : P.natDegree < i) :
P.coeff i = 0
theorem CompPoly.CBivariate.coeff_neg {R : Type u_1} [Ring R] [BEq R] [LawfulBEq R] [Nontrivial R] (P : CBivariate R) (i j : ) :
(-P).coeff i j = -P.coeff 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 : ) :
(P - Q).coeff i j = P.coeff i j - Q.coeff 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 : ) :
(CC c * Q).coeff i j = c * Q.coeff 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 : ) :
(X * Q).coeff 0 j = 0
theorem CompPoly.CBivariate.coeff_X_mul_succ {R : Type u_1} [Semiring R] [BEq R] [LawfulBEq R] [Nontrivial R] (Q : CBivariate R) (i j : ) :
(X * Q).coeff (i + 1) j = Q.coeff 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) :
evalEval x y (CC c * Q) = c * evalEval x y Q
theorem CompPoly.CBivariate.evalEval_X_mul {F : Type u_1} [Field F] [BEq F] [LawfulBEq F] [DecidableEq F] (x y : F) (Q : CBivariate F) :
evalEval x y (X * Q) = x * evalEval x y Q
theorem CompPoly.CBivariate.evalEval_sub {F : Type u_1} [Field F] [BEq F] [LawfulBEq F] [DecidableEq F] (x y : F) (P Q : CBivariate F) :
evalEval x y (P - Q) = evalEval x y P - evalEval x y Q
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.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) :
hasseDerivativeEval a b x y (CC c * Q) = c * hasseDerivativeEval a b x y Q
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_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.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) :
    (↑Q).coeff j = 0
    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 : aorder, 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 : xxs, 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
    theorem CompPoly.GuruswamiSudan.foldl_add_single_beq_of_not_mem {α : Type u_1} [AddCommMonoid α] (xs : List ) (target : ) (term acc : α) (hnot : targetxs) :
    List.foldl (fun (out : α) (idx : ) => out + if (idx == target) = true then term else 0) acc xs = acc
    theorem CompPoly.GuruswamiSudan.foldl_add_single_beq_of_nodup_mem {α : Type u_1} [AddCommMonoid α] (xs : List ) (target : ) (term : α) (hnodup : xs.Nodup) (hmem : target xs) :
    List.foldl (fun (out : α) (idx : ) => out + if (idx == target) = true then term else 0) 0 xs = term
    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) :
      koetterBasisCombination weights basis = 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)