Documentation

Hironaka.Scheme.Snc.TotalTransformChartComputation

The total-transform theorem on the predicates #

The total transform of a simple normal crossing divisor under the blow-up along a centre having simple normal crossings with it is again snc ([Hau14, Proposition 5.3]; [Kol07, Definition 25]). This module states the theorem's ingredients on the predicates IsSnc, HasSncWith, IsSncAt and on totalTransform, strictTransform, exceptionalDivisor, proved from the modules of Hironaka.Snc, which are stated over families of ideal sheaves with the snc data as explicit hypotheses (totalTransformFamily Z E for the total transform). The passage is definitional: (E.totalTransform Z).component (toLex k) is Sum.elim (strictTransform Z ∘ E.component) (fun _ => exceptionalDivisor X Z) k, strictTransform Z D is strictTransformAlong (blowUp.π Z) (Z.comap (blowUp.π Z)) D and IsRegularSystemOfParameters z is span (range z) = 𝔪 ∧ n = dim; hasSncWith_data and isSnc_data unfold the two predicates. Hironaka.Scheme.Snc.TotalTransformSmoothBlowUp assembles the theorem totalTransform_isSnc from the three statements exists_isSncAt_totalTransform_of_mem_support, exists_isSncAt_totalTransform_of_notMem_support and isSmoothDivisor_totalTransform_component; the section on strict transforms restates the pointwise description of the strict transforms of Hironaka.Scheme.Snc.TotalTransformSnc on the predicates.

The mathematics, module by module ([Hau14, Proposition 5.3; Proposition 5.4; Definition 6.2]; [Hau03, Appendix C]; [Kol07, Definition 24; Definition 25; Definition 60]):

theorem AlgebraicGeometry.hasSncWith_data {X : Scheme} (E : X.DivisorFamily) (Z : X.IdealSheafData) (hZ : E.HasSncWith Z) (x : ↥X) :
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 : E.ι // x ∈ (E.component i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : E.ι // x ∈ (E.component i).support }), (E.component ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)

The data of [Kol07, Definition 24 (4)] behind E.HasSncWith Z, unfolded: at every point of Z a regular system of parameters, the injective assignment of coordinates to the components through the point, and the index set cutting out Z.

theorem AlgebraicGeometry.isSnc_data {X : Scheme} (E : X.DivisorFamily) (hE : E.IsSnc) (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 : E.ι // x ∈ (E.component i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : E.ι // x ∈ (E.component i).support }), (E.component ↑i).stalkIdeal x = Ideal.span {z (c i)}

The data of [Kol07, Definition 24 (1)–(3)] behind E.IsSnc at every point, unfolded.

theorem AlgebraicGeometry.exists_isSncAt_totalTransform_of_mem_support {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) (x' : ↥Z.blowUp) (hx' : x' ∈ Z.exceptionalDivisor.support) :
∃ (n : ℕ) (z : Fin n → ↑(Z.blowUp.presheaf.stalk x')), (E.totalTransform Z).IsSncAt x' z

[Hau14, Proposition 5.3; Proposition 5.4] ([Hau03, Appendix C]) at every point of the exceptional divisor, not only the closed ones: there are local coordinates for which the total transform satisfies Kollár's conditions (1)–(3).

theorem AlgebraicGeometry.exists_isSncAt_totalTransform_of_notMem_support {k : Type u} [Field k] {X : Scheme} (_f : X ⟶ Spec ↧k) (E : X.DivisorFamily) (Z : X.IdealSheafData) (hE : E.IsSnc) (_hZ : E.HasSncWith Z) (x' : ↥Z.blowUp) (hx' : x' ∉ Z.exceptionalDivisor.support) :
∃ (n : ℕ) (z : Fin n → ↑(Z.blowUp.presheaf.stalk x')), (E.totalTransform Z).IsSncAt x' z

[Kol07, Definition 25], the proof of [Hau14, Proposition 5.3]: at every point x' off the exceptional divisor the blow-up is a local isomorphism and the total transform restricts to E, so there are local coordinates for which it satisfies Kollár's (1)–(3).

[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 (regular, and principal at every point with a generator in 𝔪 ∖ 𝔪²).

theorem AlgebraicGeometry.stalkIdeal_strictTransform_of_notMem {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) (i : E.ι) (x' : ↥Z.blowUp) (hx' : x' ∈ Z.exceptionalDivisor.support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : E.IsSncAt (Z.blowUpπ x') z) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E.component i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∉ s) :

On the predicates: at x' ∈ F over x with snc coordinates z at x and a component E^i = (z_c = 0) transversal to Z (c ∉ s), the strict transform has stalk (π^* z_c) — stalkIdeal_strictTransformAlong_of_notMem of Hironaka.Scheme.Snc.TotalTransformSnc.

theorem AlgebraicGeometry.mem_support_strictTransform_iff_of_notMem {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) (i : E.ι) (x' : ↥Z.blowUp) (hx' : x' ∈ Z.exceptionalDivisor.support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : E.IsSncAt (Z.blowUpπ x') z) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E.component i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∉ s) :

On the predicates: the strict transform of a component transversal to Z contains the whole fibre over Z ∩ E^i — mem_support_strictTransformAlong_iff_of_notMem of Hironaka.Scheme.Snc.TotalTransformSnc.

theorem AlgebraicGeometry.exists_stalkIdeal_strictTransform_eq_span_of_mem {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) (i : E.ι) (x' : ↥Z.blowUp) (hx' : x' ∈ Z.exceptionalDivisor.support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (hz : E.IsSncAt (Z.blowUpπ x') z) {s : Finset (Fin n)} (hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E.component i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (hcs : c ∈ s) {e : ↑(Z.blowUp.presheaf.stalk x')} (he : Z.exceptionalDivisor.stalkIdeal x' = Ideal.span {e}) :

On the predicates: for a component E^i = (z_c = 0) containing Z near x (c ∈ s) and a generator e of the exceptional ideal at x', π^* z_c = u e and the strict transform has stalk (u) ([Hau14, Proposition 5.4 (7)]) — exists_stalkIdeal_strictTransformAlong_eq_span_of_mem of Hironaka.Scheme.Snc.TotalTransformSnc.

theorem AlgebraicGeometry.notMem_support_strictTransform_of_stalkIdeal_eq {k : Type u} [Field k] {X : Scheme} (_f : X ⟶ Spec ↧k) (E : X.DivisorFamily) (Z : X.IdealSheafData) (_hE : E.IsSnc) (_hZ : E.HasSncWith Z) (i : E.ι) (x' : ↥Z.blowUp) (_hx' : x' ∈ Z.exceptionalDivisor.support) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (Z.blowUpπ x'))} (_hz : E.IsSncAt (Z.blowUpπ x') z) {s : Finset (Fin n)} (_hs : Z.stalkIdeal (Z.blowUpπ x') = Ideal.span (z '' ↑s)) {c : Fin n} (hc : (E.component i).stalkIdeal (Z.blowUpπ x') = Ideal.span {z c}) (_hcs : c ∈ s) (he : Z.exceptionalDivisor.stalkIdeal x' = Ideal.span {(CategoryTheory.ConcreteCategory.hom (Scheme.Hom.stalkMap Z.blowUpπ x')) (z c)}) :

On the predicates: where π^* z_c generates the exceptional ideal, the strict transform of E^i = (z_c = 0) misses x' ([Hau14, Definition 6.2]) — notMem_support_strictTransformAlong_of_stalkIdeal_eq of Hironaka.Scheme.Snc.TotalTransformSnc.