@@ -16,15 +16,16 @@ Note properties of reflective functors relating to limits and colimits are inclu
1616`category_theory.monad.limits`.
1717-/
1818
19- universes v₁ v₂ u₁ u₂
19+ universes v₁ v₂ v₃ u₁ u₂ u₃
2020
2121noncomputable theory
2222
2323namespace category_theory
2424
25- open limits category
25+ open category adjunction limits
2626
27- variables {C : Type u₁} {D : Type u₂} [category.{v₁} C] [category.{v₂} D]
27+ variables {C : Type u₁} {D : Type u₂} {E : Type u₃}
28+ variables [category.{v₁} C] [category.{v₂} D] [category.{v₃} E]
2829
2930/--
3031A functor is *reflective* , or *a reflective inclusion* , if it is fully faithful and right adjoint.
@@ -38,10 +39,10 @@ For a reflective functor `i` (with left adjoint `L`), with unit `η`, we have `
3839-/
3940-- TODO: This holds more generally for idempotent adjunctions, not just reflective adjunctions.
4041lemma unit_obj_eq_map_unit [reflective i] (X : C) :
41- (adjunction. of_right_adjoint i).unit.app (i.obj ((left_adjoint i).obj X))
42- = i.map ((left_adjoint i).map ((adjunction. of_right_adjoint i).unit.app X)) :=
42+ (of_right_adjoint i).unit.app (i.obj ((left_adjoint i).obj X))
43+ = i.map ((left_adjoint i).map ((of_right_adjoint i).unit.app X)) :=
4344begin
44- rw [←cancel_mono (i.map ((adjunction. of_right_adjoint i).counit.app ((left_adjoint i).obj X))),
45+ rw [←cancel_mono (i.map ((of_right_adjoint i).counit.app ((left_adjoint i).obj X))),
4546 ←i.map_comp],
4647 simp,
4748end
@@ -53,12 +54,12 @@ More generally this applies to objects essentially in the reflective subcategory
5354`functor.ess_image.unit_iso`.
5455-/
5556instance is_iso_unit_obj [reflective i] {B : D} :
56- is_iso ((adjunction. of_right_adjoint i).unit.app (i.obj B)) :=
57+ is_iso ((of_right_adjoint i).unit.app (i.obj B)) :=
5758begin
58- have : (adjunction. of_right_adjoint i).unit.app (i.obj B) =
59- inv (i.map ((adjunction. of_right_adjoint i).counit.app B)),
59+ have : (of_right_adjoint i).unit.app (i.obj B) =
60+ inv (i.map ((of_right_adjoint i).counit.app B)),
6061 { rw ← comp_hom_eq_id,
61- apply (adjunction. of_right_adjoint i).right_triangle_components },
62+ apply (of_right_adjoint i).right_triangle_components },
6263 rw this ,
6364 exact is_iso.inv_is_iso,
6465end
@@ -71,10 +72,10 @@ reflection of `A`, with the isomorphism as `η_A`.
7172(For any `B` in the reflective subcategory, we automatically have that `ε_B` is an iso.)
7273-/
7374lemma functor.ess_image.unit_is_iso [reflective i] {A : C} (h : A ∈ i.ess_image) :
74- is_iso ((adjunction. of_right_adjoint i).unit.app A) :=
75+ is_iso ((of_right_adjoint i).unit.app A) :=
7576begin
76- suffices : (adjunction. of_right_adjoint i).unit.app A =
77- h.get_iso.inv ≫ (adjunction. of_right_adjoint i).unit.app (i.obj h.witness) ≫
77+ suffices : (of_right_adjoint i).unit.app A =
78+ h.get_iso.inv ≫ (of_right_adjoint i).unit.app (i.obj h.witness) ≫
7879 (left_adjoint i ⋙ i).map h.get_iso.hom,
7980 { rw this ,
8081 apply_instance },
8485
8586/-- If `η_A` is an isomorphism, then `A` is in the essential image of `i`. -/
8687lemma mem_ess_image_of_unit_is_iso [is_right_adjoint i] (A : C)
87- [is_iso ((adjunction. of_right_adjoint i).unit.app A)] : A ∈ i.ess_image :=
88- ⟨(left_adjoint i).obj A, ⟨(as_iso ((adjunction. of_right_adjoint i).unit.app A)).symm⟩⟩
88+ [is_iso ((of_right_adjoint i).unit.app A)] : A ∈ i.ess_image :=
89+ ⟨(left_adjoint i).obj A, ⟨(as_iso ((of_right_adjoint i).unit.app A)).symm⟩⟩
8990
9091/-- If `η_A` is a split monomorphism, then `A` is in the reflective subcategory. -/
9192lemma mem_ess_image_of_unit_split_mono [reflective i] {A : C}
92- [split_mono ((adjunction. of_right_adjoint i).unit.app A)] : A ∈ i.ess_image :=
93+ [split_mono ((of_right_adjoint i).unit.app A)] : A ∈ i.ess_image :=
9394begin
94- let η : 𝟭 C ⟶ left_adjoint i ⋙ i := (adjunction. of_right_adjoint i).unit,
95+ let η : 𝟭 C ⟶ left_adjoint i ⋙ i := (of_right_adjoint i).unit,
9596 haveI : is_iso (η.app (i.obj ((left_adjoint i).obj A))) := (i.obj_mem_ess_image _).unit_is_iso,
9697 have : epi (η.app A),
9798 { apply epi_of_epi (retraction (η.app A)) _,
@@ -102,11 +103,54 @@ begin
102103 exact mem_ess_image_of_unit_is_iso A,
103104end
104105
105- universes v₃ u₃
106- variables {E : Type u₃} [category.{v₃} E]
107-
108106/-- Composition of reflective functors. -/
109107instance reflective.comp (F : C ⥤ D) (G : D ⥤ E) [Fr : reflective F] [Gr : reflective G] :
110108 reflective (F ⋙ G) := { to_faithful := faithful.comp F G, }
111109
110+ /-- (Implementation) Auxiliary definition for `unit_comp_partial_bijective`. -/
111+ def unit_comp_partial_bijective_aux [reflective i] (A : C) (B : D) :
112+ (A ⟶ i.obj B) ≃ (i.obj ((left_adjoint i).obj A) ⟶ i.obj B) :=
113+ ((adjunction.of_right_adjoint i).hom_equiv _ _).symm.trans (equiv_of_fully_faithful i)
114+
115+ /-- The description of the inverse of the bijection `unit_comp_partial_bijective_aux`. -/
116+ lemma unit_comp_partial_bijective_aux_symm_apply [reflective i] {A : C} {B : D}
117+ (f : i.obj ((left_adjoint i).obj A) ⟶ i.obj B) :
118+ (unit_comp_partial_bijective_aux _ _).symm f = (of_right_adjoint i).unit.app A ≫ f :=
119+ by simp [unit_comp_partial_bijective_aux]
120+
121+ /--
122+ If `i` has a reflector `L`, then the function `(i.obj (L.obj A) ⟶ B) → (A ⟶ B)` given by
123+ precomposing with `η.app A` is a bijection provided `B` is in the essential image of `i`.
124+ That is, the function `λ (f : i.obj (L.obj A) ⟶ B), η.app A ≫ f` is bijective, as long as `B` is in
125+ the essential image of `i`.
126+ This definition gives an equivalence: the key property that the inverse can be described
127+ nicely is shown in `unit_comp_partial_bijective_symm_apply`.
128+
129+ This establishes there is a natural bijection `(A ⟶ B) ≃ (i.obj (L.obj A) ⟶ B)`. In other words,
130+ from the point of view of objects in `D`, `A` and `i.obj (L.obj A)` look the same: specifically
131+ that `η.app A` is an isomorphism.
132+ -/
133+ def unit_comp_partial_bijective [reflective i] (A : C) {B : C} (hB : B ∈ i.ess_image) :
134+ (A ⟶ B) ≃ (i.obj ((left_adjoint i).obj A) ⟶ B) :=
135+ calc (A ⟶ B) ≃ (A ⟶ i.obj hB.witness) : iso.hom_congr (iso.refl _) hB.get_iso.symm
136+ ... ≃ (i.obj _ ⟶ i.obj hB.witness) : unit_comp_partial_bijective_aux _ _
137+ ... ≃ (i.obj ((left_adjoint i).obj A) ⟶ B) : iso.hom_congr (iso.refl _) hB.get_iso
138+
139+ @[simp]
140+ lemma unit_comp_partial_bijective_symm_apply [reflective i] (A : C) {B : C}
141+ (hB : B ∈ i.ess_image) (f) :
142+ (unit_comp_partial_bijective A hB).symm f = (of_right_adjoint i).unit.app A ≫ f :=
143+ by simp [unit_comp_partial_bijective, unit_comp_partial_bijective_aux_symm_apply]
144+
145+ lemma unit_comp_partial_bijective_symm_natural [reflective i] (A : C) {B B' : C} (h : B ⟶ B')
146+ (hB : B ∈ i.ess_image) (hB' : B' ∈ i.ess_image) (f : i.obj ((left_adjoint i).obj A) ⟶ B) :
147+ (unit_comp_partial_bijective A hB').symm (f ≫ h) =
148+ (unit_comp_partial_bijective A hB).symm f ≫ h :=
149+ by simp
150+
151+ lemma unit_comp_partial_bijective_natural [reflective i] (A : C) {B B' : C} (h : B ⟶ B')
152+ (hB : B ∈ i.ess_image) (hB' : B' ∈ i.ess_image) (f : A ⟶ B) :
153+ (unit_comp_partial_bijective A hB') (f ≫ h) = unit_comp_partial_bijective A hB f ≫ h :=
154+ by rw [←equiv.eq_symm_apply, unit_comp_partial_bijective_symm_natural A h, equiv.symm_apply_apply]
155+
112156end category_theory
0 commit comments