Documentation

Hironaka.Analytic.Weierstrass.Poly

Weierstrass polynomials: coefficients, order, and the polynomial over the tail ring #

A Weierstrass polynomial x_0^d + ∑_{j<d} c_j(x') x_0^{d-1-j} (weierstrassPoly, a series in m + 1 variables) corresponds under splitFirst K m to the polynomial X^d + ∑ C(c_j) X^{d-1-j} over the tail ring (weierstrassPolynomial, defined over any commutative ring), which is monic of degree d, and distinguished when the c_j vanish at 0. Its coefficients are read off exponent by exponent (coeff_cons_weierstrassPoly): the terms have distinct x_0-degrees, so there is no cancellation, and the order is d exactly when μ_0(c_j) ≥ j + 1 for every j; since our c_j is the printed c_{j+1}, this is the printed condition μ_0(c_j) ≥ j on the coefficients [BM88, proof of Theorem 4.4, p. 24, item (2)]. A series of x_0-degree < d is its own truncation, hence a polynomial of degree < d over the tail ring: this is how the convergent remainders enter Mathlib's IsWeierstrassDivision.

The coefficient field K is ℝ or ℂ ([RCLike K]).

Coefficients of lifted series and Weierstrass polynomials #

theorem Analytic.coeff_cons_X_pow {K : Type u_1} [RCLike K] {m : ℕ} (d k : ℕ) (x : Fin m →₀ ℕ) :
theorem Analytic.coeff_cons_weierstrassPoly {K : Type u_1} [RCLike K] {m : ℕ} (d : ℕ) (c : Fin d → MvPowerSeries (Fin m) K) (k : ℕ) (x : Fin m →₀ ℕ) :
(MvPowerSeries.coeff (Finsupp.cons k x)) (weierstrassPoly d c) = (if k = d ∧ x = 0 then 1 else 0) + ∑ j : Fin d, if k = d - 1 - ↑j then (MvPowerSeries.coeff x) (c j) else 0

The coefficient of x_0^k x'^x in a Weierstrass polynomial: the terms have distinct x_0-degrees, so the coefficient is read off term by term.

The order of a Weierstrass polynomial #

theorem Analytic.order_weierstrassPoly_le {K : Type u_1} [RCLike K] {m : ℕ} (d : ℕ) (c : Fin d → MvPowerSeries (Fin m) K) :

μ_0(P) ≤ d, the coefficient of x_0^d being 1.

theorem Analytic.order_weierstrassPoly_eq_iff {K : Type u_1} [RCLike K] {m : ℕ} (d : ℕ) (c : Fin d → MvPowerSeries (Fin m) K) :
(weierstrassPoly d c).order = ↑d ↔ ∀ (j : Fin d), ↑↑j + 1 ≤ (c j).order

μ_0(P) = d iff μ_0(c_j) ≥ j + 1 for all j (no cancellation between terms of distinct x_0-degree): the printed μ_0(c_j) ≥ j of [BM88, proof of Theorem 4.4, p. 24, item (2)], our c_j being the printed c_{j+1}.

The polynomial over the tail ring #

The polynomial weierstrassPolynomial d c is defined over an arbitrary commutative ring; here it is compared with the series weierstrassPoly d c through splitFirst.

theorem Analytic.splitFirst_weierstrassPoly {K : Type u_1} [RCLike K] {m : ℕ} (d : ℕ) (c : Fin d → MvPowerSeries (Fin m) K) :

Under splitFirst, the Weierstrass polynomial in m + 1 variables is the polynomial over the tail ring.

A Weierstrass polynomial whose coefficients vanish at 0 is distinguished at the maximal ideal of the tail ring (monic, lower coefficients in 𝔪).

Series of bounded x_0-degree are polynomials over the tail ring #

theorem Analytic.coeff_splitFirst_eq_zero_of_le {K : Type u_1} [RCLike K] {m : ℕ} {r : MvPowerSeries (Fin (m + 1)) K} {d : ℕ} (hr : ∀ (ν : Fin (m + 1) →₀ ℕ), d ≤ ν 0 → (MvPowerSeries.coeff ν) r = 0) {k : ℕ} (hk : d ≤ k) :
theorem Analytic.splitFirst_eq_trunc {K : Type u_1} [RCLike K] {m : ℕ} {r : MvPowerSeries (Fin (m + 1)) K} {d : ℕ} (hr : ∀ (ν : Fin (m + 1) →₀ ℕ), d ≤ ν 0 → (MvPowerSeries.coeff ν) r = 0) :
(splitFirst K m) r = ↑((PowerSeries.trunc d) ((splitFirst K m) r))
theorem Analytic.coe_trunc_eq_sum {K : Type u_1} [RCLike K] {m : ℕ} (f : PowerSeries (MvPowerSeries (Fin m) K)) (d : ℕ) :
↑((PowerSeries.trunc d) f) = ∑ j : Fin d, PowerSeries.C ((PowerSeries.coeff (d - 1 - ↑j)) f) * PowerSeries.X ^ (d - 1 - ↑j)
theorem Analytic.X_pow_sub_eq_weierstrassPoly {K : Type u_1} [RCLike K] {m : ℕ} {r : MvPowerSeries (Fin (m + 1)) K} {d : ℕ} (hr : ∀ (ν : Fin (m + 1) →₀ ℕ), d ≤ ν 0 → (MvPowerSeries.coeff ν) r = 0) :
MvPowerSeries.X 0 ^ d - r = weierstrassPoly d fun (j : Fin d) => -(PowerSeries.coeff (d - 1 - ↑j)) ((splitFirst K m) r)

x_0^d - r, for r of x_0-degree < d, is the Weierstrass polynomial with coefficients the negated x_0-coefficients of r.

theorem Analytic.isWeierstrassDivision_of_eq {K : Type u_1} [RCLike K] {m : ℕ} {f g q r : MvPowerSeries (Fin (m + 1)) K} {d : ℕ} (hg : IsRegularIn g d) (hr : ∀ (ν : Fin (m + 1) →₀ ℕ), d ≤ ν 0 → (MvPowerSeries.coeff ν) r = 0) (hfq : f = q * g + r) :

A convergent-style division datum f = q g + r, r of x_0-degree < d, is a Weierstrass division in Mathlib's sense over the tail ring.

theorem Analytic.toNat_order_map_residue {K : Type u_1} [RCLike K] {m : ℕ} {g : MvPowerSeries (Fin (m + 1)) K} {d : ℕ} (hg : IsRegularIn g d) :

The toNat of the order of the residue image of a regular series is its regularity order.