Documentation

ArkLib.Data.CodingTheory.PolishchukSpielman.Degrees

Degree bounds for Polishchuk-Spielman #

This file contains auxiliary lemmas regarding degree bounds, evaluation, and variable swapping for bivariate polynomials, used in the Polishchuk-Spielman lemma [BCIKS20].

Main results #

References #

theorem ps_bx_lt_nx {b_x b_y : } {n_x n_y : ℕ+} (h_le_1 : 1 > b_x / n_x + b_y / n_y) :
b_x < n_x
theorem ps_by_lt_ny {b_x b_y : } {n_x n_y : ℕ+} (h_le_1 : 1 > b_x / n_x + b_y / n_y) :
b_y < n_y
theorem ps_coeff_mul_monomial_ite {R : Type} [Semiring R] (A : Polynomial R) (j i : ) (r : R) :
(A * (Polynomial.monomial j) r).coeff i = if j i then A.coeff (i - j) * r else 0
theorem ps_coeff_mul_sum_monomial {R : Type} [CommRing R] (A : Polynomial R) (m n : ) (hm : A.natDegree m) (c : Fin nR) (i : ) :
(A * j : Fin n, (Polynomial.monomial j) (c j)).coeff i = j : Fin n, if j i i j + m then A.coeff (i - j) * c j else 0
theorem ps_descend_eval_x {F : Type} [Field F] [DecidableEq F] {A B G A1 B1 : Polynomial (Polynomial F)} (hA : A = G * A1) (hB : B = G * B1) (x : F) (hx : Polynomial.Bivariate.evalX x G 0) (q : Polynomial F) (h : Polynomial.Bivariate.evalX x B = q * Polynomial.Bivariate.evalX x A) :
theorem ps_descend_eval_y {F : Type} [Field F] [DecidableEq F] {A B G A1 B1 : Polynomial (Polynomial F)} (hA : A = G * A1) (hB : B = G * B1) (y : F) (hy : Polynomial.Bivariate.evalY y G 0) (q : Polynomial F) (h : Polynomial.Bivariate.evalY y B = q * Polynomial.Bivariate.evalY y A) :
theorem ps_degree_bounds_of_mul {F : Type} [Field F] (a_x a_y b_x b_y : ) (n_x n_y : ℕ+) (h_bx_ge_ax : b_x a_x) (h_by_ge_ay : b_y a_y) {A B P : Polynomial (Polynomial F)} (hA : A 0) (hBA : B = P * A) (h_f_degX : a_x Polynomial.Bivariate.degreeX A) (h_f_degY : a_y Polynomial.Bivariate.natDegreeY A) (h_g_degY : b_y Polynomial.Bivariate.natDegreeY B) (P_x P_y : Finset F) [Nonempty P_x] [Nonempty P_y] (quot_x quot_y : FPolynomial F) (h_card_Px : n_x P_x.card) (h_card_Py : n_y P_y.card) (h_quot_x : yP_y, (quot_x y).natDegree b_x - a_x Polynomial.Bivariate.evalY y B = quot_x y * Polynomial.Bivariate.evalY y A) (h_quot_y : xP_x, (quot_y x).natDegree b_y - a_y Polynomial.Bivariate.evalX x B = quot_y x * Polynomial.Bivariate.evalX x A) (h_le_1 : 1 > b_x / n_x + b_y / n_y) :
theorem ps_gcd_decompose {F : Type} [Field F] {A B : Polynomial (Polynomial F)} (hA : A 0) (hB : B 0) :
∃ (G : Polynomial (Polynomial F)) (A1 : Polynomial (Polynomial F)) (B1 : Polynomial (Polynomial F)), A = G * A1 B = G * B1 IsRelPrime A1 B1 A1 0 B1 0