Documentation

Hironaka.Scheme.Snc.TotalTransformOnCentre

The total transform at a point of the exceptional divisor #

At a point x' of the exceptional divisor F of the blow-up π : B_Z X → X of a smooth variety along a centre Z having simple normal crossings with a divisor E, the stalk 𝒪_{B,x'} together with the stalks of F and of the total transforms π^{-1}(E^i) has the shape TotalTransformData (exists_totalTransformData_of_mem_support): a regular local ring, a regular system of parameters z, F = (z_j), each total transform of one of the four shapes of Hauser's chart computation. This is the chart computation of the proof of [Hau14, Proposition 5.3] and of [Hau14, Proposition 5.4] ([Hau03, Appendix C]) read at an arbitrary, possibly non-closed, point; Hironaka.Scheme.Snc.TotalTransformSnc reads Kollár's conditions off it.

Why the theorem holds. Let x = π(x'). A closed point x₀ of the closure of x exists because X is Jacobson (locally of finite type over a field), and x₀ ∈ Z as Z is closed. [Kol07, Definition 24 (4)] gives snc coordinates at x₀; on an affine neighbourhood V₀ of x₀ on which f has constant relative dimension they spread to a chart U ∋ x₀ of étale coordinates adapted to Z on which the components through x₀ are coordinate hyperplanes and the others are absent (exists_etaleCoordinatesAdapted_of_snc of Hironaka.Scheme.Snc.SpreadSnc); U contains x because x ⤳ x₀. The point x' lies over U, hence in B_{Z∩U} U ≅ π^{-1}(U) (exists_restrictHom_eq), in the chart of some x_j as a prime p of the chart ring (exists_chart_point_map_stalkIdeal_eq of Hironaka.Scheme.Snc.ChartStalk), and the chart computation (totalTransformData_chart of Hironaka.Scheme.Snc.ChartSncData) gives the shape in Γ(U)[J/x_j]_p, which transports along the isomorphisms of stalks back to 𝒪_{B,x'} (TotalTransformData.of_ringEquiv, TotalTransformData.of_comap_isOpenImmersion).

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

theorem AlgebraicGeometry.TotalTransformData.of_comap_isOpenImmersion {Y X' : Scheme} (ι : Y ⟶ X') [IsOpenImmersion ι] {κ : Type u_1} (F : X'.IdealSheafData) (T : κ → X'.IdealSheafData) (y : ↥Y) {F' : Y.IdealSheafData} {T' : κ → Y.IdealSheafData} (hF : F.comap ι = F') (hT : ∀ (i : κ), (T i).comap ι = T' i) (h : TotalTransformData (F'.stalkIdeal y) fun (i : κ) => (T' i).stalkIdeal y) :
TotalTransformData (F.stalkIdeal (ι y)) fun (i : κ) => (T i).stalkIdeal (ι y)

The total-transform shape transports along an open immersion: the stalk map is an isomorphism carrying the stalks of the inverse images to the stalks.

theorem AlgebraicGeometry.exists_restrictHom_eq {X : Scheme} (I : X.IdealSheafData) (U : X.Opens) (x' : ↥I.blowUp) (hx' : I.blowUpπ x' ∈ U) :
∃ (b : ↥(I.comap U.ι).blowUp), (Scheme.Hom.blowUpMap U.ι I) b = x'

Every point of B_I X over U comes from B_{I|_U} U along blowUpMap U.ι I.

The inverse image along π of an ideal sheaf D, pulled back to B_{I|_U} U, is the inverse image of D|_U along π_U (blowUpMap U.ι I ≫ π = π_U ≫ U.ι; the general form of comap_restrictHom).

theorem AlgebraicGeometry.exists_affineOpen_smoothOfRelativeDimension {k : Type u} [Field k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] (x : ↥X) :
∃ (V : ↑X.affineOpens) (_ : x ∈ ↑V) (m : ℕ), SmoothOfRelativeDimension m (CategoryTheory.CategoryStruct.comp (↑V).ι f)

A smooth morphism to Spec k has, around every point, an affine open on which it is smooth of a constant relative dimension — the dimension of a standard smooth presentation of the section ring (Mathlib's Smooth.exists_isStandardSmooth, read with smoothOfRelativeDimension_of_forall_exists_affineOpen).

theorem AlgebraicGeometry.exists_closedPoint_specializes {T : Type u_1} [TopologicalSpace T] [JacobsonSpace T] (x : T) :
∃ (x₀ : T), x ⤳ x₀ ∧ IsClosed {x₀}

Every point of a Jacobson space specializes to a closed point (Mathlib's nonempty_inter_closedPoints on the closure of the point).

theorem AlgebraicGeometry.snc_data_comap_ι {X : Scheme} {ι : Type u_1} (D : ι → X.IdealSheafData) (Z : X.IdealSheafData) (V : X.Opens) (y₀ : ↥↑V) {n : ℕ} {z : Fin n → ↑(X.presheaf.stalk (V.ι y₀))} (hz : Ideal.span (Set.range z) = IsLocalRing.maximalIdeal ↑(X.presheaf.stalk (V.ι y₀)) ∧ ↑n = ringKrullDim ↑(X.presheaf.stalk (V.ι y₀))) {s : Finset (Fin n)} (hZ : Z.stalkIdeal (V.ι y₀) = Ideal.span (z '' ↑s)) (c : { i : ι // V.ι y₀ ∈ (D i).support } → Fin n) (hcinj : Function.Injective c) (hc : ∀ (i : { i : ι // V.ι y₀ ∈ (D i).support }), (D ↑i).stalkIdeal (V.ι y₀) = Ideal.span {z (c i)}) :
∃ (z' : Fin n → ↑((↑V).presheaf.stalk y₀)), (Ideal.span (Set.range z') = IsLocalRing.maximalIdeal ↑((↑V).presheaf.stalk y₀) ∧ ↑n = ringKrullDim ↑((↑V).presheaf.stalk y₀)) ∧ (Z.comap V.ι).stalkIdeal y₀ = Ideal.span (z' '' ↑s) ∧ ∃ (c' : { i : ι // y₀ ∈ ((D i).comap V.ι).support } → Fin n), Function.Injective c' ∧ ∀ (i : { i : ι // y₀ ∈ ((D i).comap V.ι).support }), ((D ↑i).comap V.ι).stalkIdeal y₀ = Ideal.span {z' (c' i)}

Snc data at a point x₀ = ι y₀ of X transport to the point y₀ of an open V ⊆ X for the restricted ideal sheaves.

An ideal sheaf whose restriction to an affine open U is the unit ideal sheaf has D(U) = ⊤.

theorem AlgebraicGeometry.mem_support_comap_iff' {Y X' : Scheme} (K : X'.IdealSheafData) (φ : Y ⟶ X') (y : ↥Y) :
y ∈ (K.comap φ).support ↔ φ y ∈ K.support

Membership in the support of an inverse image.

theorem AlgebraicGeometry.stalkIdeal_le_iff_of_isOpenImmersion {X Y : Scheme} (ι : Y ⟶ X) [IsOpenImmersion ι] (I J : X.IdealSheafData) (y : ↥Y) :
(I.comap ι).stalkIdeal y ≤ (J.comap ι).stalkIdeal y ↔ I.stalkIdeal (ι y) ≤ J.stalkIdeal (ι y)

Containments of stalk ideals transport along an open immersion (in both directions).

theorem AlgebraicGeometry.exists_totalTransformData_of_mem_support_of_specializes {k : Type u} [Field k] [PerfectField k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (D : ι → X.IdealSheafData) (Z : X.IdealSheafData) (x' : ↥Z.blowUp) (hx' : x' ∈ (Z.comap Z.blowUpπ).support) (hZ : ∀ x ∈ Z.support, Z.blowUpπ 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 ∈ (D i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (D i).support }), (D ↑i).stalkIdeal x = Ideal.span {z (c i)}) ∧ ∃ (s : Finset (Fin n)), Z.stalkIdeal x = Ideal.span (z '' ↑s)) :
(TotalTransformData ((Z.comap Z.blowUpπ).stalkIdeal x') fun (i : ι) => ((D i).comap Z.blowUpπ).stalkIdeal x') ∧ ∀ (i : ι), ((D i).comap Z.blowUpπ).stalkIdeal x' ≤ (Z.comap Z.blowUpπ).stalkIdeal x' → (D i).stalkIdeal (Z.blowUpπ x') ≤ Z.stalkIdeal (Z.blowUpπ x')

The chart computation of the proofs of [Hau14, Proposition 5.3] and [Hau14, Proposition 5.4] ([Hau03, Appendix C]) at a possibly non-closed point: at a point x' of the exceptional divisor of the blow-up of X along a centre Z with simple normal crossings with the family D ([Kol07, Definition 24 (4)], given as data), the stalks of the exceptional divisor and of the total transforms of the components have Hauser's chart shape TotalTransformData; moreover a component whose total transform lies in the exceptional ideal at x' contains Z near π(x').

The pointwise form: the snc data are needed only at the points of Z to which π(x') specializes — the proof uses them at ONE closed point x₀ with π(x') ⤳ x₀ — so the hypothesis asks for them there only; exists_totalTransformData_of_mem_support (data at every point of Z) is the corollary below.

theorem AlgebraicGeometry.exists_totalTransformData_of_mem_support {k : Type u} [Field k] [PerfectField k] {X : Scheme} (f : X ⟶ Spec ↧k) [Smooth f] {ι : Type u_1} [Finite ι] (D : ι → 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 ∈ (D i).support } → Fin n), Function.Injective c ∧ ∀ (i : { i : ι // x ∈ (D i).support }), (D ↑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) :
(TotalTransformData ((Z.comap Z.blowUpπ).stalkIdeal x') fun (i : ι) => ((D i).comap Z.blowUpπ).stalkIdeal x') ∧ ∀ (i : ι), ((D i).comap Z.blowUpπ).stalkIdeal x' ≤ (Z.comap Z.blowUpπ).stalkIdeal x' → (D i).stalkIdeal (Z.blowUpπ x') ≤ Z.stalkIdeal (Z.blowUpπ x')

The chart computation of the proofs of [Hau14, Proposition 5.3] and [Hau14, Proposition 5.4] ([Hau03, Appendix C]) at a possibly non-closed point: at a point x' of the exceptional divisor of the blow-up of X along a centre Z with simple normal crossings with the family D ([Kol07, Definition 24 (4)], given as data at every point of Z), the stalks of the exceptional divisor and of the total transforms of the components have Hauser's chart shape TotalTransformData; moreover a component whose total transform lies in the exceptional ideal at x' contains Z near π(x'). The corollary of the pointwise exists_totalTransformData_of_mem_support_of_specializes.