Skip to content

Commit 20856f0

Browse files
committed
feat(CategoryTheory/Shift): more compatibilities for NatTrans.CommShift (#14187)
In this file, we show various compatibilities for the commutation of natural transformations with shifts. In particular, if `F`, `G`, `H` are composable functors which commute with shifts on the categories, then the associator isomorphism `(F ⋙ G) ⋙ H ≅ F ⋙ (G ⋙ H)` commutes with the shifts.
1 parent 8c7bc12 commit 20856f0

File tree

1 file changed

+62
-4
lines changed

1 file changed

+62
-4
lines changed

Mathlib/CategoryTheory/Shift/CommShift.lean

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,14 @@ instance comp [F.CommShift A] [G.CommShift A] : (F ⋙ G).CommShift A where
170170

171171
end CommShift
172172

173+
@[simp]
174+
lemma commShiftIso_id_hom_app (a : A) (X : C) :
175+
(commShiftIso (𝟭 C) a).hom.app X = 𝟙 _ := comp_id _
176+
177+
@[simp]
178+
lemma commShiftIso_id_inv_app (a : A) (X : C) :
179+
(commShiftIso (𝟭 C) a).inv.app X = 𝟙 _ := comp_id _
180+
173181
lemma commShiftIso_comp_hom_app [F.CommShift A] [G.CommShift A] (a : A) (X : C) :
174182
(commShiftIso (F ⋙ G) a).hom.app X =
175183
G.map ((commShiftIso F a).hom.app X) ≫ (commShiftIso G a).hom.app (F.obj X) := by
@@ -228,12 +236,12 @@ end Functor
228236

229237
namespace NatTrans
230238

231-
variable {C D E : Type*} [Category C] [Category D] [Category E]
239+
variable {C D E J : Type*} [Category C] [Category D] [Category E] [Category J]
232240
{F₁ F₂ F₃ : C ⥤ D} (τ : F₁ ⟶ F₂) (τ' : F₂ ⟶ F₃) (e : F₁ ≅ F₂)
233-
(G G' : D ⥤ E) (τ'' : G ⟶ G')
234-
(A : Type*) [AddMonoid A] [HasShift C A] [HasShift D A] [HasShift E A]
241+
(G G' : D ⥤ E) (τ'' : G ⟶ G') (H : E ⥤ J)
242+
(A : Type*) [AddMonoid A] [HasShift C A] [HasShift D A] [HasShift E A] [HasShift J A]
235243
[F₁.CommShift A] [F₂.CommShift A] [F₃.CommShift A]
236-
[G.CommShift A] [G'.CommShift A]
244+
[G.CommShift A] [G'.CommShift A] [H.CommShift A]
237245

238246
/-- If `τ : F₁ ⟶ F₂` is a natural transformation between two functors
239247
which commute with a shift by an additive monoid `A`, this typeclass
@@ -315,6 +323,15 @@ instance whiskerLeft [NatTrans.CommShift τ'' A] :
315323
simp only [Functor.comp_obj, comp_app, whiskerRight_app, whiskerLeft_app, whiskerLeft_twice,
316324
Functor.commShiftIso_comp_hom_app, Category.assoc, ← NatTrans.naturality_assoc, comm_app]⟩
317325

326+
instance associator : CommShift (Functor.associator F₁ G H).hom A where
327+
comm' a := by ext X; simp [Functor.commShiftIso_comp_hom_app]
328+
329+
instance leftUnitor : CommShift F₁.leftUnitor.hom A where
330+
comm' a := by ext X; simp [Functor.commShiftIso_comp_hom_app]
331+
332+
instance rightUnitor : CommShift F₁.rightUnitor.hom A where
333+
comm' a := by ext X; simp [Functor.commShiftIso_comp_hom_app]
334+
318335
end CommShift
319336

320337
end NatTrans
@@ -360,4 +377,45 @@ end CommShift
360377

361378
end Functor
362379

380+
/--
381+
Assume that we have a diagram of categories
382+
```
383+
C₁ ⥤ D₁
384+
‖ ‖
385+
v v
386+
C₂ ⥤ D₂
387+
‖ ‖
388+
v v
389+
C₃ ⥤ D₃
390+
```
391+
with functors `F₁₂ : C₁ ⥤ C₂`, `F₂₃ : C₂ ⥤ C₃` and `F₁₃ : C₁ ⥤ C₃` on the first
392+
column that are related by a natural transformation `α : F₁₃ ⟶ F₁₂ ⋙ F₂₃`
393+
and similarly `β : G₁₂ ⋙ G₂₃ ⟶ G₁₃` on the second column. Assume that we have
394+
natural transformations
395+
`e₁₂ : F₁₂ ⋙ L₂ ⟶ L₁ ⋙ G₁₂` (top square), `e₂₃ : F₂₃ ⋙ L₃ ⟶ L₂ ⋙ G₂₃` (bottom square),
396+
and `e₁₃ : F₁₃ ⋙ L₃ ⟶ L₁ ⋙ G₁₃` (outer square), where the horizontal functors
397+
are denoted `L₁`, `L₂` and `L₃`. Assume that `e₁₃` is determined by the other
398+
natural transformations `α`, `e₂₃`, `e₁₂` and `β`. Then, if all these categories
399+
are equipped with a shift by an additive monoid `A`, and all these functors commute with
400+
these shifts, then the natural transformation `e₁₃` of the outer square commutes with the
401+
shift if all `α`, `e₂₃`, `e₁₂` and `β` do. -/
402+
lemma NatTrans.CommShift.verticalComposition {C₁ C₂ C₃ D₁ D₂ D₃ : Type*}
403+
[Category C₁] [Category C₂] [Category C₃] [Category D₁] [Category D₂] [Category D₃]
404+
{F₁₂ : C₁ ⥤ C₂} {F₂₃ : C₂ ⥤ C₃} {F₁₃ : C₁ ⥤ C₃} (α : F₁₃ ⟶ F₁₂ ⋙ F₂₃)
405+
{G₁₂ : D₁ ⥤ D₂} {G₂₃ : D₂ ⥤ D₃} {G₁₃ : D₁ ⥤ D₃} (β : G₁₂ ⋙ G₂₃ ⟶ G₁₃)
406+
{L₁ : C₁ ⥤ D₁} {L₂ : C₂ ⥤ D₂} {L₃ : C₃ ⥤ D₃}
407+
(e₁₂ : F₁₂ ⋙ L₂ ⟶ L₁ ⋙ G₁₂) (e₂₃ : F₂₃ ⋙ L₃ ⟶ L₂ ⋙ G₂₃) (e₁₃ : F₁₃ ⋙ L₃ ⟶ L₁ ⋙ G₁₃)
408+
(A : Type*) [AddMonoid A] [HasShift C₁ A] [HasShift C₂ A] [HasShift C₃ A]
409+
[HasShift D₁ A] [HasShift D₂ A] [HasShift D₃ A]
410+
[F₁₂.CommShift A] [F₂₃.CommShift A] [F₁₃.CommShift A] [CommShift α A]
411+
[G₁₂.CommShift A] [G₂₃.CommShift A] [G₁₃.CommShift A] [CommShift β A]
412+
[L₁.CommShift A] [L₂.CommShift A] [L₃.CommShift A]
413+
[CommShift e₁₂ A] [CommShift e₂₃ A]
414+
(h₁₃ : e₁₃ = CategoryTheory.whiskerRight α L₃ ≫ (Functor.associator _ _ _).hom ≫
415+
CategoryTheory.whiskerLeft F₁₂ e₂₃ ≫ (Functor.associator _ _ _).inv ≫
416+
CategoryTheory.whiskerRight e₁₂ G₂₃ ≫ (Functor.associator _ _ _).hom ≫
417+
CategoryTheory.whiskerLeft L₁ β): CommShift e₁₃ A := by
418+
subst h₁₃
419+
infer_instance
420+
363421
end CategoryTheory

0 commit comments

Comments
 (0)