Skip to content

Commit 99382bd

Browse files
committed
feat(CategoryTheory): naturality lemmas for Core construction (#29284)
Lemmas for PR #29283 to prove that `Core` is the right adjoint to the forgetful functor from `Cat` to `Grpd`. These lemmas are more general than that setting, and need not be stated in the bundled format. - [ ] depends on: #29250 Co-authored-by: jlh18 <josephhua73@yahoo.com>
1 parent 10db008 commit 99382bd

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

Mathlib/CategoryTheory/Core.lean

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,27 @@ def coreId : (𝟭 C).core ≅ 𝟭 (Core C) := Iso.refl _
112112
def coreComp {E : Type u₃} [Category.{v₃} E] (F : C ⥤ D) (G : D ⥤ E) :
113113
(F ⋙ G).core ≅ F.core ⋙ G.core := Iso.refl _
114114

115+
/-- The natural isomorphism
116+
```
117+
F.core
118+
Core C ⥤ Core D
119+
inclusion C ‖ ‖ inclusion D
120+
V V
121+
C ⥤ D
122+
F
123+
```
124+
thought of as pseudonaturality of `inclusion`,
125+
when viewing `Core` as a pseudofunctor.
126+
-/
127+
@[simps!]
128+
def coreCompInclusionIso (F : C ⥤ D) :
129+
F.core ⋙ Core.inclusion D ≅ Core.inclusion C ⋙ F :=
130+
Iso.refl _
131+
132+
lemma core_comp_inclusion (F : C ⥤ D) :
133+
F.core ⋙ Core.inclusion D = Core.inclusion C ⋙ F :=
134+
Functor.ext_of_iso (coreCompInclusionIso F) (by cat_disch)
135+
115136
end Functor
116137

117138
namespace Iso
@@ -160,6 +181,44 @@ lemma coreAssociator {E : Type u₃} [Category.{v₃} E] {E' : Type u₄} [Categ
160181

161182
end Iso
162183

184+
namespace Core
185+
186+
variable {G : Type u₂} [Groupoid.{v₂} G]
187+
188+
/-- The functor `functorToCore (F ⋙ H)` factors through `functortoCore H`. -/
189+
def functorToCoreCompLeftIso {G' : Type u₃} [Groupoid.{v₃} G'] (H : G ⥤ C) (F : G' ⥤ G) :
190+
functorToCore (F ⋙ H) ≅ F ⋙ functorToCore H :=
191+
NatIso.ofComponents (fun _ ↦ Iso.refl _)
192+
193+
lemma functorToCore_comp_left {G' : Type u₃} [Groupoid.{v₃} G'] (H : G ⥤ C) (F : G' ⥤ G) :
194+
functorToCore (F ⋙ H) = F ⋙ functorToCore H :=
195+
Functor.ext_of_iso (functorToCoreCompLeftIso H F) (by cat_disch)
196+
197+
/-- The functor `functorToCore (H ⋙ F)` factors through `functorToCore H`. -/
198+
def functorToCoreCompRightIso {C' : Type u₄} [Category.{v₄} C'] (H : G ⥤ C) (F : C ⥤ C') :
199+
functorToCore (H ⋙ F) ≅ functorToCore H ⋙ F.core :=
200+
Iso.refl _
201+
202+
lemma functorToCore_comp_right {C' : Type u₄} [Category.{v₄} C'] (H : G ⥤ C) (F : C ⥤ C') :
203+
functorToCore (H ⋙ F) = functorToCore H ⋙ F.core :=
204+
Functor.ext_of_iso (functorToCoreCompRightIso H F) (by cat_disch)
205+
206+
/-- The functor `functorToCore (𝟭 G)` is a section of `inclusion G`. -/
207+
def inclusionCompFunctorToCoreIso : inclusion G ⋙ functorToCore (𝟭 G) ≅ 𝟭 (Core G) :=
208+
NatIso.ofComponents (fun _ ↦ Iso.refl _)
209+
210+
theorem inclusion_comp_functorToCore : inclusion G ⋙ functorToCore (𝟭 G) = 𝟭 (Core G) :=
211+
Functor.ext_of_iso inclusionCompFunctorToCoreIso (by cat_disch)
212+
213+
/-- The functor `functorToCore (inclusion C)` is isomorphic to the identity on `Core C`. -/
214+
def functorToCoreInclusionIso : functorToCore (inclusion C) ≅ 𝟭 (Core C) :=
215+
Iso.refl _
216+
217+
theorem functorToCore_inclusion : functorToCore (inclusion C) = 𝟭 (Core C) :=
218+
Functor.ext_of_iso functorToCoreInclusionIso (by cat_disch)
219+
220+
end Core
221+
163222
variable (D : Type u₂) [Category.{v₂} D]
164223

165224
namespace Equivalence

0 commit comments

Comments
 (0)