@@ -89,12 +89,6 @@ theorem Functor.essImage.unit_isIso [Reflective i] {A : C} (h : A ∈ i.essImage
89
89
rwa [isIso_unit_app_iff_mem_essImage]
90
90
#align category_theory.functor.ess_image.unit_is_iso CategoryTheory.Functor.essImage.unit_isIso
91
91
92
- /-- If `η_A` is an isomorphism, then `A` is in the essential image of `i`. -/
93
- theorem mem_essImage_of_unit_isIso {L : C ⥤ D} (adj : L ⊣ i) (A : C)
94
- [IsIso (adj.unit.app A)] : A ∈ i.essImage :=
95
- ⟨L.obj A, ⟨(asIso (adj.unit.app A)).symm⟩⟩
96
- #align category_theory.mem_ess_image_of_unit_is_iso CategoryTheory.mem_essImage_of_unit_isIso
97
-
98
92
/-- If `η_A` is a split monomorphism, then `A` is in the reflective subcategory. -/
99
93
theorem mem_essImage_of_unit_isSplitMono [Reflective i] {A : C}
100
94
[IsSplitMono ((reflectorAdjunction i).unit.app A)] : A ∈ i.essImage := by
@@ -106,7 +100,7 @@ theorem mem_essImage_of_unit_isSplitMono [Reflective i] {A : C}
106
100
rw [show retraction _ ≫ η.app A = _ from η.naturality (retraction (η.app A))]
107
101
apply epi_comp (η.app (i.obj ((reflector i).obj A)))
108
102
haveI := isIso_of_epi_of_isSplitMono (η.app A)
109
- exact mem_essImage_of_unit_isIso (reflectorAdjunction i) A
103
+ exact (reflectorAdjunction i).mem_essImage_of_unit_isIso A
110
104
#align category_theory.mem_ess_image_of_unit_is_split_mono CategoryTheory.mem_essImage_of_unit_isSplitMono
111
105
112
106
/-- Composition of reflective functors. -/
@@ -228,4 +222,63 @@ def equivEssImageOfReflective [Reflective i] : D ≌ i.EssImageSubcategory where
228
222
aesop_cat
229
223
#align category_theory.equiv_ess_image_of_reflective CategoryTheory.equivEssImageOfReflective
230
224
225
+ /--
226
+ A functor is *coreflective* , or *a coreflective inclusion* , if it is fully faithful and left
227
+ adjoint.
228
+ -/
229
+ class Coreflective (L : C ⥤ D) extends L.Full, L.Faithful where
230
+ /-- a choice of a right adjoint to `L` -/
231
+ R : D ⥤ C
232
+ /-- `L` is a left adjoint -/
233
+ adj : L ⊣ R
234
+
235
+ variable (j : C ⥤ D)
236
+
237
+ /-- The coreflector `D ⥤ C` when `L : C ⥤ D` is coreflective. -/
238
+ def coreflector [Coreflective j] : D ⥤ C := Coreflective.R (L := j)
239
+
240
+ /-- The adjunction `j ⊣ coreflector j` when `j` is coreflective. -/
241
+ def coreflectorAdjunction [Coreflective j] : j ⊣ coreflector j := Coreflective.adj
242
+
243
+ instance [Coreflective j] : j.IsLeftAdjoint := ⟨_, ⟨coreflectorAdjunction j⟩⟩
244
+
245
+ instance [Coreflective j] : (coreflector j).IsRightAdjoint := ⟨_, ⟨coreflectorAdjunction j⟩⟩
246
+
247
+ /-- A coreflective functor is fully faithful. -/
248
+ def Functor.fullyFaithfulOfCoreflective [Coreflective j] : j.FullyFaithful :=
249
+ (coreflectorAdjunction j).fullyFaithfulLOfIsIsoUnit
250
+
251
+ lemma counit_obj_eq_map_counit [Coreflective j] (X : D) :
252
+ (coreflectorAdjunction j).counit.app (j.obj ((coreflector j).obj X)) =
253
+ j.map ((coreflector j).map ((coreflectorAdjunction j).counit.app X)) := by
254
+ rw [← cancel_epi (j.map ((coreflectorAdjunction j).unit.app ((coreflector j).obj X))),
255
+ ← j.map_comp]
256
+ simp
257
+
258
+ example [Coreflective j] {B : C} : IsIso ((coreflectorAdjunction j).counit.app (j.obj B)) :=
259
+ inferInstance
260
+
261
+ variable {j}
262
+
263
+ lemma Functor.essImage.counit_isIso [Coreflective j] {A : D} (h : A ∈ j.essImage) :
264
+ IsIso ((coreflectorAdjunction j).counit.app A) := by
265
+ rwa [isIso_counit_app_iff_mem_essImage]
266
+
267
+ lemma mem_essImage_of_counit_isSplitEpi [Coreflective j] {A : D}
268
+ [IsSplitEpi ((coreflectorAdjunction j).counit.app A)] : A ∈ j.essImage := by
269
+ let ε : coreflector j ⋙ j ⟶ 𝟭 D := (coreflectorAdjunction j).counit
270
+ haveI : IsIso (ε.app (j.obj ((coreflector j).obj A))) :=
271
+ Functor.essImage.counit_isIso ((j.obj_mem_essImage _))
272
+ have : Mono (ε.app A) := by
273
+ refine @mono_of_mono _ _ _ _ _ (ε.app A) (section_ (ε.app A)) ?_
274
+ rw [show ε.app A ≫ section_ _ = _ from (ε.naturality (section_ (ε.app A))).symm]
275
+ apply mono_comp _ (ε.app (j.obj ((coreflector j).obj A)))
276
+ haveI := isIso_of_mono_of_isSplitEpi (ε.app A)
277
+ exact (coreflectorAdjunction j).mem_essImage_of_counit_isIso A
278
+
279
+ instance Coreflective.comp (F : C ⥤ D) (G : D ⥤ E) [Coreflective F] [Coreflective G] :
280
+ Coreflective (F ⋙ G) where
281
+ R := coreflector G ⋙ coreflector F
282
+ adj := (coreflectorAdjunction F).comp (coreflectorAdjunction G)
283
+
231
284
end CategoryTheory
0 commit comments