Documentation

Hironaka.Scheme.Snc.MonomialCoordinates

Adapted coordinates in which the blow-up is monomial #

[Hau14, Proposition 5.4 (1)–(9)] stated on the predicates IsSncAt, HasSncWith, IsRegularSystemOfParameters and stalkIdeal and on Z.blowUp, Z.exceptionalDivisor and strictTransform Z D (Z.exceptionalDivisor is Z.comap (IdealSheafData.blowUpπ Z) and strictTransform Z D is strictTransformAlong (IdealSheafData.blowUpπ Z) (Z.comap π) D by definition): a smooth X over a perfect field k, an snc family E having simple normal crossings with the centre Z, a member V = E v containing Z, a point a of Z and a point a' of the exceptional divisor over a. The proofs are those of the modules of Hironaka.Snc on the unfolded data, which hasSncWith_data extracts from E.HasSncWith Z:

The primed names are the forms on the predicates of the correspondingly named lemmas of those modules; each docstring names its original. [Hau14, Example 4.53] (the positive half) is the example at the end. This module is the statement of Hauser's proposition in the library's vocabulary and is not used further.

Sources: [Hau14, Proposition 5.4; Example 4.53]; [Hau03, Appendix C]; [Kol07, Definition 24; Definition 60; Lemma 61].

theorem AlgebraicGeometry.coe_centreFinset (n k : ℕ) :
↑{i : Fin n | n - k ≤ ↑i} = {i : Fin n | n - k ≤ ↑i}

The centre's index set {i | n − k ≤ i} as a Finset, with its coercion.

theorem AlgebraicGeometry.hs_finset {X : Scheme} (Z : X.IdealSheafData) (a' : ↥Z.blowUp) {n k : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k ≤ ↑i})) :
Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' ↑{i : Fin n | n - k ≤ ↑i})

The centre's ideal at π a' in the Finset form of Hironaka.Scheme.Snc.ChartIndex.

π^* z_j ≠ 0: the exceptional ideal at a' is nonzero, being generated by a member of a regular system of parameters (TotalTransformData).

The rationality hypothesis — a' rational over κ(a) — in the form the chart-origin lemmas take: the residue field map is bijective.

theorem AlgebraicGeometry.exists_coordinates_hypersurface_center {k : Type u} [Field k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (hv : E.component v ≤ Z) (a : ↥X) (ha : a ∈ Z.support) :
∃ (n : ℕ) (k : ℕ) (hk : 1 ≤ k) (hkn : k ≤ n) (z : Fin n → ↑(X.presheaf.stalk a)), IsLocalRing.IsRegularSystemOfParameters z ∧ (E.component v).stalkIdeal a = Ideal.span {z ⟨n - k, ⋯⟩} ∧ Z.stalkIdeal a = Ideal.span (z '' {i : Fin n | n - k ≤ ↑i})

[Hau14, Proposition 5.4 (1)–(3)] on the predicates: for an snc family E having simple normal crossings with Z and a member E v containing Z, at every point a of Z there is a regular system of parameters z with I_{V,a} = (z_{n-k}) and I_{Z,a} = (z_l : l ≥ n − k), 1 ≤ k ≤ n — exists_hauser_coordinates of Hironaka.Scheme.Snc.HypersurfaceCoordinates on the data of hasSncWith_data. The hypothesis E.IsSnc is part of Hauser's setting (D a normal crossings divisor) and is kept so that the statements of this module share his hypotheses; the proof does not need it, because clauses (1)–(3) use only the snc data of E.HasSncWith Z at a.

theorem AlgebraicGeometry.exists_sncAt_coordinates_hypersurface_center {k : Type u} [Field k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (hv : E.component v ≤ Z) (a : ↥X) (ha : a ∈ Z.support) :
∃ (n : ℕ) (k : ℕ) (hk : 1 ≤ k) (hkn : k ≤ n) (z : Fin n → ↑(X.presheaf.stalk a)), E.IsSncAt a z ∧ (E.component v).stalkIdeal a = Ideal.span {z ⟨n - k, ⋯⟩} ∧ Z.stalkIdeal a = Ideal.span (z '' {i : Fin n | n - k ≤ ↑i})

exists_coordinates_hypersurface_center keeping the snc coordinates for E: the regular system of parameters z at a satisfies E.IsSncAt a z as well as I_{V,a} = (z_{n-k}) and I_{Z,a} = (z_l : l ≥ n − k). The hypothesis E.IsSnc is part of Hauser's setting and is kept so that the statements of this module share his hypotheses; the proof does not need it, because only the snc data of E.HasSncWith Z at a enter.

theorem AlgebraicGeometry.exists_prod_stalkIdeal_pow_eq_span_monomial' {k : Type u} [Field k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (_hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a : ↥X) (_ha : a ∈ Z.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk a)} (hz : E.IsSncAt a z) (hV : (E.component v).stalkIdeal a = Ideal.span {z ⟨n - k✝, ⋯⟩}) (m : E.ι → ℕ) :
∃ (q : Fin n → ℕ), q ⟨n - k✝, ⋯⟩ = 0 ∧ ∏ i : E.ι with i ≠ v, (E.component i).stalkIdeal a ^ m i = Ideal.span {∏ j : Fin n, z j ^ q j}

[Hau14, Proposition 5.4 (4)] in 𝒪_{X,a}, on the predicate IsSncAt: the ideal ∏_{i ≠ v} I_{E^i,a}^{m_i} of the divisor D = ∑_{i ≠ v} m_i E^i is generated by a monomial ∏_j z_j^{q_j} with q_{n-k} = 0. This is exists_prod_stalkIdeal_pow_eq_span_monomial of Hironaka.Scheme.Snc.HypersurfaceCoordinates with the snc data packed into E.IsSncAt a z; the hypotheses of Hauser's setting (E snc, E.HasSncWith Z, E v ≤ Z, a ∈ Z) are kept so that the statement reads as clause (4) of his proposition; the proof does not need them, because the clause is a statement about the stalk at a given E.IsSncAt a z and I_{V,a} = (z_{n-k}).

theorem AlgebraicGeometry.exists_map_prod_stalkIdeal_pow_eq_span_monomial' {k : Type u} [Field k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (_hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a : ↥X) (_ha : a ∈ Z.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk a)} (hz : E.IsSncAt a z) (hV : (E.component v).stalkIdeal a = Ideal.span {z ⟨n - k✝, ⋯⟩}) (m : E.ι → ℕ) :
∃ (q : Fin n → ℕ), q ⟨n - k✝, ⋯⟩ = 0 ∧ Ideal.map (Ideal.Quotient.mk ((E.component v).stalkIdeal a)) (∏ i : E.ι with i ≠ v, (E.component i).stalkIdeal a ^ m i) = Ideal.span {∏ j : Fin n, (Ideal.Quotient.mk ((E.component v).stalkIdeal a)) (z j) ^ q j}

[Hau14, Proposition 5.4 (4)] as printed, on the predicate IsSncAt: D ∩ V is defined in V locally at a — in 𝒪_{V,a} = 𝒪_{X,a} ⧸ I_{V,a} — by the image of a monomial ∏_j z_j^{q_j} with q_{n-k} = 0. This is exists_map_prod_stalkIdeal_pow_eq_span_monomial of Hironaka.Scheme.Snc.HypersurfaceCoordinates with the snc data packed into E.IsSncAt a z; the hypotheses of Hauser's setting (E snc, E.HasSncWith Z, E v ≤ Z, a ∈ Z) are kept so that the statement reads as clause (4) of his proposition; the proof does not need them, because the clause is a statement about the stalk at a given E.IsSncAt a z and I_{V,a} = (z_{n-k}).

theorem AlgebraicGeometry.exists_chart_index' {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (_hz : E.IsSncAt (Z.blowUpπ a') z) (hV : (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k✝, ⋯⟩}) (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k✝ ≤ ↑i})) :

[Hau14, Proposition 5.4 (5)], with the clause on the strict transform of V from (9), on the predicates and Z.blowUp: a point a' of the exceptional divisor lies in the chart of some centre coordinate z_j (F_{a'} = (π^* z_j)), every centre coordinate is a multiple of π^* z_j there, and j ≠ n − k where a' lies on the strict transform of V. This is exists_chart_index with ne_of_mem_support_strictTransformAlong of Hironaka.Scheme.Snc.ChartIndex, the centre's index set being {i | n − k ≤ i}.

theorem AlgebraicGeometry.mem_maximalIdeal_iff_mem_support_strictTransform {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (hz : E.IsSncAt (Z.blowUpπ a') z) (_hV : (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k✝, ⋯⟩}) (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k✝ ≤ ↑i})) {j : Fin n} (_hj : n - k✝ ≤ ↑j) (hF : Z.exceptionalDivisor.stalkIdeal a' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)}) {i : E.ι} {c : Fin n} (hc : (E.component i).stalkIdeal (Z.blowUpπ a') = Ideal.span {z c}) (hcs : n - k✝ ≤ ↑c) (_hcj : c ≠ j) {y : ↑(Z.blowUp.presheaf.stalk a')} (hy : (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z c) = y * (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)) :

[Hau14, Proposition 5.4 (6)] on the predicates: the entry y of a' at the coordinate of a component E^i = (z_c = 0) containing Z (π^* z_c = y · π^* z_j) lies in 𝔪_{a'} exactly when the strict transform of E^i passes through a' — mem_maximalIdeal_iff_mem_support_strictTransformAlong of Hironaka.Scheme.Snc.ChartIndex.

theorem AlgebraicGeometry.exists_isRegularSystemOfParameters_induced' {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (hz : E.IsSncAt (Z.blowUpπ a') z) (_hV : (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k✝, ⋯⟩}) (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k✝ ≤ ↑i})) {j : Fin n} (hj : n - k✝ ≤ ↑j) (hF : Z.exceptionalDivisor.stalkIdeal a' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)}) (w : Fin n → ↑(Z.blowUp.presheaf.stalk a')) (hw : ∀ (i : Fin n), ↑i < n - k✝ ∨ i = j → w i = (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z i)) (hw' : ∀ (i : Fin n), n - k✝ ≤ ↑i → i ≠ j → (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z i) = w i * (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)) :
∃ (m : ℕ) (z' : Fin m → ↑(Z.blowUp.presheaf.stalk a')), IsLocalRing.IsRegularSystemOfParameters z' ∧ ∃ (σ : { i : Fin n // w i ∈ IsLocalRing.maximalIdeal ↑(Z.blowUp.presheaf.stalk a') } → Fin m), Function.Injective σ ∧ ∀ (i : { i : Fin n // w i ∈ IsLocalRing.maximalIdeal ↑(Z.blowUp.presheaf.stalk a') }), z' (σ i) = w ↑i

[Hau14, Proposition 5.4 (6)], the coordinate content, on the predicates and Z.blowUp: the induced coordinates w of the z_j-chart vanishing at a' extend to a regular system of parameters of 𝒪_{B,a'}. This is exists_isRegularSystemOfParameters_induced of Hironaka.Scheme.Snc.InducedCoordinates, the regularity of 𝒪_{B,a'} and π^* z_j ≠ 0 supplied from the snc data (isRegularLocalRing_stalk_blowUp', stalkMap_ne_zero).

theorem AlgebraicGeometry.stalkIdeal_strictTransform_hypersurface {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (hz : E.IsSncAt (Z.blowUpπ a') z) (hV : (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k✝, ⋯⟩}) (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k✝ ≤ ↑i})) {j : Fin n} (_hj : n - k✝ ≤ ↑j) (hF : Z.exceptionalDivisor.stalkIdeal a' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)}) (_hjV : ↑j ≠ n - k✝) {y : ↑(Z.blowUp.presheaf.stalk a')} (hy : (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z ⟨n - k✝, ⋯⟩) = y * (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)) :

[Hau14, Proposition 5.4 (7)] on the predicates: in the chart of z_j, j ≠ n − k, with π^* z_{n-k} = y · π^* z_j, the strict transform of V = E v at a' is (y) — stalkIdeal_strictTransformAlong_eq_span_of_eq_mul of Hironaka.Scheme.Snc.ChartIndex.

theorem AlgebraicGeometry.exists_shiftCoords_chartOrigin' {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (_hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) {n k✝ : ℕ} (hk : 1 ≤ k✝) (hkn : k✝ ≤ n) {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))} (hz : E.IsSncAt (Z.blowUpπ a') z) (hV : (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k✝, ⋯⟩}) (hZa : Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k✝ ≤ ↑i})) {j : Fin n} (hj : n - k✝ ≤ ↑j) (hF : Z.exceptionalDivisor.stalkIdeal a' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)}) (hrat : CategoryTheory.IsIso (Scheme.Hom.residueFieldMap Z.blowUpπ a')) :
∃ (z' : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))), IsLocalRing.IsRegularSystemOfParameters z' ∧ (∀ (i : Fin n), ↑i < n - k✝ ∨ i = j → z' i = z i) ∧ (∀ (i : Fin n), n - k✝ ≤ ↑i → ∃ (α : ↑(X.presheaf.stalk (Z.blowUpπ a'))), z' i = z i - α * z j) ∧ Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z' '' {i : Fin n | n - k✝ ≤ ↑i}) ∧ (a' ∈ ((E.component v).strictTransform Z).support → z' ⟨n - k✝, ⋯⟩ = z ⟨n - k✝, ⋯⟩) ∧ ∃ (w' : Fin n → ↑(Z.blowUp.presheaf.stalk a')), IsLocalRing.IsRegularSystemOfParameters w' ∧ (∀ (i : Fin n), ↑i < n - k✝ ∨ i = j → w' i = (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z' i)) ∧ ∀ (i : Fin n), n - k✝ ≤ ↑i → i ≠ j → (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z' i) = w' i * w' j

[Hau14, Proposition 5.4 (8)] on the predicates and Z.blowUp: for a' rational over κ(a) (IsIso of the residue field map) in the chart of z_j, the coordinates z'_i = z_i − α_i z_j on the other centre coordinates make a' the origin of the chart and the local blow-up monomial, preserve I_Z, and leave the coordinate of V unchanged where a' lies on the strict transform of V. This is exists_shiftCoords_chartOrigin of Hironaka.Scheme.Snc.ChartOrigin, the last clause obtained through (6).

theorem AlgebraicGeometry.exists_coordinates_chartOrigin {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] (E : X.DivisorFamily) (Z : X.IdealSheafData) (hE : E.IsSnc) (hZ : E.HasSncWith Z) (v : E.ι) (hv : E.component v ≤ Z) (a' : ↥Z.blowUp) (ha' : a' ∈ Z.exceptionalDivisor.support) (hrat : CategoryTheory.IsIso (Scheme.Hom.residueFieldMap Z.blowUpπ a')) :
∃ (n : ℕ) (k : ℕ) (hk : 1 ≤ k) (hkn : k ≤ n) (z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ a'))) (j : Fin n), IsLocalRing.IsRegularSystemOfParameters z ∧ (E.component v).stalkIdeal (Z.blowUpπ a') = Ideal.span {z ⟨n - k, ⋯⟩} ∧ Z.stalkIdeal (Z.blowUpπ a') = Ideal.span (z '' {i : Fin n | n - k ≤ ↑i}) ∧ n - k ≤ ↑j ∧ (a' ∈ ((E.component v).strictTransform Z).support → ↑j = n - 1) ∧ (a' ∉ ((E.component v).strictTransform Z).support → ↑j = n - k) ∧ Z.exceptionalDivisor.stalkIdeal a' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z j)} ∧ ∃ (w : Fin n → ↑(Z.blowUp.presheaf.stalk a')), IsLocalRing.IsRegularSystemOfParameters w ∧ (∀ (i : Fin n), ↑i < n - k ∨ i = j → w i = (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z i)) ∧ ∀ (i : Fin n), n - k ≤ ↑i → i ≠ j → (CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ a')) (z i) = w i * w j

[Hau14, Proposition 5.4 (9)] on the predicates: for a' rational over κ(a) there are coordinates z at a with (1)–(3) in which a' is the origin of the chart of z_j — j = n − 1 when a' lies on the strict transform of V, j = n − k otherwise — and the local blow-up is monomial: the induced coordinates w form a regular system of parameters at a' with π^* z_i = w_i w_j for the other centre coordinates. This assembles (1)–(3) with exists_coordinates_chartOrigin' of Hironaka.Scheme.Snc.ChartOrigin.