Positivity of generating-function coefficients (Theorem 1) #
This file formalizes Theorem 1 of the Chebyshev-quotient / Demazure-multiplicity paper: the coefficients of the generating function attached to a partition are eventually positive, built from a Chebyshev-type polynomial recurrence and a Dyck-path model.
Core Definitions #
The Chebyshev-type polynomial sequence P n over a commutative ring, defined by
P 0 = P 1 = 1 and P (n + 2) = P (n + 1) - X * P n.
Equations
- Biswal.Theorem1.polyP R 0 = 1
- Biswal.Theorem1.polyP R 1 = 1
- Biswal.Theorem1.polyP R n.succ.succ = Biswal.Theorem1.polyP R (n + 1) - Polynomial.X * Biswal.Theorem1.polyP R n
Instances For
The number of parts of ξ equal to m.
Equations
Instances For
noncomputable def
Biswal.Theorem1.genFun
(K : Type u_1)
[Field K]
(m n : ℕ)
{s : ℕ}
(ξ : s.Partition)
:
The generating function attached to ξ with parameters m and n, as a power series.
Equations
- Biswal.Theorem1.genFun K m n ξ = ↑(Biswal.Theorem1.polyP K (m - n % m - 1) * Biswal.Theorem1.partitionPoly K ξ) * (↑(Biswal.Theorem1.polyP K m) ^ (n / m + 1))⁻¹
Instances For
noncomputable def
Biswal.Theorem1.genFunCoeff
(K : Type u_1)
[Field K]
(m n r : ℕ)
{s : ℕ}
(ξ : s.Partition)
:
K
The r-th coefficient of the generating function genFun K m n ξ.
Equations
- Biswal.Theorem1.genFunCoeff K m n r ξ = (PowerSeries.coeff r) (Biswal.Theorem1.genFun K m n ξ)
Instances For
Basic Properties of polyP #
theorem
Biswal.Theorem1.partitionPoly_split
(K : Type u_1)
[CommRing K]
(m : ℕ)
{s : ℕ}
(ξ : s.Partition)
:
∃ (Q : Polynomial K), partitionPoly K ξ = polyP K m ^ countMaxParts m ξ * Q
theorem
Biswal.Theorem1.poly_coe_eventually_zero
(K : Type u_1)
[Field K]
(P : Polynomial K)
(r : ℕ)
:
P.natDegree < r → (PowerSeries.coeff r) ↑P = 0
noncomputable def
Biswal.Theorem1.nonMaxPartsPoly
(K : Type u_1)
[CommRing K]
(m : ℕ)
{s : ℕ}
(ξ : s.Partition)
:
The product of polyP K over the parts of ξ that are not equal to m.
Equations
- Biswal.Theorem1.nonMaxPartsPoly K m ξ = (Multiset.map (Biswal.Theorem1.polyP K) (Multiset.filter (fun (x : ℕ) => x ≠ m) ξ.parts)).prod
Instances For
theorem
Biswal.Theorem1.genFun_as_rational_fraction_with_pos_numerator
(m n : ℕ)
{s : ℕ}
(ξ : s.Partition)
(hm : 2 ≤ m)
(h_parts : ∀ i ∈ ξ.parts, i ≤ m)
(h_t : countMaxParts m ξ ≤ n / m)
:
∃ (A : Polynomial ℚ) (k : ℕ),
0 < k ∧ genFun ℚ m n ξ = ↑A * (↑(polyP ℚ m) ^ k)⁻¹ ∧ ∀ (ρ : ℝ),
0 < ρ →
Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ m)) = 0 →
(∀ j < m, 0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ j))) →
0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) A)
theorem
Biswal.Theorem1.coeff_rational_fraction_eq_proper_part
(A D : Polynomial ℚ)
(_hD : PowerSeries.constantCoeff ↑D ≠ 0)
:
Trigonometric and Chebyshev Lemmas #
Root Analysis #
theorem
Biswal.Theorem1.polyP_roots_positive
(m : ℕ)
(hm : 2 ≤ m)
:
∃ (ρ : ℝ),
0 < ρ ∧ Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ m)) = 0 ∧ ∀ j < m, 0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ j))
theorem
Biswal.Theorem1.remainder_positive_at_roots
(A D S R : Polynomial ℚ)
(hdiv : ↑A * (↑D)⁻¹ = ↑S + ↑R * (↑D)⁻¹)
(hD_ne : PowerSeries.constantCoeff ↑D ≠ 0)
(ρ : ℝ)
(hρ : Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) D) = 0)
(hA : 0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) A))
:
theorem
Biswal.Theorem1.pos_coeff_transfer_R_to_Q
(f : PowerSeries ℚ)
(N : ℕ)
(h : ∀ (r : ℕ), N < r → 0 < (PowerSeries.coeff r) ((PowerSeries.map (algebraMap ℚ ℝ)) f))
(r : ℕ)
:
N < r → 0 < (PowerSeries.coeff r) f
theorem
Biswal.Theorem1.map_algebraMap_inv_comm
(f : PowerSeries ℚ)
(hf : PowerSeries.constantCoeff f ≠ 0)
:
theorem
Biswal.Theorem1.polyP_chebyshev_rescale
(n : ℕ)
(z : ℝ)
(hz : z ≠ 0)
:
(2 * z) ^ n * Polynomial.eval (1 / (4 * z ^ 2)) (polyP ℝ n) = Polynomial.eval z (Polynomial.Chebyshev.U ℝ ↑n)
Coprimality and Splitting #
theorem
Biswal.Theorem1.bezout_core
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(s : ℝ)
(hs_pos : 0 < s)
(Q : Polynomial ℝ)
:
Polynomial.C (1 / s) * ((Polynomial.X - Polynomial.C ρ) * Q + Polynomial.C s) + Polynomial.C (ρ / s) * Q * (-Polynomial.C (1 / ρ) * (Polynomial.X - Polynomial.C ρ)) = 1
theorem
Biswal.Theorem1.isCoprime_of_eval_pos
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(S : Polynomial ℝ)
(hS_pos : 0 < Polynomial.eval ρ S)
:
IsCoprime S (Polynomial.X - Polynomial.C ρ)
theorem
Biswal.Theorem1.prod_linear_factors_dvd
{p : Polynomial ℝ}
{d : ℕ}
(_hp : p ≠ 0)
(r : Fin d → ℝ)
(hr_pos : ∀ (j : Fin d), 0 < r j)
(hr_mono : StrictMono r)
(hr_root : ∀ (j : Fin d), p.IsRoot (r j))
(h_dvd : ∀ (j : Fin d), Polynomial.X - Polynomial.C (r j) ∣ p)
:
theorem
Biswal.Theorem1.polyP_root_to_chebyshev_root
(m : ℕ)
(r : ℝ)
(hr_pos : 0 < r)
(hr_root : Polynomial.eval r (polyP ℝ m) = 0)
:
have z := 1 / (2 * √r);
0 < z ∧ Polynomial.eval z (Polynomial.Chebyshev.U ℝ ↑m) = 0
theorem
Biswal.Theorem1.polyP_roots_pos
(m : ℕ)
(_hm : 2 ≤ m)
(x : ℝ)
(hx : Polynomial.eval x (polyP ℝ m) = 0)
:
theorem
Biswal.Theorem1.root_comparison
(m : ℕ)
(hm : 2 ≤ m)
(ρ x : ℝ)
(hρ_pos : 0 < ρ)
(hx_pos : 0 < x)
(k_ρ k_x : ℕ)
(hk_ρ_pos : 1 ≤ k_ρ)
(_hk_ρ_bound : 2 * k_ρ < m + 1)
(_hk_x_pos : 1 ≤ k_x)
(hk_x_bound : 2 * k_x < m + 1)
(hρ_param : 1 / (2 * √ρ) = Real.cos (↑k_ρ * Real.pi / (↑m + 1)))
(hx_param : 1 / (2 * √x) = Real.cos (↑k_x * Real.pi / (↑m + 1)))
(hk_lt : k_ρ < k_x)
:
theorem
Biswal.Theorem1.eval_deriv_eq_neg_inv_rho_mul_eval_S
(m : ℕ)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
:
Derivative Convolution Identity #
theorem
Biswal.Theorem1.polyP_deriv_recurrence
(R : Type u_1)
[CommRing R]
(n : ℕ)
:
Polynomial.derivative (polyP R (n + 2)) = Polynomial.derivative (polyP R (n + 1)) - polyP R n - Polynomial.X * Polynomial.derivative (polyP R n)
theorem
Biswal.Theorem1.eval_deriv_polyP_neg
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(_hρ_pos : 0 < ρ)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
:
theorem
Biswal.Theorem1.rho_not_root_of_S
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(_hρ_root : Polynomial.eval ρ (polyP ℝ m) = 0)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
:
theorem
Biswal.Theorem1.S_constantCoeff_from_fact
(m : ℕ)
(ρ : ℝ)
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
:
theorem
Biswal.Theorem1.S_splits
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
:
S.Splits
theorem
Biswal.Theorem1.eval_pos_from_splits_and_roots_gt
(S : Polynomial ℝ)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(_hS_ne : S ≠ 0)
(_hS_splits : S.Splits)
(hS_eval_zero : Polynomial.eval 0 S = 1)
(hS_roots_gt : ∀ (x : ℝ), Polynomial.eval x S = 0 → ρ < x)
:
theorem
Biswal.Theorem1.roots_of_S_gt_rho_v2
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(hρ_root : Polynomial.eval ρ (polyP ℝ m) = 0)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
(x : ℝ)
(hx : Polynomial.eval x S = 0)
:
theorem
Biswal.Theorem1.S_eval_pos
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(hρ_root : Polynomial.eval ρ (polyP ℝ m) = 0)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
:
Factorization and Power Series Decomposition #
theorem
Biswal.Theorem1.polyP_factor_at_root
(m : ℕ)
(hm : 2 ≤ m)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(hρ_root : Polynomial.eval ρ (polyP ℝ m) = 0)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
:
∃ (S : Polynomial ℝ),
polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S ∧ 0 < Polynomial.eval ρ S ∧ IsCoprime (1 - Polynomial.C (1 / ρ) * Polynomial.X) S ∧ Polynomial.eval 0 S = 1 ∧ (∀ (x : ℝ), Polynomial.eval x S = 0 → ρ < x) ∧ S.Splits
theorem
Biswal.Theorem1.coe_pow_constantCoeff_ne_zero
(p : Polynomial ℝ)
(k : ℕ)
(hp : p.coeff 0 = 1)
:
theorem
Biswal.Theorem1.ps_decomp_core
(R_rem Lk Sk : PowerSeries ℝ)
(hLk : PowerSeries.constantCoeff Lk ≠ 0)
(hSk : PowerSeries.constantCoeff Sk ≠ 0)
(a_ps b_ps : PowerSeries ℝ)
(hbez : a_ps * Lk + b_ps * Sk = 1)
:
theorem
Biswal.Theorem1.ps_decomp
(R_rem : Polynomial ℝ)
(k : ℕ)
(_hk : 0 < k)
(L S : Polynomial ℝ)
(hL_const : L.coeff 0 = 1)
(hS_const : S.coeff 0 = 1)
(a b : Polynomial ℝ)
(hbez : a * L ^ k + b * S ^ k = 1)
(P : Polynomial ℝ)
(hP : P = L * S)
:
theorem
Biswal.Theorem1.bezout_eval_at_root
(L S a b : Polynomial ℝ)
(k : ℕ)
(hk : 0 < k)
(ρ : ℝ)
(hL_zero : Polynomial.eval ρ L = 0)
(hbez : a * L ^ k + b * S ^ k = 1)
:
theorem
Biswal.Theorem1.bezout_fraction_split
(m : ℕ)
(_hm : 2 ≤ m)
(R_rem : Polynomial ℝ)
(k : ℕ)
(hk : 0 < k)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(hR_pos : 0 < Polynomial.eval ρ R_rem)
(S : Polynomial ℝ)
(hfact : polyP ℝ m = (1 - Polynomial.C (1 / ρ) * Polynomial.X) * S)
(hS_pos : 0 < Polynomial.eval ρ S)
(hCop : IsCoprime (1 - Polynomial.C (1 / ρ) * Polynomial.X) S)
:
∃ (N_poly : Polynomial ℝ) (M_poly : Polynomial ℝ),
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
↑R_rem * (↑(polyP ℝ m) ^ k)⁻¹ = ↑N_poly * (↑L ^ k)⁻¹ + ↑M_poly * (↑S ^ k)⁻¹ ∧ 0 < Polynomial.eval ρ N_poly
theorem
Biswal.Theorem1.L_coe_eq_rescale_one_sub_X
(ρ : ℝ)
:
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
↑L = (PowerSeries.rescale (1 / ρ)) (1 - PowerSeries.X)
theorem
Biswal.Theorem1.rescale_inv
(a : ℝ)
(f : PowerSeries ℝ)
(hf : PowerSeries.constantCoeff f ≠ 0)
:
theorem
Biswal.Theorem1.poly_eval_lower_bound
(q : Polynomial ℝ)
(hd : 1 ≤ q.natDegree)
(x : ℝ)
(hx : 1 ≤ x)
:
x ^ (q.natDegree - 1) * (q.leadingCoeff * x - ∑ i ∈ Finset.range q.natDegree, |q.coeff i|) ≤ Polynomial.eval x q
theorem
Biswal.Theorem1.poly_eventually_pos_nat
(q : Polynomial ℝ)
(hq : 0 < q.leadingCoeff)
:
∃ (N : ℕ), ∀ (r : ℕ), N < r → 0 < Polynomial.eval (↑r) q
Hilbert Polynomial and Eventual Positivity #
The polynomial N_poly rescaled by ρ, i.e. N_poly.comp (C ρ * X).
Equations
- Biswal.Theorem1.nScaled ρ N_poly = N_poly.comp (Polynomial.C ρ * Polynomial.X)
Instances For
theorem
Biswal.Theorem1.rescale_rho_L_eq_one_sub_X
(ρ : ℝ)
(hρ : 0 < ρ)
:
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
(PowerSeries.rescale ρ) ↑L = 1 - PowerSeries.X
theorem
Biswal.Theorem1.degree_smul_preHilbertPoly
(p : Polynomial ℝ)
(d i : ℕ)
(hi : i ∈ p.support)
:
theorem
Biswal.Theorem1.hilbertPoly_succ_leadingCoeff_sum
(p : Polynomial ℝ)
(d : ℕ)
(h_nonzero : ∑ i ∈ p.support, p.coeff i ≠ 0)
:
theorem
Biswal.Theorem1.hilbertPoly_succ_leadingCoeff
(p : Polynomial ℝ)
(d : ℕ)
(hp : Polynomial.eval 1 p ≠ 0)
:
theorem
Biswal.Theorem1.hilbertPoly_pos_leadingCoeff
(ρ : ℝ)
(_hρ : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
:
theorem
Biswal.Theorem1.scaled_coeff_is_eventually_poly
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
:
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
∃ (q : Polynomial ℝ) (N₀ : ℕ),
0 < q.leadingCoeff ∧ ∀ (r : ℕ), N₀ < r → ρ ^ r * (PowerSeries.coeff r) (↑N_poly * (↑L ^ k)⁻¹) = Polynomial.eval (↑r) q
theorem
Biswal.Theorem1.L_part_eventually_pos
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
:
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
∃ (N : ℕ), ∀ (r : ℕ), N < r → 0 < (PowerSeries.coeff r) (↑N_poly * (↑L ^ k)⁻¹)
Coefficient Bounds and Asymptotic Analysis #
theorem
Biswal.Theorem1.S_eq_one_of_deg_zero_const_one
(S : Polynomial ℝ)
(hS_const_coeff : Polynomial.eval 0 S = 1)
(hS_deg : S.natDegree = 0)
:
theorem
Biswal.Theorem1.S_part_eventually_zero_of_const
(M_poly S : Polynomial ℝ)
(k : ℕ)
(_hk : 0 < k)
(hS_const_coeff : Polynomial.eval 0 S = 1)
(hS_deg : S.natDegree = 0)
:
theorem
Biswal.Theorem1.poly_mul_preserves_bound
(P : Polynomial ℝ)
(f : PowerSeries ℝ)
(C : ℝ)
(D : ℕ)
(q : ℝ)
(hC : 0 < C)
(hq : 0 < q)
(hbound : ∀ (r : ℕ), |(PowerSeries.coeff r) f| ≤ C * (↑r + 1) ^ D * q ^ r)
:
theorem
Biswal.Theorem1.cauchy_product_bound
(f₁ f₂ : PowerSeries ℝ)
(C₁ C₂ : ℝ)
(D₁ D₂ : ℕ)
(q : ℝ)
(hC₁ : 0 < C₁)
(hC₂ : 0 < C₂)
(hq : 0 < q)
(hf₁ : ∀ (r : ℕ), |(PowerSeries.coeff r) f₁| ≤ C₁ * (↑r + 1) ^ D₁ * q ^ r)
(hf₂ : ∀ (r : ℕ), |(PowerSeries.coeff r) f₂| ≤ C₂ * (↑r + 1) ^ D₂ * q ^ r)
(r : ℕ)
:
theorem
Biswal.Theorem1.prod_X_sub_C_eq_scalar_mul_prod_L
(roots : Multiset ℝ)
(hroots : ∀ α ∈ roots, 0 < α)
:
(Multiset.map (fun (α : ℝ) => Polynomial.X - Polynomial.C α) roots).prod = (Multiset.map (fun (α : ℝ) => -Polynomial.C α) roots).prod * (Multiset.map (fun (α : ℝ) => 1 - Polynomial.C (1 / α) * Polynomial.X) roots).prod
theorem
Biswal.Theorem1.prod_neg_C_eq_C_prod_neg
(roots : Multiset ℝ)
:
(Multiset.map (fun (α : ℝ) => -Polynomial.C α) roots).prod = Polynomial.C (Multiset.map Neg.neg roots).prod
theorem
Biswal.Theorem1.leadingCoeff_mul_prod_neg_roots_eq_one
(S : Polynomial ℝ)
(_hS_ne : S ≠ 0)
(hS_splits : S.Splits)
(hS_const : Polynomial.eval 0 S = 1)
:
theorem
Biswal.Theorem1.splits_poly_eq_prod_L
(S : Polynomial ℝ)
(hS_ne : S ≠ 0)
(hS_splits : S.Splits)
(hS_const : Polynomial.eval 0 S = 1)
(hroots_pos : ∀ x ∈ S.roots, 0 < x)
:
theorem
Biswal.Theorem1.coe_pow_eq_prod_coe_pow
(S : Polynomial ℝ)
(hS_eq : S = (Multiset.map (fun (α : ℝ) => 1 - Polynomial.C (1 / α) * Polynomial.X) S.roots).prod)
(k : ℕ)
:
↑S ^ k = (Multiset.map (fun (α : ℝ) => ↑(1 - Polynomial.C (1 / α) * Polynomial.X) ^ k) S.roots).prod
theorem
Biswal.Theorem1.inv_prod_eq_prod_inv_of_roots
(roots : Multiset ℝ)
(k : ℕ)
:
(Multiset.map (fun (α : ℝ) => ↑(1 - Polynomial.C (1 / α) * Polynomial.X) ^ k) roots).prod⁻¹ = (Multiset.map (fun (α : ℝ) => (↑(1 - Polynomial.C (1 / α) * Polynomial.X) ^ k)⁻¹) roots).prod
theorem
Biswal.Theorem1.splits_inv_pow_eq_multiset_prod
(S : Polynomial ℝ)
(k : ℕ)
(_hk : 0 < k)
(hS_ne : S ≠ 0)
(hS_splits : S.Splits)
(hS_const : Polynomial.eval 0 S = 1)
(hroots_pos : ∀ x ∈ S.roots, 0 < x)
:
0 < S.natDegree →
∃ (P : Polynomial ℝ),
(↑S ^ k)⁻¹ = ↑P * (Multiset.map (fun (α : ℝ) => (↑(1 - Polynomial.C (1 / α) * Polynomial.X) ^ k)⁻¹) S.roots).prod
theorem
Biswal.Theorem1.inv_splits_pow_coeff_bound
(S : Polynomial ℝ)
(k : ℕ)
(hk : 0 < k)
(hS_ne : S ≠ 0)
(hS_splits : S.Splits)
(hS_const : Polynomial.eval 0 S = 1)
(ρ₁ : ℝ)
(hρ₁_pos : 0 < ρ₁)
(hρ₁_le : ∀ (x : ℝ), Polynomial.eval x S = 0 → ρ₁ ≤ x)
:
theorem
Biswal.Theorem1.eval_eq_zero_of_mem_roots_toFinset
(S : Polynomial ℝ)
(hS_ne : S ≠ 0)
{x : ℝ}
(hx : x ∈ S.roots.toFinset)
:
theorem
Biswal.Theorem1.S_part_coeff_bound
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(M_poly S : Polynomial ℝ)
(hS_pos : 0 < Polynomial.eval ρ S)
(hS_const : Polynomial.eval 0 S = 1)
(hS_roots_larger : ∀ (x : ℝ), Polynomial.eval x S = 0 → ρ < x)
(hS_splits : S.Splits)
(hS_nconst : 0 < S.natDegree)
:
theorem
Biswal.Theorem1.poly_eq_of_eventually_eq
(q₁ q₂ : Polynomial ℝ)
(N : ℕ)
(h : ∀ (r : ℕ), N < r → Polynomial.eval (↑r) q₁ = Polynomial.eval (↑r) q₂)
:
theorem
Biswal.Theorem1.scaled_coeff_poly_degree_ge
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
(q : Polynomial ℝ)
(N₀ : ℕ)
(_hq_lc : 0 < q.leadingCoeff)
(hq_eq :
∀ (r : ℕ),
N₀ < r →
ρ ^ r * (PowerSeries.coeff r) (↑N_poly * (↑(1 - Polynomial.C (1 / ρ) * Polynomial.X) ^ k)⁻¹) = Polynomial.eval (↑r) q)
:
theorem
Biswal.Theorem1.poly_lower_bound_at_point
(q : Polynomial ℝ)
(hq : 0 < q.leadingCoeff)
(hdeg : 1 ≤ q.natDegree)
(d : ℕ)
(hd : d ≤ q.natDegree)
(x : ℝ)
(hx : 1 ≤ x)
(hxS : (2 * ∑ i ∈ Finset.range q.natDegree, |q.coeff i|) / q.leadingCoeff < x)
:
theorem
Biswal.Theorem1.poly_eventually_lower_bound
(q : Polynomial ℝ)
(hq : 0 < q.leadingCoeff)
(d : ℕ)
(hd : d ≤ q.natDegree)
:
theorem
Biswal.Theorem1.L_part_coeff_lower_bound
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
:
theorem
Biswal.Theorem1.tendsto_add_one_pow_mul_geometric
(D : ℕ)
(q : ℝ)
(hq_pos : 0 ≤ q)
(hq_lt : q < 1)
:
Filter.Tendsto (fun (r : ℕ) => (↑r + 1) ^ D * q ^ r) Filter.atTop (nhds 0)
theorem
Biswal.Theorem1.S_part_eventually_dominated
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly M_poly S : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
(hS_pos : 0 < Polynomial.eval ρ S)
(hS_const : Polynomial.eval 0 S = 1)
(hS_roots_larger : ∀ (x : ℝ), Polynomial.eval x S = 0 → ρ < x)
(hS_splits : S.Splits)
:
have L := 1 - Polynomial.C (1 / ρ) * Polynomial.X;
∃ (N : ℕ),
∀ (r : ℕ), N < r → |(PowerSeries.coeff r) (↑M_poly * (↑S ^ k)⁻¹)| < (PowerSeries.coeff r) (↑N_poly * (↑L ^ k)⁻¹)
theorem
Biswal.Theorem1.sum_parts_eventually_pos
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(k : ℕ)
(hk : 0 < k)
(N_poly M_poly S : Polynomial ℝ)
(hN_pos : 0 < Polynomial.eval ρ N_poly)
(hS_pos : 0 < Polynomial.eval ρ S)
(hS_const : Polynomial.eval 0 S = 1)
(hS_roots_larger : ∀ (x : ℝ), Polynomial.eval x S = 0 → ρ < x)
(hS_splits : S.Splits)
:
theorem
Biswal.Theorem1.proper_fraction_coeff_pos_over_R
(m : ℕ)
(hm : 2 ≤ m)
(R_rem : Polynomial ℝ)
(k : ℕ)
(hk : 0 < k)
(ρ : ℝ)
(hρ_pos : 0 < ρ)
(hρ_root : Polynomial.eval ρ (polyP ℝ m) = 0)
(hρ_lower : ∀ j < m, 0 < Polynomial.eval ρ (polyP ℝ j))
(hR_pos : 0 < Polynomial.eval ρ R_rem)
:
theorem
Biswal.Theorem1.map_genFun_comm
(R_poly : Polynomial ℚ)
(m k : ℕ)
:
(PowerSeries.map (algebraMap ℚ ℝ)) (↑R_poly * (↑(polyP ℚ m) ^ k)⁻¹) = ↑(Polynomial.map (algebraMap ℚ ℝ) R_poly) * (↑(polyP ℝ m) ^ k)⁻¹
theorem
Biswal.Theorem1.proper_fraction_coeff_eventually_pos
(m : ℕ)
(hm : 2 ≤ m)
(R_poly : Polynomial ℚ)
(k : ℕ)
(hk : 0 < k)
(hR_pos_at_root :
∀ (ρ : ℝ),
0 < ρ →
Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ m)) = 0 →
(∀ j < m, 0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) (polyP ℚ j))) →
0 < Polynomial.eval ρ (Polynomial.map (algebraMap ℚ ℝ) R_poly))
: