Skip to content

Commit 0549d80

Browse files
committed
feat(Stalks): add exists_le_germ_eq (#39490)
Also rename `germ_exist` to `exists_germ_eq` to follow the naming convention. Motivated by the Cauchy theorem project at ICERM workshop "Techniques and Tools for the Formalization of Analysis".
1 parent a689568 commit 0549d80

11 files changed

Lines changed: 34 additions & 21 deletions

File tree

Mathlib/AlgebraicGeometry/ProjectiveSpectrum/StructureSheaf.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ def homogeneousLocalizationToStalk (x : ProjectiveSpectrum.top 𝒜) (y : at x)
313313

314314
lemma homogeneousLocalizationToStalk_stalkToFiberRingHom (x z) :
315315
homogeneousLocalizationToStalk 𝒜 x (stalkToFiberRingHom 𝒜 x z) = z := by
316-
obtain ⟨U, hxU, s, rfl⟩ := (Proj.structureSheaf 𝒜).presheaf.germ_exist x z
316+
obtain ⟨U, hxU, s, rfl⟩ := (Proj.structureSheaf 𝒜).presheaf.exists_germ_eq z
317317
change homogeneousLocalizationToStalk 𝒜 x ((stalkToFiberRingHom 𝒜 x).hom
318318
(((Proj.structureSheaf 𝒜).presheaf.germ U x hxU) s)) =
319319
((Proj.structureSheaf 𝒜).presheaf.germ U x hxU) s

Mathlib/AlgebraicGeometry/Properties.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ instance isReduced_stalk_of_isReduced [IsReduced X] (x : X) :
8585
_root_.IsReduced (X.presheaf.stalk x) := by
8686
constructor
8787
rintro g ⟨n, e⟩
88-
obtain ⟨U, hxU, s, (rfl : (X.presheaf.germ U x hxU) s = g)⟩ := X.presheaf.germ_exist x g
88+
obtain ⟨U, hxU, s, (rfl : (X.presheaf.germ U x hxU) s = g)⟩ := X.presheaf.exists_germ_eq g
8989
rw [← map_pow, ← map_zero (X.presheaf.germ _ x hxU).hom] at e
9090
obtain ⟨V, hxV, iU, iV, (e' : (X.presheaf.map iU.op) (s ^ n) = (X.presheaf.map iV.op) 0)⟩ :=
9191
X.presheaf.germ_eq x hxU hxU _ 0 e

Mathlib/AlgebraicGeometry/Spec.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ def toPushforwardStalkAlgHom :
356356

357357
theorem isLocalizedModule_toPushforwardStalkAlgHom_aux (y) :
358358
∃ x : S × p.asIdeal.primeCompl, x.2 • y = toPushforwardStalkAlgHom R S p x.1 := by
359-
obtain ⟨U, hp, s, e⟩ := TopCat.Presheaf.germ_exist _ _ y
359+
obtain ⟨U, hp, s, e⟩ := TopCat.Presheaf.exists_germ_eq _ y
360360
obtain ⟨_, ⟨r, rfl⟩, hpr : p ∈ PrimeSpectrum.basicOpen r, hrU : PrimeSpectrum.basicOpen r ≤ U⟩ :=
361361
PrimeSpectrum.isTopologicalBasis_basic_opens.exists_subset_of_mem_open (show p ∈ U from hp) U.2
362362
change PrimeSpectrum.basicOpen r ≤ U at hrU

Mathlib/AlgebraicGeometry/SpreadingOut.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ lemma exists_lift_of_germInjective_aux {U : X.Opens} {x : X} (hxU)
245245
V ≤ U ∧ RingHom.range φ.hom ≤ RingHom.range (X.presheaf.germ V x hxV).hom := by
246246
letI := φRA.hom.toAlgebra
247247
obtain ⟨s, hs⟩ := hφRA
248-
choose W hxW f hf using fun t ↦ X.presheaf.germ_exist x (φ t)
248+
choose W hxW f hf using fun t ↦ X.presheaf.exists_germ_eq (φ t)
249249
have H : x ∈ s.inf W ⊓ U := by
250250
rw [← SetLike.mem_coe, TopologicalSpace.Opens.coe_inf, TopologicalSpace.Opens.coe_finset_inf]
251251
exact ⟨by simpa using fun x _ ↦ hxW x, hxU⟩

Mathlib/AlgebraicGeometry/StructureSheaf.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ def modulePresheafStalkIso (x : PrimeSpectrum.Top R) :
600600
Limits.colimit.isoColimitCocone ⟨_, Limits.isColimitOfPreserves (forget₂ (ModuleCat R) Ab)
601601
(Limits.colimit.isColimit ((OpenNhds.inclusion x).op ⋙
602602
structurePresheafInModuleCat R M))⟩
603-
obtain ⟨U, hxU, s, rfl⟩ := TopCat.Presheaf.germ_exist _ _ m
603+
obtain ⟨U, hxU, s, rfl⟩ := TopCat.Presheaf.exists_germ_eq _ m
604604
have : TopCat.Presheaf.germ (moduleStructurePresheaf R M).presheaf U x hxU ≫ α.hom =
605605
(forget₂ _ _).map ((structurePresheafInModuleCat R M).germ U x hxU) :=
606606
Limits.colimit.isoColimitCocone_ι_hom (C := Ab) ..
@@ -828,7 +828,7 @@ def commRingCatStalkEquivModuleStalk (x : PrimeSpectrum.Top R) :
828828
(forget₂ CommRingCat RingCat ⋙ forget₂ RingCat AddCommGrpCat)
829829
(Limits.colimit.isColimit ((OpenNhds.inclusion x).op ⋙
830830
structurePresheafInCommRingCat R))⟩)
831-
obtain ⟨U, hxU, s, rfl⟩ := TopCat.Presheaf.germ_exist _ _ m
831+
obtain ⟨U, hxU, s, rfl⟩ := TopCat.Presheaf.exists_germ_eq _ m
832832
have : (TopCat.Presheaf.germ (moduleStructurePresheaf R R).presheaf U x hxU) ≫ α.hom =
833833
(forget₂ CommRingCat RingCat ⋙ forget₂ RingCat AddCommGrpCat).map
834834
((structurePresheafInCommRingCat R).germ U x hxU) :=

Mathlib/Geometry/Manifold/Sheaf/LocallyRingedSpace.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ theorem smoothSheafCommRing.isUnit_stalk_iff {x : M}
6464
rintro (hf : _ ≠ 0)
6565
-- Represent `f` as the germ of some function (also called `f`) on an open neighbourhood `U` of
6666
-- `x`, which is nonzero at `x`
67-
obtain ⟨U : Opens M, hxU, f : C^∞⟮IM, U; 𝓘(𝕜), 𝕜⟯, rfl⟩ := S.germ_exist x f
67+
obtain ⟨U : Opens M, hxU, f : C^∞⟮IM, U; 𝓘(𝕜), 𝕜⟯, rfl⟩ := S.exists_germ_eq f
6868
have hf' : f ⟨x, hxU⟩ ≠ 0 := by
6969
convert hf
7070
exact (smoothSheafCommRing.eval_germ U x hxU f).symm

Mathlib/Geometry/RingedSpace/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ theorem isUnit_res_of_isUnit_germ (U : Opens X) (f : X.presheaf.obj (op U)) (x :
7676
(h : IsUnit (X.presheaf.germ U x hx f)) :
7777
∃ (V : Opens X) (i : V ⟶ U) (_ : x ∈ V), IsUnit (X.presheaf.map i.op f) := by
7878
obtain ⟨g', heq⟩ := h.exists_right_inv
79-
obtain ⟨V, hxV, g, rfl⟩ := X.presheaf.germ_exist x g'
79+
obtain ⟨V, hxV, g, rfl⟩ := X.presheaf.exists_germ_eq g'
8080
let W := U ⊓ V
8181
have hxW : x ∈ W := ⟨hx, hxV⟩
8282
replace heq : (X.presheaf.germ _ x hxW) ((X.presheaf.map (U.infLELeft V).op) f *

Mathlib/Geometry/RingedSpace/LocallyRingedSpace/HasColimits.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ theorem coequalizer_π_stalk_isLocalHom (x : Y) :
223223
IsLocalHom ((coequalizer.π f.toShHom g.toShHom :).hom.stalkMap x).hom := by
224224
constructor
225225
rintro a ha
226-
rcases TopCat.Presheaf.germ_exist _ _ a with ⟨U, hU, s, rfl⟩
226+
rcases TopCat.Presheaf.exists_germ_eq _ a with ⟨U, hU, s, rfl⟩
227227
rw [PresheafedSpace.stalkMap_germ_apply (coequalizer.π f.toShHom g.toShHom).hom U _ hU] at ha
228228
let V := imageBasicOpen f g U s
229229
have hV : (coequalizer.π f.toShHom g.toShHom).hom.base ⁻¹'

Mathlib/Topology/Sheaves/LocallySurjective.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ theorem locally_surjective_iff_surjective_on_stalks (T : ℱ ⟶ 𝒢) :
8888
-- Let g ∈ Γₛₜ 𝒢 x be a germ.
8989
intro x g
9090
-- Represent it on an open set U ⊆ X as ⟨t, U⟩.
91-
obtain ⟨U, hxU, t, rfl⟩ := 𝒢.germ_exist x g
91+
obtain ⟨U, hxU, t, rfl⟩ := 𝒢.exists_germ_eq g
9292
-- By local surjectivity, pass to a smaller open set V
9393
-- on which there exists s ∈ Γ_ ℱ V mapping to t |_ V.
9494
rcases hT.imageSieve_mem t x hxU with ⟨V, ι, ⟨s, h_eq⟩, hxV⟩
@@ -105,7 +105,7 @@ theorem locally_surjective_iff_surjective_on_stalks (T : ℱ ⟶ 𝒢) :
105105
intro U t x hxU
106106
set t_x := 𝒢.germ _ x hxU t with ht_x
107107
obtain ⟨s_x, hs_x : ((stalkFunctor C x).map T) s_x = t_x⟩ := hT x t_x
108-
obtain ⟨V, hxV, s, rfl⟩ := ℱ.germ_exist x s_x
108+
obtain ⟨V, hxV, s, rfl⟩ := ℱ.exists_germ_eq s_x
109109
-- rfl : ℱ.germ x s = s_x
110110
have key_W := 𝒢.germ_eq x hxV hxU (T.app _ s) t <| by
111111
convert hs_x using 1

Mathlib/Topology/Sheaves/Sheafify.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def stalkToFiber (x : X) : F.sheafify.presheaf.stalk x ⟶ F.stalk x :=
9090
theorem stalkToFiber_surjective (x : X) : Function.Surjective (F.stalkToFiber x) := by
9191
apply TopCat.stalkToFiber_surjective
9292
intro t
93-
obtain ⟨U, m, s, rfl⟩ := F.germ_exist _ t
93+
obtain ⟨U, m, s, rfl⟩ := F.exists_germ_eq t
9494
use ⟨U, m⟩
9595
fconstructor
9696
· exact fun y => F.germ _ _ y.2 s

0 commit comments

Comments
 (0)