Definitions/Def_CategoryTheory_OverTotalPresheaf.lean
Total presheaf of a presheaf on an over category
Fix a category \mathcal C with an object S and a presheaf G \colon (\mathcal C/S)^{\mathrm{op}} \to \mathrm{Type}\,w. For T an object of \mathcal C, OverTotal G T is the dependent sum \Sigma\,(t \colon T \to S),\ G(\mathrm{Over.mk}\ t), i.e. the set of pairs (t,x) with t a morphism T \to S and x an element of the value of G at the object t of \mathcal C/S; it lives in \mathrm{Type}\,(\max w\, v), v being the universe of morphisms of \mathcal C. These sets are assembled into a presheaf overTotal G \colon \mathcal C^{\mathrm{op}} \to \mathrm{Type}\,(\max w\, v): a morphism \varphi \colon T' \to T of \mathcal C sends (t,x) to (\varphi \circ' t, G(\varphi)x), where \varphi is viewed as a morphism \mathrm{Over.mk}(\varphi \circ' t) \to \mathrm{Over.mk}\,t in \mathcal C/S; functoriality rests on the fact that G applied to a morphism of \mathcal C/S depends only on the underlying morphism of \mathcal C, recorded in the group of transport lemmas map_op_apply_eq_of_left_eq, map_op_apply_eq_self and the composite variants.
For T an object of \mathcal C/S, the maps OverTotal.toFibre and OverTotal.ofFibre identify G(T) with the elements of OverTotal G T.left whose first component equals the structure morphism T.hom; toFibre_ofFibre, ofFibre_toFibre and toFibre_naturality state that these are mutually inverse and natural in T, and OverTotal.ext' is the corresponding extensionality principle for pairs.
Finally, given e : (overTotal G).RepresentableBy Y, overTotalBase e is the morphism Y \to S obtained as the first component of the universal element e(\mathrm{id}_Y); overTotal_homEquiv_fst says every k \colon T \to Y satisfies e(k)_1 = k followed by this base morphism, and ofOverTotal produces from e a RepresentableBy witness for G with representing object Y \to S of \mathcal C/S, the bijection \mathrm{Hom}_{\mathcal C/S}((T,t),(Y,p)) \simeq G(T,t) being g \mapsto the fibre element attached to e(g_{\mathrm{left}}).
Relation to Mathlib
Built on Mathlib's Over category and CategoryTheory.Functor.RepresentableBy; the total-presheaf construction and the transfer of representability from the total presheaf to the presheaf on the over category are the project's own, and are set up with independent universes for the values of G and the morphisms of \mathcal C.
Where it is used
The construction lets representability criteria proved for presheaves on the category of all schemes be applied to functors on schemes over a fixed base: one forms the total presheaf, represents it, and reads off a representing object over the base. It is used in this way for relative Picard-type functors appearing in the construction of the moduli spaces underlying the modularity arguments.
References
- S. Mac Lane and I. Moerdijk, Sheaves in Geometry and Logic: A First Introduction to Topos Theory, Springer, 1992
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 142 lines
- 20 declarations
- used in the statements of 36 theorems and imported by 40 proofs
- imports 0 definition modules
Source file: Definitions/Def_CategoryTheory_OverTotalPresheaf.lean
Imports
- only Mathlib
Imported by
Declarations
- abbrev
CategoryTheory.Functor.OverTotal - lemma
CategoryTheory.Functor.map_op_apply_eq_of_left_eq - lemma
CategoryTheory.Functor.map_op_apply_eq_self - lemma
CategoryTheory.Functor.map_op_map_op_apply - lemma
CategoryTheory.Functor.map_op_map_op_apply_eq_self - lemma
CategoryTheory.Functor.map_op_map_op_map_op_apply_eq_self - lemma
CategoryTheory.Functor.map_op_map_op_apply_eq - lemma
CategoryTheory.Functor.OverTotal.ext' - def
CategoryTheory.Functor.overTotal - lemma
CategoryTheory.Functor.overTotal_map_fst - def
CategoryTheory.Functor.OverTotal.toFibre - lemma
CategoryTheory.Functor.OverTotal.toFibre_congr - def
CategoryTheory.Functor.OverTotal.ofFibre - lemma
CategoryTheory.Functor.OverTotal.ofFibre_fst - lemma
CategoryTheory.Functor.OverTotal.toFibre_ofFibre - lemma
CategoryTheory.Functor.OverTotal.ofFibre_toFibre - lemma
CategoryTheory.Functor.OverTotal.toFibre_naturality - def
CategoryTheory.Functor.RepresentableBy.overTotalBase - lemma
CategoryTheory.Functor.RepresentableBy.overTotal_homEquiv_fst - def
CategoryTheory.Functor.RepresentableBy.ofOverTotal
Source
import Mathlib set_option autoImplicit false open CategoryTheory Category Opposite namespace CategoryTheory.Functor universe w v u variable {C : Type u} [Category.{v} C] {S : C} (G : (Over S)ᵒᵖ ⥤ Type w) abbrev OverTotal (T : C) : Type (max w v) := Σ t : T ⟶ S, G.obj (op (Over.mk t)) variable {G} lemma map_op_apply_eq_of_left_eq {A B : Over S} (k k' : A ⟶ B) (h : k.left = k'.left) (x : G.obj (op B)) : G.map k.op x = G.map k'.op x := by rw [Over.OverMorphism.ext h] lemma map_op_apply_eq_self {A : Over S} (k : A ⟶ A) (h : k.left = 𝟙 _) (x : G.obj (op A)) : G.map k.op x = x := by rw [show k = 𝟙 A from Over.OverMorphism.ext (by simpa using h), op_id, Functor.map_id_apply] lemma map_op_map_op_apply {A B B' : Over S} (k : A ⟶ B) (k' : B ⟶ B') (x : G.obj (op B')) : G.map k.op (G.map k'.op x) = G.map (k ≫ k').op x := by rw [op_comp, Functor.map_comp_apply] lemma map_op_map_op_apply_eq_self {A B : Over S} (k : A ⟶ B) (k' : B ⟶ A) (h : (k ≫ k').left = 𝟙 _) (x : G.obj (op A)) : G.map k.op (G.map k'.op x) = x := by rw [map_op_map_op_apply] exact map_op_apply_eq_self _ h x lemma map_op_map_op_map_op_apply_eq_self {A B B' : Over S} (k : A ⟶ B) (k' : B ⟶ B') (k'' : B' ⟶ A) (h : (k ≫ k' ≫ k'').left = 𝟙 _) (x : G.obj (op A)) : G.map k.op (G.map k'.op (G.map k''.op x)) = x := by rw [map_op_map_op_apply, map_op_map_op_apply] exact map_op_apply_eq_self _ (by rw [assoc]; exact h) x lemma map_op_map_op_apply_eq {A B B' D : Over S} (k : A ⟶ B) (k' : B ⟶ B') (l : A ⟶ D) (l' : D ⟶ B') (h : (k ≫ k').left = (l ≫ l').left) (x : G.obj (op B')) : G.map k.op (G.map k'.op x) = G.map l.op (G.map l'.op x) := by rw [map_op_map_op_apply, map_op_map_op_apply] exact map_op_apply_eq_of_left_eq _ _ h x lemma OverTotal.ext' {T : C} {a b : G.OverTotal T} (h₁ : a.1 = b.1) (h₂ : G.map (Over.homMk (𝟙 T) (by simp [h₁]) : Over.mk b.1 ⟶ Over.mk a.1).op a.2 = b.2) : a = b := by obtain ⟨t, x⟩ := a obtain ⟨t', y⟩ := b obtain rfl : t = t' := h₁ simp only [Sigma.mk.injEq, heq_eq_eq, true_and] dsimp only at h₂ rw [← h₂] symm exact map_op_apply_eq_self _ (by simp) x variable (G) def overTotal : Cᵒᵖ ⥤ Type (max w v) where obj T := G.OverTotal T.unop map {T T'} φ := TypeCat.ofHom fun a => ⟨φ.unop ≫ a.1, G.map (Over.homMk φ.unop rfl : Over.mk (φ.unop ≫ a.1) ⟶ Over.mk a.1).op a.2⟩ map_id T := TypeCat.homEquiv.injective (funext fun a => OverTotal.ext' (by simp) (map_op_map_op_apply_eq_self _ _ (by simp) _)) map_comp {T T' T''} φ ψ := TypeCat.homEquiv.injective (funext fun a => OverTotal.ext' (by simp) (map_op_map_op_apply_eq _ _ _ _ (by simp) _)) @[simp] lemma overTotal_map_fst {T T' : Cᵒᵖ} (φ : T ⟶ T') (a : G.overTotal.obj T) : (G.overTotal.map φ a).1 = φ.unop ≫ a.1 := rfl variable {G} def OverTotal.toFibre (T : Over S) (b : G.OverTotal T.left) (hb : b.1 = T.hom) : G.obj (op T) := G.map (Over.homMk (𝟙 T.left) (by simpa using hb) : T ⟶ Over.mk b.1).op b.2 lemma OverTotal.toFibre_congr (T : Over S) {b b' : G.OverTotal T.left} (h : b = b') (hb : b.1 = T.hom) (hb' : b'.1 = T.hom) : OverTotal.toFibre T b hb = OverTotal.toFibre T b' hb' := by subst h; rfl def OverTotal.ofFibre (T : Over S) (x : G.obj (op T)) : G.OverTotal T.left := ⟨T.hom, G.map (Over.homMk (𝟙 T.left) (by simp) : Over.mk T.hom ⟶ T).op x⟩ @[simp] lemma OverTotal.ofFibre_fst (T : Over S) (x : G.obj (op T)) : (OverTotal.ofFibre T x).1 = T.hom := rfl lemma OverTotal.toFibre_ofFibre (T : Over S) (x : G.obj (op T)) : OverTotal.toFibre T (OverTotal.ofFibre T x) rfl = x := map_op_map_op_apply_eq_self _ _ (by simp) x lemma OverTotal.ofFibre_toFibre (T : Over S) (b : G.OverTotal T.left) (hb : b.1 = T.hom) : OverTotal.ofFibre T (OverTotal.toFibre T b hb) = b := OverTotal.ext' (by simpa using hb.symm) (map_op_map_op_map_op_apply_eq_self _ _ _ (by simp) _) lemma OverTotal.toFibre_naturality {T T' : Over S} (φ : T ⟶ T') (b : G.OverTotal T'.left) (hb : b.1 = T'.hom) (hb' : (G.overTotal.map φ.left.op b).1 = T.hom) : OverTotal.toFibre T (G.overTotal.map φ.left.op b) hb' = G.map φ.op (OverTotal.toFibre T' b hb) := map_op_map_op_apply_eq _ _ _ _ (by simp) _ namespace RepresentableBy variable {Y : C} (e : G.overTotal.RepresentableBy Y) def overTotalBase : Y ⟶ S := (e.homEquiv (𝟙 Y)).1 lemma overTotal_homEquiv_fst {T : C} (k : T ⟶ Y) : (e.homEquiv k).1 = k ≫ e.overTotalBase := by have h := e.homEquiv_comp k (𝟙 Y) rw [comp_id] at h rw [h] rfl noncomputable def ofOverTotal : G.RepresentableBy (Over.mk e.overTotalBase) where homEquiv {T} := { toFun := fun g => OverTotal.toFibre T (e.homEquiv g.left) (by rw [overTotal_homEquiv_fst]; exact Over.w g) invFun := fun x => Over.homMk (e.homEquiv.symm (OverTotal.ofFibre T x)) (by have h := e.overTotal_homEquiv_fst (e.homEquiv.symm (OverTotal.ofFibre T x)) rw [Equiv.apply_symm_apply, OverTotal.ofFibre_fst] at h exact h.symm) left_inv := fun g => by apply Over.OverMorphism.ext simp only [Over.homMk_left] apply e.homEquiv.injective rw [Equiv.apply_symm_apply, OverTotal.ofFibre_toFibre] right_inv := fun x => (OverTotal.toFibre_congr T (e.homEquiv.apply_symm_apply (OverTotal.ofFibre T x)) _ rfl).trans (OverTotal.toFibre_ofFibre T x) } homEquiv_comp {T T'} φ g := by have hg : (e.homEquiv g.left).1 = T'.hom := by rw [overTotal_homEquiv_fst]; exact Over.w g have hφg : (e.homEquiv (φ ≫ g).left).1 = T.hom := by rw [overTotal_homEquiv_fst]; exact Over.w (φ ≫ g) have hb' : (G.overTotal.map φ.left.op (e.homEquiv g.left)).1 = T.hom := by rw [overTotal_map_fst, overTotal_homEquiv_fst, Quiver.Hom.unop_op, ← assoc] exact Over.w (φ ≫ g) calc OverTotal.toFibre T (e.homEquiv (φ ≫ g).left) hφg = OverTotal.toFibre T (G.overTotal.map φ.left.op (e.homEquiv g.left)) hb' := OverTotal.toFibre_congr T (e.homEquiv_comp φ.left g.left) hφg hb' _ = G.map φ.op (OverTotal.toFibre T' (e.homEquiv g.left) hg) := OverTotal.toFibre_naturality φ _ hg hb' end RepresentableBy end CategoryTheory.Functor
Statements phrased using this module (36)
- Representability of fibrewise Pic⁰ over a reduced Noetherian base
AlgebraicGeometry.RelPicard.exists_representsRelSubPic_algEquivZeroCut_of_finiteMapData_of_isReduced487 below · depth 14 - Two-sided chart with vanishing H¹ and zeros inside U
AlgebraicGeometry.RelPicard.exists_chart_subsingleton_H1_and_support_subset_fibre_of_twoSidedBlocks_of_injective376 below · depth 15 - Four structural inputs for relative Picard charts
AlgebraicGeometry.RelPicard.exists_isAffineOpen_and_isInvertible_sectionIdeal_and_isInvertible_pullbackAlong_and_sectionTwist_of_isOpenImmersion_of_supportedIn44 below · depth 15 - Open charts cover relative Pic⁰ over a reduced base
AlgebraicGeometry.RelPicard.exists_openCharts_relSubPicPresheaf_algEquivZeroCut_of_finiteMapData_of_isReduced461 below · depth 15 - Polarised open charts of the relative Pic⁰ presheaf
AlgebraicGeometry.RelPicard.exists_openCharts_relSubPicPresheaf_algEquivZeroCut_of_polarisation_supportedIn_of_fibrewise_zeroScheme201 below · depth 15 - Openness of the algebraic-equivalence locus for 𝒪(D-E_T)
AlgebraicGeometry.RelPicard.exists_opens_range_subset_iff_isAlgEquivZero_rigidify_lineBundle_baseChange_of_twoGluedSmoothCurveDegenerations379 below · depth 15 - Representability of Pic⁰ cut by open charts
AlgebraicGeometry.RelPicard.exists_representsRelSubPic_algEquivZeroCut_of_openCharts_of_bijective_sections130 below · depth 15 - Block general position for the twist 𝒪(E_Ω)
AlgebraicGeometry.RelPicard.exists_split_injective_forall_subsingleton_H1_lineBundle_and_support_subset_of_twoSidedBlocks_of_bijective_sections366 below · depth 15 - Descent orbits on relative Pic⁰ lie in affine opens
AlgebraicGeometry.RelPicard.forall_exists_isAffineOpen_forall_act_mem_of_twoSidedBlocks_of_isInvertible25 below · depth 15 - Surjective finite-presentation half of Pic⁰ for two-glued-curve degenerations
AlgebraicGeometry.RelPicard.isLFPSurj_relSubPicPresheaf_algEquivZeroCut_baseChange_of_twoGluedSmoothCurveDegenerations398 below · depth 15 - Smoothness of a scheme representing relative Pic⁰
AlgebraicGeometry.RelPicard.smooth_of_representsRelSubPic_algEquivZeroCut_of_finiteMapData44 below · depth 15 - Open chart of the total presheaf from representability over U
CategoryTheory.Functor.exists_overTotal_chart_relative_isOpenImmersion_of_representableBy_over_map0 below · depth 15 - From finite-type test schemes to all: open charts for locally finitely presented sheaves
AlgebraicGeometry.AffineLimit.presheafULift_isOpenImmersion_and_isLocallySurjective_of_locallyOfFiniteType0 below · depth 16 - Chart divisors from a split pool of sections cover Pic⁰
AlgebraicGeometry.RelPicard.exists_chart_subsingleton_H1_fibre_of_blocks_of_injective413 below · depth 16 - Block general position for a split pool on geometric fibres
AlgebraicGeometry.RelPicard.exists_injective_forall_subsingleton_H1_of_blocks_of_pool_of_bijective_sections406 below · depth 16 - A polarised open chart for the relative Pic⁰ subfunctor
AlgebraicGeometry.RelPicard.exists_openChart_openImmersion_relSubPicPresheaf_algEquivZeroCut_of_polarisation_of_fibrewise_zeroScheme166 below · depth 16 - An open chart of relative Pic⁰ from one divisor
AlgebraicGeometry.RelPicard.exists_openChart_relSubPicPresheaf_algEquivZeroCut_of_relEffCartierDiv369 below · depth 16 - Milne charts for relative Pic⁰ inside the smooth locus
AlgebraicGeometry.RelPicard.exists_openCharts_relSubPicPresheaf_algEquivZeroCut_of_relEffCartierDiv_supportedIn_of_fibrewise_zeroScheme167 below · depth 16 - Openness of the algebraically-trivial locus for twisted divisor bundles
AlgebraicGeometry.RelPicard.exists_opens_range_subset_iff_isAlgEquivZero_twistModule_baseChange_of_twoLineDegenerations430 below · depth 16 - Representability of the relative Pic⁰ cut from theta-chart data
AlgebraicGeometry.RelPicard.exists_representsRelSubPic_algEquivZeroCut_of_chartData200 below · depth 16 - Two-sided block general position on the geometric fibres of a degenerating curve
AlgebraicGeometry.RelPicard.exists_split_injective_forall_subsingleton_H1_and_support_subset_of_twoSidedBlocks_of_bijective_sections358 below · depth 16 - Descent orbits of relative Pic⁰ points lie in affine charts
AlgebraicGeometry.RelPicard.forall_exists_isAffineOpen_forall_act_mem_of_blocks_of_isInvertible17 below · depth 16 - Injectivity half of local finite presentation for Pic⁰
AlgebraicGeometry.RelPicard.isLFPInj_relSubPicPresheaf_algEquivZeroCut28 below · depth 16 - Classes in relative Pic⁰ descend to f.g. subalgebras
AlgebraicGeometry.RelPicard.isLFPSurj_relSubPicPresheaf_algEquivZeroCut290 below · depth 16 - LFP-surjectivity of the base-changed Pic⁰ presheaf
AlgebraicGeometry.RelPicard.isLFPSurj_relSubPicPresheaf_algEquivZeroCut_baseChange_of_twoLineDegenerations440 below · depth 16 - Limit surjectivity for the Pic⁰ cut, given openness and point-independence
AlgebraicGeometry.RelPicard.isLFPSurj_relSubPicPresheaf_algEquivZeroCut_of_isOpen_setOf_isAlgEquivZero42 below · depth 16 - Graph chart divisors lie on the ε-component of non-smooth fibres
AlgebraicGeometry.RelPicard.preimage_support_prodKerGraph_subset_connectedComponentIn_of_blocks0 below · depth 16 - Chart killing Čech H¹ on a non-smooth geometric fibre
AlgebraicGeometry.RelPicard.exists_chart_subsingleton_H1_fibre_of_blocks_of_not_smooth363 below · depth 17 - A chart divisor killing check H¹ on a smooth geometric fibre
AlgebraicGeometry.RelPicard.exists_forall_subsingleton_H1_sectionsOf_fibreModule_chartModule_of_smooth325 below · depth 17 - Open chart of the relative Pic⁰ from a universal divisor
AlgebraicGeometry.RelPicard.exists_openChart_openImmersion_relSubPicPresheaf_algEquivZeroCut_of_fibrewise_zeroScheme130 below · depth 17 - Openness of the fibrewise check H¹-vanishing locus
AlgebraicGeometry.RelPicard.exists_opens_range_subset_iff_forall_subsingleton_H1_fibre91 below · depth 17 - Polarised chart divisor over the H¹-vanishing open locus
AlgebraicGeometry.RelPicard.exists_relEffCartierDiv_supportedIn_rigidify_iso_of_subsingleton_H1_of_support_subset36 below · depth 17 - Openness of the algebraic-equivalence-to-zero locus on the base
AlgebraicGeometry.RelPicard.isOpen_setOf_isAlgEquivZero_fibre260 below · depth 17 - Factorisation through W and uniqueness of the chart divisor
AlgebraicGeometry.RelPicard.relEffCartierDiv_eq_pullbackAlong_of_rigidify_iso_of_supportedIn_of_support_subset36 below · depth 17 - Open subfunctors with affine charts cover a Zariski sheaf
AlgebraicGeometry.Scheme.exists_isOpenImmersion_presheaf_overTotal_of_isOpen_of_chart0 below · depth 35 - Zariski comparison: algebra-valued sheaf extends to schemes over Spec R
AlgebraicGeometry.Scheme.exists_presheaf_over_equiv_isSheaf_overTotal_of_isLocalization_away0 below · depth 35