Documentation

Hironaka.Scheme.Snc.TotalTransformSnc

The total transform is snc: Kollár's conditions and the strict transforms #

The total-transform theorem of [Hau14, Proposition 5.3] in the unfolded form — families of ideal sheaves with the snc data as explicit hypotheses, the family (π_*^{-1} E^i, F) as totalTransformFamily; the forms on the predicates IsSnc, HasSncWith, IsSncAt, totalTransform, strictTransform and exceptionalDivisor are in Hironaka.Scheme.Snc.TotalTransformChartComputation:

Why the lemmas hold. At x' ∈ F the total transform of D is π^*(D_x) = (π^* z_c), and TotalTransformData says it is (z'_a z'_j), (z'_a), (z'_j) or (1) in a regular system of parameters z' of 𝒪_{B,x'} with F_{x'} = (z'_j). Whether D contains Z near x — c ∈ s, by span_singleton_le_span_image_iff — decides between the shapes contained in F_{x'} (the first and third) and the others, because a total transform inside the exceptional ideal comes from a component containing the centre (the containment clause of exists_totalTransformData_of_mem_support), and conversely D_x ⊆ Z_x gives π^*(D_x) ⊆ F_{x'}. The saturations then compute the strict transforms (TotalTransformData.iSup_colon_eq), and two generators of a principal ideal of a domain differ by a unit (Mathlib's Ideal.span_singleton_eq_span_singleton).

Sources: [Hau14, Proposition 5.3] (the proof); [Hau14, Proposition 5.4; Definition 6.2]; [Hau03, Appendix C]; [Kol07, Definition 24; Definition 25].

The stalk of the strict transform is the saturation of the stalk of the total transform by the powers of the stalk of the exceptional ideal.

The strict transform contains the total transform, so its support lies over the support of D.

theorem AlgebraicGeometry.exists_snc_data_totalTransform_of_mem_support {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (x' : ↥Z.blowUp) (hx' : x' ∈ (Z.comap Z.blowUpπ).support) :

The proof of [Hau14, Proposition 5.3] and [Hau14, Proposition 5.4] ([Hau03, Appendix C]): Kollár's conditions (1)–(3) for (π_*^{-1} E^i, F) at a point x' of F — the stalk is regular with a regular system of parameters z'; F takes the coordinate z'_j, the strict transform of a component through x' takes its own coordinate z'_{a i}, and the assignment is injective.

theorem AlgebraicGeometry.isRegularLocalRing_stalk_blowUp' {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (x' : ↥Z.blowUp) :

The local rings of B_Z X are regular (on F from the chart shape, off F from those of X).

The total transform of D = (z_c = 0) at x' is (π^* z_c).

π^* is a local homomorphism: π^* z_c ∈ 𝔪_{x'} for z_c ∈ 𝔪_x.

theorem AlgebraicGeometry.iSup_colon_congr {S : Type u_1} [CommRing S] {T F T' F' : Ideal S} (hT : T = T') (hF : F = F') :
⨆ (m : ℕ), Submodule.colon T ↑(F ^ m) = ⨆ (m : ℕ), Submodule.colon T' ↑(F' ^ m)

Saturations of equal ideals by equal ideals agree.

[Hau14, Definition 6.2]: where π^* z_c generates the exceptional ideal, the strict transform of D = (z_c = 0) misses x': (π^* z_c) : (π^* z_c)^∞ = (1).

theorem AlgebraicGeometry.stalkIdeal_strictTransformAlong_of_notMem {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (i : ι) (x' : ↥Z.blowUp) (hx' : x' ∈ (Z.comap Z.blowUpπ).support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk (Z.blowUpπ x')) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk (Z.blowUpπ x'))) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∉ s) :

The proof of [Hau14, Proposition 5.3]: for c ∉ s — the component transversal to Z — the strict transform has stalk (π^* z_c): its total transform has the shape (z'_a) of a coordinate hyperplane, unchanged by the saturation.

theorem AlgebraicGeometry.mem_support_strictTransformAlong_iff_of_notMem {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (i : ι) (x' : ↥Z.blowUp) (hx' : x' ∈ (Z.comap Z.blowUpπ).support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk (Z.blowUpπ x')) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk (Z.blowUpπ x'))) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∉ s) :

The strict transform of a component transversal to Z contains the whole fibre over Z ∩ D — x' lies on it iff x = π(x') lies on D.

theorem AlgebraicGeometry.exists_stalkIdeal_strictTransformAlong_eq_span_of_mem {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (i : ι) (x' : ↥Z.blowUp) (hx' : x' ∈ (Z.comap Z.blowUpπ).support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk (Z.blowUpπ x')) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk (Z.blowUpπ x'))) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∈ s) {e : ↑(Z.blowUp.presheaf.stalk x')} (he : (Z.comap Z.blowUpπ).stalkIdeal x' = Ideal.span {e}) :

[Hau14, Proposition 5.4 (7); Definition 6.2]: for c ∈ s — the component containing Z near x — and a generator e of the exceptional ideal at x', π^* z_c = u e and the strict transform has stalk (u): the total transform has the shape (z'_a z'_j) (then u is z'_a up to a unit) or (z'_j) (then u is a unit and the strict transform misses x').

theorem AlgebraicGeometry.exists_snc_data_totalTransform {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hE : ∀ (x : ↥X), ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ ∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (x' : ↥Z.blowUp) :

Kollár's conditions (1)–(3) for (π_*^{-1} E^i, F) at every point of B_Z X (on F from the chart shape, off F from the data of X).

theorem AlgebraicGeometry.isSmoothDivisor_totalTransformFamily {k : Type u} [Field k] {X : Scheme} [PerfectField k] (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (E : ι → X.IdealSheafData) (Z : X.IdealSheafData) (hE : ∀ (x : ↥X), ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ ∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) (hZ : ∀ x ∈ Z.support, ∃ (n : ℕ) (z : Fin n → ↑(X.presheaf.stalk x)), (Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk x) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk x)) ∧ (∃ (c : { i : ι // x ∈ (E i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (E i).support }), (E ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) (k✝ : ι ⊕ PUnit.{u + 1}) :

[Hau14, Proposition 5.3]: every member of the total transform — the strict transforms of the components and the exceptional divisor — is a smooth divisor of B_Z X (IsSmoothDivisor): regular, and generated at every point by a coordinate of a regular system of parameters.