Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 0e09ada

Browse files
committed
feat(category_theory/is_connected): zigzag lemmas (#5024)
A few basic lemmas about connected categories and the zigzag relation
1 parent aff7727 commit 0e09ada

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

src/category_theory/is_connected.lean

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,37 @@ def zigzag : J → J → Prop := relation.refl_trans_gen zag
209209
lemma zigzag_symmetric : symmetric (@zigzag J _) :=
210210
relation.refl_trans_gen.symmetric zag_symmetric
211211

212+
lemma zigzag_equivalence : _root_.equivalence (@zigzag J _) :=
213+
mk_equivalence _
214+
relation.reflexive_refl_trans_gen
215+
zigzag_symmetric
216+
relation.transitive_refl_trans_gen
217+
218+
/--
219+
The setoid given by the equivalence relation `zigzag`. A quotient for this
220+
setoid is a connected component of the category.
221+
-/
222+
def zigzag.setoid (J : Type u₂) [category.{v₁} J] : setoid J :=
223+
{ r := zigzag,
224+
iseqv := zigzag_equivalence }
225+
226+
/--
227+
If there is a zigzag from `j₁` to `j₂`, then there is a zigzag from `F j₁` to
228+
`F j₂` as long as `F` is a functor.
229+
-/
230+
lemma zigzag_obj_of_zigzag (F : J ⥤ K) {j₁ j₂ : J} (h : zigzag j₁ j₂) :
231+
zigzag (F.obj j₁) (F.obj j₂) :=
232+
begin
233+
refine relation.refl_trans_gen_lift _ _ h,
234+
intros j k,
235+
exact or.imp (nonempty.map (λ f, F.map f)) (nonempty.map (λ f, F.map f))
236+
end
237+
238+
-- TODO: figure out the right way to generalise this to `zigzag`.
239+
lemma zag_of_zag_obj (F : J ⥤ K) [full F] {j₁ j₂ : J} (h : zag (F.obj j₁) (F.obj j₂)) :
240+
zag j₁ j₂ :=
241+
or.imp (nonempty.map F.preimage) (nonempty.map F.preimage) h
242+
212243
/-- Any equivalence relation containing (⟶) holds for all pairs of a connected category. -/
213244
lemma equiv_relation [is_connected J] (r : J → J → Prop) (hr : _root_.equivalence r)
214245
(h : ∀ {j₁ j₂ : J} (f : j₁ ⟶ j₂), r j₁ j₂) :
@@ -222,11 +253,7 @@ end
222253

223254
/-- In a connected category, any two objects are related by `zigzag`. -/
224255
lemma is_connected_zigzag [is_connected J] (j₁ j₂ : J) : zigzag j₁ j₂ :=
225-
equiv_relation _
226-
(mk_equivalence _
227-
relation.reflexive_refl_trans_gen
228-
(relation.refl_trans_gen.symmetric (λ _ _ _, by rwa [zag, or_comm]))
229-
relation.transitive_refl_trans_gen)
256+
equiv_relation _ zigzag_equivalence
230257
(λ _ _ f, relation.refl_trans_gen.single (or.inl (nonempty.intro f))) _ _
231258

232259
/--

0 commit comments

Comments
 (0)