|
| 1 | +/- |
| 2 | +Copyright (c) 2026 Christian Merten. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Christian Merten |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +public import Mathlib.CategoryTheory.MorphismProperty.Comma |
| 9 | +public import Mathlib.CategoryTheory.Sites.MorphismProperty |
| 10 | +public import Mathlib.CategoryTheory.Sites.Over |
| 11 | + |
| 12 | +/-! |
| 13 | +
|
| 14 | +# Sites on `P.Over ⊤ X` |
| 15 | +
|
| 16 | +We provide some API for proving properties of `P.Over ⊤ X` in relation to precoverages. Consider |
| 17 | +a precoverage `K` on `C`. |
| 18 | +
|
| 19 | +## Main results |
| 20 | +
|
| 21 | +- `CategoryTheory.MorphismProperty.locallyCoverDense_forget_of_le`: |
| 22 | + The forgetful functor `P.Over ⊤ X ⥤ Over X` is locally cover dense if morphisms in `K` |
| 23 | + satisfy `P`. |
| 24 | +- `CategoryTheory.MorphismProperty.toGrothendieck_comap_forget_eq_inducedTopology`: The topology |
| 25 | + generated by the precoverage induced from `K` via the composition `P.Over ⊤ X ⥤ Over X ⥤ C` is |
| 26 | + the induced topology from the forgetful functor `P.Over ⊤ X ⥤ Over X`. |
| 27 | +
|
| 28 | +-/ |
| 29 | + |
| 30 | +@[expose] public section |
| 31 | + |
| 32 | +universe v u |
| 33 | + |
| 34 | +open CategoryTheory MorphismProperty Limits |
| 35 | + |
| 36 | +namespace CategoryTheory.MorphismProperty |
| 37 | + |
| 38 | +variable {C : Type*} [Category* C] |
| 39 | + |
| 40 | +variable {P : MorphismProperty C} {S : C} [P.IsStableUnderComposition] |
| 41 | + |
| 42 | +set_option backward.isDefEq.respectTransparency false in |
| 43 | +lemma exists_map_eq_of_presieve (K : Precoverage C) (H : K ≤ P.precoverage) |
| 44 | + {X : P.Over ⊤ S} {R : Presieve ((MorphismProperty.Over.forget P ⊤ S).obj X)} |
| 45 | + (hR : R ∈ (K.comap <| CategoryTheory.Over.forget S) _) : |
| 46 | + ∃ T : Presieve X, T.map (MorphismProperty.Over.forget P ⊤ S) = R := by |
| 47 | + rw [Precoverage.mem_iff_exists_zeroHypercover] at hR |
| 48 | + obtain ⟨𝒰, rfl⟩ := hR |
| 49 | + let 𝒱 : PreZeroHypercover X := |
| 50 | + ⟨𝒰.I₀, fun i ↦ Over.mk _ (𝒰.X i).hom ?_, fun i ↦ Over.homMk (𝒰.f i).left (by simp) trivial⟩ |
| 51 | + · use 𝒱.presieve₀ |
| 52 | + rw [Presieve.map_ofArrows] |
| 53 | + rfl |
| 54 | + · rw [← CategoryTheory.Over.w (𝒰.f i)] |
| 55 | + exact P.comp_mem _ _ (H _ 𝒰.mem₀ ⟨⟨i⟩⟩) X.prop |
| 56 | + |
| 57 | +variable (K : Precoverage C) [K.HasIsos] [K.IsStableUnderBaseChange] [K.IsStableUnderComposition] |
| 58 | + [K.HasPullbacks] |
| 59 | + |
| 60 | +lemma locallyCoverDense_forget_of_le (H : K ≤ P.precoverage) : |
| 61 | + (MorphismProperty.Over.forget P ⊤ S).LocallyCoverDense (K.toGrothendieck.over S) := by |
| 62 | + rw [over_toGrothendieck_eq_toGrothendieck_comap_forget] |
| 63 | + apply Precoverage.locallyCoverDense_of_map_functorPullback_mem |
| 64 | + intro X R hR |
| 65 | + obtain ⟨R, rfl⟩ := MorphismProperty.exists_map_eq_of_presieve _ H hR |
| 66 | + simpa |
| 67 | + |
| 68 | +lemma toGrothendieck_comap_forget_eq_inducedTopology |
| 69 | + (H : K ≤ P.precoverage) : |
| 70 | + haveI := MorphismProperty.locallyCoverDense_forget_of_le (S := S) K H |
| 71 | + (K.comap (MorphismProperty.Over.forget P ⊤ _ ⋙ CategoryTheory.Over.forget S)).toGrothendieck = |
| 72 | + (MorphismProperty.Over.forget P ⊤ _).inducedTopology (K.toGrothendieck.over S) := by |
| 73 | + have : (Over.forget P ⊤ S).LocallyCoverDense |
| 74 | + (K.comap (CategoryTheory.Over.forget S)).toGrothendieck := by |
| 75 | + rw [← over_toGrothendieck_eq_toGrothendieck_comap_forget] |
| 76 | + exact MorphismProperty.locallyCoverDense_forget_of_le (S := S) K H |
| 77 | + rw [Precoverage.comap_comp] |
| 78 | + simp_rw [over_toGrothendieck_eq_toGrothendieck_comap_forget] |
| 79 | + apply Precoverage.toGrothendieck_comap_eq_inducedTopology |
| 80 | + intro X R hR |
| 81 | + obtain ⟨T, rfl⟩ := MorphismProperty.exists_map_eq_of_presieve K H hR |
| 82 | + simpa |
| 83 | + |
| 84 | +end CategoryTheory.MorphismProperty |
0 commit comments