@@ -303,6 +303,14 @@ lemma cofork.is_colimit.hom_ext {s : cofork f g} (hs : is_colimit s) {W : C} {k
303
303
(h : cofork.π s ≫ k = cofork.π s ≫ l) : k = l :=
304
304
hs.hom_ext $ cofork.coequalizer_ext _ h
305
305
306
+ @[simp] lemma fork.is_limit.lift_of_ι_ι {s : fork f g} (hs : is_limit s) {W : C}
307
+ {k : W ⟶ X} (hk : k ≫ f = k ≫ g) : hs.lift (fork.of_ι k hk) ≫ s.ι = k :=
308
+ hs.fac _ _
309
+
310
+ @[simp] lemma cofork.is_colimit.π_desc_of_π {s : cofork f g} (hs : is_colimit s) {W : C}
311
+ {k : Y ⟶ W} (hk : f ≫ k = g ≫ k) : s.π ≫ hs.desc (cofork.of_π k hk) = k :=
312
+ hs.fac _ _
313
+
306
314
/-- If `s` is a limit fork over `f` and `g`, then a morphism `k : W ⟶ X` satisfying
307
315
`k ≫ f = k ≫ g` induces a morphism `l : W ⟶ s.X` such that `l ≫ fork.ι s = k`. -/
308
316
def fork.is_limit.lift' {s : fork f g} (hs : is_limit s) {W : C} (k : W ⟶ X) (h : k ≫ f = k ≫ g) :
@@ -894,7 +902,6 @@ Here we build the cone, and show in `split_mono_equalizes` that it is a limit co
894
902
def cone_of_split_mono : cone (parallel_pair (𝟙 Y) (retraction f ≫ f)) :=
895
903
fork.of_ι f (by simp)
896
904
897
-
898
905
/--
899
906
A split mono `f` equalizes `(retraction f ≫ f)` and `(𝟙 Y)`.
900
907
-/
@@ -906,6 +913,31 @@ fork.is_limit.mk' _ $ λ s,
906
913
907
914
end
908
915
916
+ /-- We show that the converse to `split_mono_equalizes` is true:
917
+ Whenever `f` equalizes `(r ≫ f)` and `(𝟙 Y)`, then `r` is a retraction of `f`. -/
918
+ def split_mono_of_equalizer {X Y : C} {f : X ⟶ Y} {r : Y ⟶ X} (hr : f ≫ r ≫ f = f)
919
+ (h : is_limit (fork.of_ι f (hr.trans (category.comp_id _).symm : f ≫ r ≫ f = f ≫ 𝟙 Y))) :
920
+ split_mono f :=
921
+ { retraction := r,
922
+ id' := fork.is_limit.hom_ext h
923
+ ((category.assoc _ _ _).trans $ hr.trans (category.id_comp _).symm) }
924
+
925
+ /-- An equalizer of an idempotent morphism and the identity is split mono. -/
926
+ def split_mono_of_idempotent_of_is_limit_fork {X : C} {f : X ⟶ X} (hf : f ≫ f = f)
927
+ {c : fork f (𝟙 X)} (i : is_limit c) : split_mono c.ι :=
928
+ { retraction := i.lift (fork.of_ι f (by simp [hf])),
929
+ id' :=
930
+ begin
931
+ letI := mono_of_is_limit_parallel_pair i,
932
+ rw [← cancel_mono_id c.ι, category.assoc, fork.is_limit.lift_of_ι_ι, c.condition],
933
+ exact category.comp_id c.ι
934
+ end }
935
+
936
+ /-- The equalizer of an idempotent morphism and the identity is split mono. -/
937
+ def split_mono_of_idempotent_equalizer {X : C} {f : X ⟶ X} (hf : f ≫ f = f)
938
+ [has_equalizer f (𝟙 X)] : split_mono (equalizer.ι f (𝟙 X)) :=
939
+ split_mono_of_idempotent_of_is_limit_fork _ hf (limit.is_limit _)
940
+
909
941
section
910
942
-- In this section we show that a split epi `f` coequalizes `(f ≫ section_ f)` and `(𝟙 X)`.
911
943
variables {C} [split_epi f]
@@ -930,4 +962,29 @@ cofork.is_colimit.mk' _ $ λ s,
930
962
931
963
end
932
964
965
+ /-- We show that the converse to `split_epi_equalizes` is true:
966
+ Whenever `f` coequalizes `(f ≫ s)` and `(𝟙 X)`, then `s` is a section of `f`. -/
967
+ def split_epi_of_coequalizer {X Y : C} {f : X ⟶ Y} {s : Y ⟶ X} (hs : f ≫ s ≫ f = f)
968
+ (h : is_colimit (cofork.of_π f ((category.assoc _ _ _).trans $
969
+ hs.trans (category.id_comp f).symm : (f ≫ s) ≫ f = 𝟙 X ≫ f))) :
970
+ split_epi f :=
971
+ { section_ := s,
972
+ id' := cofork.is_colimit.hom_ext h (hs.trans (category.comp_id _).symm) }
973
+
974
+ /-- A coequalizer of an idempotent morphism and the identity is split epi. -/
975
+ def split_epi_of_idempotent_of_is_colimit_cofork {X : C} {f : X ⟶ X} (hf : f ≫ f = f)
976
+ {c : cofork f (𝟙 X)} (i : is_colimit c) : split_epi c.π :=
977
+ { section_ := i.desc (cofork.of_π f (by simp [hf])),
978
+ id' :=
979
+ begin
980
+ letI := epi_of_is_colimit_parallel_pair i,
981
+ rw [← cancel_epi_id c.π, ← category.assoc, cofork.is_colimit.π_desc_of_π, c.condition],
982
+ exact category.id_comp _,
983
+ end }
984
+
985
+ /-- The coequalizer of an idempotent morphism and the identity is split epi. -/
986
+ def split_epi_of_idempotent_coequalizer {X : C} {f : X ⟶ X} (hf : f ≫ f = f)
987
+ [has_coequalizer f (𝟙 X)] : split_epi (coequalizer.π f (𝟙 X)) :=
988
+ split_epi_of_idempotent_of_is_colimit_cofork _ hf (colimit.is_colimit _)
989
+
933
990
end category_theory.limits
0 commit comments