@@ -209,6 +209,37 @@ def zigzag : J → J → Prop := relation.refl_trans_gen zag
209209lemma zigzag_symmetric : symmetric (@zigzag J _) :=
210210relation.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. -/
213244lemma equiv_relation [is_connected J] (r : J → J → Prop ) (hr : _root_.equivalence r)
214245 (h : ∀ {j₁ j₂ : J} (f : j₁ ⟶ j₂), r j₁ j₂) :
222253
223254/-- In a connected category, any two objects are related by `zigzag`. -/
224255lemma 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