Skip to content

Commit 95eb170

Browse files
committed
feat(CategoryTheory/Sites): morphism property induced by precoverage (leanprover-community#40529)
We define the weakest morphism property satisfied by all morphisms in covering families of a given precoverage. This provides a left-adjoint to the existing `Precoverage.morphismProperty`. This is useful when talking about morphism properties local on the source.
1 parent d292472 commit 95eb170

1 file changed

Lines changed: 58 additions & 1 deletion

File tree

Mathlib/CategoryTheory/Sites/MorphismProperty.lean

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ lemma ofArrows_mem_precoverage {X : C} {ι : Type*} {Y : ι → C} {f : ∀ i, Y
4646
.ofArrows Y f ∈ precoverage P X ↔ ∀ i, P (f i) :=
4747
fun h i ↦ h ⟨i⟩, fun h _ g ⟨i⟩ ↦ h i⟩
4848

49+
@[simp, grind =]
50+
lemma singleton_mem_precoverage {X Y : C} (f : X ⟶ Y) :
51+
.singleton f ∈ precoverage P Y ↔ P f := by
52+
simp [← Presieve.ofArrows_pUnit.{_, _, 0}]
53+
4954
instance [P.ContainsIdentities] [P.RespectsIso] : P.precoverage.HasIsos where
5055
mem_coverings_of_isIso f _ _ _ := fun ⟨⟩ ↦ P.of_isIso f
5156

@@ -145,4 +150,56 @@ end
145150

146151
end HasPullbacks
147152

148-
end CategoryTheory.MorphismProperty
153+
end MorphismProperty
154+
155+
/-- The weakest morphism property satisfied by all morphisms in covering families. -/
156+
def Precoverage.morphismProperty (K : Precoverage C) : MorphismProperty C :=
157+
fun _ Y f ↦ ∃ R ∈ K Y, R f
158+
159+
@[simp]
160+
lemma MorphismProperty.morphismProperty_precoverage (P : MorphismProperty C) :
161+
P.precoverage.morphismProperty = P := by
162+
ext X Y f
163+
exact ⟨fun ⟨R, hR, hf⟩ ↦ hR hf, fun hf ↦ ⟨.singleton f, by simpa⟩⟩
164+
165+
namespace Precoverage
166+
167+
variable {K L : Precoverage C} {P : MorphismProperty C}
168+
169+
lemma morphismProperty_le_iff_le_precoverage :
170+
K.morphismProperty ≤ P ↔ K ≤ P.precoverage :=
171+
fun hle _ R hR _ _ hf ↦ hle _ ⟨R, hR, hf⟩, fun hle _ _ _ ⟨_, hR, hf⟩ ↦ hle _ hR hf⟩
172+
173+
lemma galoisConnection_morphismProperty_precoverage :
174+
GaloisConnection (Precoverage.morphismProperty (C := C)) MorphismProperty.precoverage :=
175+
@Precoverage.morphismProperty_le_iff_le_precoverage _ _
176+
177+
lemma monotone_morphismProperty : Monotone (Precoverage.morphismProperty (C := C)) :=
178+
Precoverage.galoisConnection_morphismProperty_precoverage.monotone_l
179+
180+
lemma le_precoverage_morphismProperty : K ≤ K.morphismProperty.precoverage :=
181+
galoisConnection_morphismProperty_precoverage.le_u_l _
182+
183+
@[simp]
184+
lemma morphismProperty_bot : (⊥ : Precoverage C).morphismProperty = ⊥ :=
185+
Precoverage.galoisConnection_morphismProperty_precoverage.l_bot
186+
187+
@[simp]
188+
lemma morphismProperty_sup : (K ⊔ L).morphismProperty = K.morphismProperty ⊔ L.morphismProperty :=
189+
Precoverage.galoisConnection_morphismProperty_precoverage.l_sup
190+
191+
instance [K.HasIsos] : K.morphismProperty.ContainsIdentities where
192+
id_mem X := ⟨.singleton (𝟙 X), K.mem_coverings_of_isIso _, by simp⟩
193+
194+
@[simp, grind .]
195+
lemma ZeroHypercover.morphismProperty {X : C} {E : ZeroHypercover.{w} K X} (i : E.I₀) :
196+
K.morphismProperty (E.f i) :=
197+
⟨_, E.mem₀, ⟨i⟩⟩
198+
199+
end Precoverage
200+
201+
@[simp]
202+
lemma MorphismProperty.precoverage_top : (⊤ : MorphismProperty C).precoverage = ⊤ :=
203+
Precoverage.galoisConnection_morphismProperty_precoverage.u_top
204+
205+
end CategoryTheory

0 commit comments

Comments
 (0)