AlgebraicGeometry.RelPicard.exists_openCharts_of_polarisation_supportedIn_of_fibrewise_zeroScheme
Assemble the polarised Cartier charts using cohomology and support conditions.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
open _root_.CategoryTheory
open _root_.CategoryTheory.Limits
open _root_.Opposite
open _root_.CategoryTheory.MonoidalCategory
open _root_.AlgebraicGeometry
open _root_.AlgebraicGeometry.RelPicard
open _root_.NeronModelInfra
open AlgebraicGeometry.AffineLimit
namespace AlgebraicGeometry.RelPicard
universe uLean source · full declaration
theorem exists_openCharts_of_polarisation_supportedIn_of_fibrewise_zeroScheme
(R : Type u) [CommRing R] [IsNoetherianRing R] {C : Scheme.{u}} (c : C ⟶ Spec (CommRingCat.of
R))
[IsProper c] [Flat c] (𝒱 : C.TwoAffineOpenCover)
(hH0 : ∀ (A : Type u) [CommRing A] [Algebra R A],
let _ : Algebra A Γ(Limits.pullback c (Scheme.TwoAffineOpenCover.specMap R A), ⊤) :=
Scheme.TwoAffineOpenCover.algebraOfHom
(Limits.pullback.snd c (Scheme.TwoAffineOpenCover.specMap R A)) ⊤
Function.Bijective (algebraMap A Γ(Limits.pullback c (Scheme.TwoAffineOpenCover.specMap R A),
⊤)))
(ε : SchemeHomOver (𝟙 (Spec (CommRingCat.of R))) c)
(hlfp : AffineLimit.IsLFPSurj (relSubPicPresheaf c ε (algEquivZeroCut c ε)))
(U : C.Opens) [SmoothOfRelativeDimension 1 (U.ι ≫ c)]
{ι : Type u} [Finite ι] (g e ρ : ℕ) (hr : g + e = ρ)
(E : RelEffCartierDiv c ρ (𝟙 (Spec (CommRingCat.of R)))) (hEU : E.SupportedIn U)
(Y : Scheme.{u}) (y : Y ⟶ Spec (CommRingCat.of R)) [LocallyOfFiniteType y] [CompactSpace Y]
(Duniv : RelEffCartierDiv c g y) (hDunivU : Duniv.SupportedIn U)
(huniv : ∀ ⦃T : Scheme.{u}⦄ (g' : T ⟶ Spec (CommRingCat.of R)) (D : RelEffCartierDiv c g g'),
D.SupportedIn U →
∃! φ : {φ : T ⟶ Y // φ ≫ y = g'}, PullsBackOver Duniv φ.1 φ.2 D)
(hsect : ∀ ⦃V : Scheme.{u}⦄ (u : V ⟶ Spec (CommRingCat.of R)) [LocallyOfFiniteType u] (M :
(pullback c u).Modules),
Scheme.Modules.IsInvertible M →
(∀ (k : Type u) [Field k] (s : Spec (CommRingCat.of k) ⟶ V) (𝒲 : (pullback (pullback.snd c u)
s).TwoAffineOpenCover),
Subsingleton (𝒲.sectionsOf (fibreAt c u s) (fibreModule c u s M)).H1 ∧
Module.finrank k (𝒲.sectionsOf (fibreAt c u s) (fibreModule c u s M)).H0 = 1) →
(∀ (k : Type u) [Field k] [IsAlgClosed k] (x : Spec (CommRingCat.of k) ⟶ V)
(σ : 𝟙_ (pullback c (x ≫ u)).Modules ⟶ (Scheme.Modules.pullback (mapOnProdOver c x
rfl)).obj M), σ ≠ 0 →
∃ Dx : RelEffCartierDiv c g (x ≫ u), Dx.I = Scheme.Modules.zeroSchemeIdeal σ ∧
Dx.SupportedIn U) →
∃ (D₀ : RelEffCartierDiv c g u) (N : V.Modules), Scheme.Modules.IsInvertible N ∧
Nonempty (D₀.lineBundle ≅ M ⊗ (Scheme.Modules.pullback (pullback.snd c u)).obj N) ∧
∀ (d' : ℕ) (D' : RelEffCartierDiv c d' u) (N' : V.Modules), Scheme.Modules.IsInvertible N'
→ D'.SupportedIn U →
Nonempty (D'.lineBundle ≅ M ⊗ (Scheme.Modules.pullback (pullback.snd c u)).obj N') → D'.I
= D₀.I)
(Dγ : ι → RelEffCartierDiv c e (𝟙 (Spec (CommRingCat.of R))))
(hDγU : ∀ i, (Dγ i).SupportedIn U)
(hχ : ∀ (i : ι) (k : Type u) [Field k] [IsAlgClosed k]
(x : Spec (CommRingCat.of k) ⟶ Spec (CommRingCat.of R))
(𝒲 : (pullback (pullback.snd c (𝟙 (Spec (CommRingCat.of R)))) x).TwoAffineOpenCover),
(Module.finrank k (𝒲.sectionsOf (fibreAt c (𝟙 _) x)
(fibreModule c (𝟙 _) x (E.lineBundle ⊗ (Dγ i).idealModule))).H0 : ℤ) -
Module.finrank k (𝒲.sectionsOf (fibreAt c (𝟙 _) x)
(fibreModule c (𝟙 _) x (E.lineBundle ⊗ (Dγ i).idealModule))).H1 = 1)
(hZfibγ : ∀ (i : ι) ⦃T : Scheme.{u}⦄ (t : T ⟶ Spec (CommRingCat.of R)) [LocallyOfFiniteType t]
(L : RigidifiedLineBundle c ε t), FibrewiseAlgEquivZero L →
∀ (k : Type u) [Field k] [IsAlgClosed k] (x : Spec (CommRingCat.of k) ⟶ T)
(σ : 𝟙_ (pullback c (x ≫ t)).Modules ⟶ (Scheme.Modules.pullback (mapOnProdOver c x rfl)).obj
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule))), σ ≠ 0 →
((Scheme.Modules.zeroSchemeIdeal σ).support : Set ↥(pullback c (x ≫ t))) ⊆ ((pullback.fst c
(x ≫ t)) ⁻¹ᵁ U : Set ↥(pullback c (x ≫ t))) →
∃ Dx : RelEffCartierDiv c g (x ≫ t), Dx.I = Scheme.Modules.zeroSchemeIdeal σ ∧
Dx.SupportedIn U)
(hH0one : ∀ (i : ι) ⦃T : Scheme.{u}⦄ (t : T ⟶ Spec (CommRingCat.of R)) (L :
RigidifiedLineBundle c ε t), FibrewiseAlgEquivZero L →
∀ (k : Type u) [Field k] (s : Spec (CommRingCat.of k) ⟶ T) (𝒲 : (pullback (pullback.snd c t)
s).TwoAffineOpenCover),
Subsingleton (𝒲.sectionsOf (fibreAt c t s) (fibreModule c t s
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule)))).H1 →
Module.finrank k (𝒲.sectionsOf (fibreAt c t s) (fibreModule c t s
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule)))).H0 = 1)
(hcover : ∀ ⦃T : Scheme.{u}⦄ (t : T ⟶ Spec (CommRingCat.of R)) (L : RigidifiedLineBundle c ε t),
FibrewiseAlgEquivZero L → ∀ (k : Type u) [Field k] (s : Spec (CommRingCat.of k) ⟶ T),
∃ i : ι, (∀ (𝒲 : (pullback (pullback.snd c t) s).TwoAffineOpenCover),
Subsingleton (𝒲.sectionsOf (fibreAt c t s) (fibreModule c t s
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule)))).H1) ∧
(∀ σ : 𝟙_ (pullback c (s ≫ t)).Modules ⟶ (Scheme.Modules.pullback (mapOnProdOver c s
rfl)).obj
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule)),
σ ≠ 0 → ((Scheme.Modules.zeroSchemeIdeal σ).support : Set ↥(pullback c (s ≫ t))) ⊆
((pullback.fst c (s ≫ t)) ⁻¹ᵁ U : Set ↥(pullback c (s ≫ t)))))
(havoid : ∀ (i : ι) ⦃T : Scheme.{u}⦄ (t : T ⟶ Spec (CommRingCat.of R)) [LocallyOfFiniteType t]
(L : RigidifiedLineBundle c ε t), FibrewiseAlgEquivZero L →
(∀ (k : Type u) [Field k] [IsAlgClosed k] (x : Spec (CommRingCat.of k) ⟶ T)
(σ : 𝟙_ (pullback c (x ≫ t)).Modules ⟶ (Scheme.Modules.pullback (mapOnProdOver c x rfl)).obj
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule))),
σ ≠ 0 → ((Scheme.Modules.zeroSchemeIdeal σ).support : Set ↥(pullback c (x ≫ t))) ⊆
((pullback.fst c (x ≫ t)) ⁻¹ᵁ U : Set ↥(pullback c (x ≫ t)))) →
∀ (D₀ : RelEffCartierDiv c g t) (N : T.Modules), Scheme.Modules.IsInvertible N →
Nonempty (D₀.lineBundle ≅
(L.L ⊗ ((E.pullbackAlong t (Category.comp_id t)).lineBundle ⊗ ((Dγ i).pullbackAlong t
(Category.comp_id t)).idealModule)) ⊗
(Scheme.Modules.pullback (pullback.snd c t)).obj N) →
D₀.SupportedIn U)
(hcut : ∀ (i : ι) ⦃T : Scheme.{u}⦄ (t : T ⟶ Spec (CommRingCat.of R)) [LocallyOfFiniteType t]
(D : RelEffCartierDiv c ρ t) (D₀ : RelEffCartierDiv c g t), D₀.SupportedIn U →
D.I = D₀.I * ((Dγ i).pullbackAlong t (Category.comp_id t)).I →
∃ W : T.Opens, ∀ (k : Type u) [Field k] [IsAlgClosed k] (s : Spec (CommRingCat.of k) ⟶ T),
Set.range ⇑s ⊆ (W : Set T) ↔
IsAlgEquivZero (fibreAt c t s)
((Scheme.Modules.pullback (pullback.fst (pullback.snd c t) s)).obj
(Scheme.Modules.rigidify (RelPicard.rigSection c t ε) (pullback.snd c t)
(D.lineBundle ⊗ (E.pullbackAlong t (Category.comp_id t)).idealModule)))) :
∃ (X : ι → Scheme.{u})
(f : ∀ i, uliftYoneda.{u + 1}.obj (X i) ⟶ (relSubPicPresheaf c ε (algEquivZeroCut c
ε)).overTotal),
(∀ i, MorphismProperty.presheafULift.{u + 1} @IsOpenImmersion (f i)) ∧
(∀ i, LocallyOfFiniteType (uliftYonedaEquiv (f i)).1) ∧
(∀ i, CompactSpace (X i)) ∧
Presheaf.IsLocallySurjective Scheme.zariskiTopology (Limits.Sigma.desc f) ∧
(∀ (i : ι) ⦃T : Scheme.{u}⦄
(x : uliftYoneda.{u + 1}.obj T ⟶ (relSubPicPresheaf c ε (algEquivZeroCut c ε)).overTotal),
LocallyOfFiniteType (uliftYonedaEquiv x).1 →
∀ (L : RigidifiedLineBundle c ε (uliftYonedaEquiv x).1), Quotient.mk _ L =
(uliftYonedaEquiv x).2.1 →
∀ (k : Type u) [Field k] (s : Spec (CommRingCat.of k) ⟶ T),
(∀ (𝒲 : (pullback (pullback.snd c (uliftYonedaEquiv x).1) s).TwoAffineOpenCover),
Subsingleton (𝒲.sectionsOf (fibreAt c (uliftYonedaEquiv x).1 s) (fibreModule c
(uliftYonedaEquiv x).1 s
(L.L ⊗ ((E.pullbackAlong (uliftYonedaEquiv x).1 (Category.comp_id _)).lineBundle ⊗
((Dγ i).pullbackAlong (uliftYonedaEquiv x).1 (Category.comp_id
_)).idealModule)))).H1) →
(∀ σ : 𝟙_ (pullback c (s ≫ (uliftYonedaEquiv x).1)).Modules ⟶
(Scheme.Modules.pullback (mapOnProdOver c s rfl)).obj
(L.L ⊗ ((E.pullbackAlong (uliftYonedaEquiv x).1 (Category.comp_id _)).lineBundle ⊗
((Dγ i).pullbackAlong (uliftYonedaEquiv x).1 (Category.comp_id _)).idealModule)),
σ ≠ 0 → ((Scheme.Modules.zeroSchemeIdeal σ).support : Set ↥(pullback c (s ≫
(uliftYonedaEquiv x).1))) ⊆
((pullback.fst c (s ≫ (uliftYonedaEquiv x).1)) ⁻¹ᵁ U : Set ↥(pullback c (s ≫
(uliftYonedaEquiv x).1)))) →
∃ φ' : Spec (CommRingCat.of k) ⟶ X i,
uliftYoneda.{u + 1}.map φ' ≫ f i = uliftYoneda.{u + 1}.map s ≫ x) ∧
(∀ i, ∃ j : X i ⟶ Y, IsOpenImmersion j ∧ j ≫ y = (uliftYonedaEquiv (f i)).1) := by
classical
have hch := fun i => exists_openChart_of_polarisation_of_fibrewise_zeroScheme
R c 𝒱 ε U g e ρ hr E hEU Y y Duniv hDunivU huniv (Dγ i) (hDγU i) (hχ i) hsect (hZfibγ i)
(hH0one i) (havoid i) (hcut i)
choose X f hft hqc hj hH using hch
have hGover : Presieve.IsSheaf (Scheme.zariskiTopology.over (Spec (CommRingCat.of R)))
(relSubPicPresheaf c ε (algEquivZeroCut c ε)) :=
isSheaf_relSubPicPresheaf_algEquivZeroCut_zariski_of_bijective_sections R c ε hH0
have hG : Presieve.IsSheaf Scheme.zariskiTopology (relSubPicPresheaf c ε (algEquivZeroCut c
ε)).overTotal :=
(relSubPicPresheaf c ε (algEquivZeroCut c ε)).overTotal_isSheaf _ hGover
have hinj := isLFPInj_relSubPicPresheaf_algEquivZeroCut_of_twoAffineOpenCover R c 𝒱 ε
have hX : ∀ i, HomIsLFP (uliftYonedaEquiv (f i)).1 := fun i => by
have := hft i
have : IsLocallyNoetherian (Spec (CommRingCat.of R)) := inferInstance
have : LocallyOfFinitePresentation (uliftYonedaEquiv (f i)).1 := inferInstance
exact homIsLFP_of_locallyOfFinitePresentation R _
have H : ∀ ⦃T : Scheme.{u}⦄ (x : uliftYoneda.{u + 1}.obj T ⟶ (relSubPicPresheaf c ε
(algEquivZeroCut c ε)).overTotal),
LocallyOfFiniteType (uliftYonedaEquiv x).1 →
∃ (U' : ι → T.Opens) (φ : ∀ i, (↑(U' i) : Scheme.{u}) ⟶ X i),
(⨆ i, U' i) = ⊤ ∧
∀ i, uliftYoneda.{u + 1}.map (φ i) ≫ f i = uliftYoneda.{u + 1}.map (U' i).ι ≫ x ∧
∀ ⦃T' : Scheme.{u}⦄ (ψ : T' ⟶ T) (φ' : T' ⟶ X i),
LocallyOfFiniteType (ψ ≫ (uliftYonedaEquiv x).1) →
uliftYoneda.{u + 1}.map φ' ≫ f i = uliftYoneda.{u + 1}.map ψ ≫ x →
∃ χ : T' ⟶ ↑(U' i), χ ≫ (U' i).ι = ψ ∧ χ ≫ φ i = φ' := by
intro T x hxft
have := hxft
choose U' φ hU'φ using fun i => hH i x hxft
refine ⟨U', φ, ?_, fun i => ⟨(hU'φ i).2.1, (hU'φ i).2.2⟩⟩
rw [eq_top_iff]
rintro p -
obtain ⟨L, hLx⟩ := Quotient.exists_rep (uliftYonedaEquiv x).2.1
have hL : FibrewiseAlgEquivZero L := by
have h2 := (uliftYonedaEquiv x).2.2
rw [← hLx] at h2
exact h2
let s : Spec (CommRingCat.of (T.residueField p)) ⟶ T := T.fromSpecResidueField p
obtain ⟨i, hi, hfin⟩ := hcover (uliftYonedaEquiv x).1 L hL (T.residueField p) s
have hsub : Set.range ⇑s ⊆ (U' i : Set T) := ((hU'φ i).1 L hLx (T.residueField p) s).2 ⟨hi,
hfin⟩
have hp : p ∈ (U' i : Set T) := hsub ⟨IsLocalRing.closedPoint _,
Scheme.fromSpecResidueField_apply p _⟩
exact TopologicalSpace.Opens.mem_iSup.2 ⟨i, hp⟩
obtain ⟨hopen, hsurj⟩ :=
presheafULift_isOpenImmersion_and_isLocallySurjective_of_locallyOfFiniteType R
(relSubPicPresheaf c ε (algEquivZeroCut c ε)) hG hlfp hinj X f hX H
refine ⟨X, f, hopen, hft, hqc, hsurj, ?_, hj⟩
intro i T x hxft L hLx k _ s hs hfin
have := hxft
obtain ⟨U', φ, hU'⟩ := hH i x hxft
have hsub : Set.range ⇑s ⊆ (U' : Set T) := (hU'.1 L hLx k s).2 ⟨hs, hfin⟩
have hsub' : Set.range ⇑s ⊆ Set.range ⇑U'.ι := by rwa [Scheme.Opens.range_ι]
refine ⟨IsOpenImmersion.lift U'.ι s hsub' ≫ φ, ?_⟩
rw [Functor.map_comp, Category.assoc, hU'.2.1, ← Category.assoc, ← Functor.map_comp,
IsOpenImmersion.lift_fac]