11/-
22Copyright (c) 2023 Yuma Mizuno. All rights reserved.
33Released under Apache 2.0 license as described in the file LICENSE.
4- Authors: Yuma Mizuno
4+ Authors: Yuma Mizuno, Fernando Chu
55-/
66module
77
8+ public import Mathlib.CategoryTheory.Bicategory.Functor.Pseudofunctor
9+ public import Mathlib.CategoryTheory.Bicategory.Functor.StrictPseudofunctor
810public import Mathlib.Tactic.CategoryTheory.Bicategory.Basic
911public import Mathlib.Tactic.CategoryTheory.BicategoricalComp
1012
@@ -22,6 +24,9 @@ identities. The 2-morphism `η` is called the unit and `ε` is called the counit
2224* `Bicategory.Equivalence.mkOfAdjointifyCounit`: construct an adjoint equivalence from
2325 2-isomorphisms
2426 `η : 𝟙 a ≅ f ≫ g` and `ε : g ≫ f ≅ 𝟙 b`, by upgrading `ε` to a counit.
27+ * `Pseudofunctor.mapAdjunction`: a pseudofunctor `F` carries an adjunction `f ⊣ g`
28+ between 1-morphisms to an adjunction `F.map f ⊣ F.map g`. An analogous definition is given
29+ for `StrictPseudofunctor`.
2530
2631 ## TODO
2732
@@ -34,15 +39,14 @@ identities. The 2-morphism `η` is called the unit and `ε` is called the counit
3439
3540namespace CategoryTheory
3641
37- namespace Bicategory
38-
39- open Category
42+ open Category Bicategory
4043
41- open scoped Bicategory
44+ universe w₁ w₂ v₁ v₂ u₁ u₂
4245
43- universe w v u
46+ variable {B : Type u₁} [Bicategory.{w₁, v₁} B] {C : Type u₂} [Bicategory.{w₂, v₂} C]
47+ {a b c : B} {f : a ⟶ b} {g : b ⟶ a}
4448
45- variable {B : Type u} [ Bicategory.{w, v} B] {a b c : B} {f : a ⟶ b} {g : b ⟶ a}
49+ namespace Bicategory
4650
4751/-- The 2-morphism defined by the following pasting diagram:
4852```
341345
342346end Bicategory
343347
348+ namespace Pseudofunctor
349+
350+ variable (F : Pseudofunctor B C) (adj : f ⊣ g)
351+
352+ lemma leftZigzag_map :
353+ leftZigzag ((F.mapId a).inv ≫ F.map₂ adj.unit ≫ (F.mapComp f g).hom)
354+ ((F.mapComp g f).inv ≫ F.map₂ adj.counit ≫ (F.mapId b).hom) =
355+ (F.mapId a).inv ▷ F.map f ⊗≫ (F.mapComp (𝟙 a) f).inv ≫
356+ F.map₂ (leftZigzag adj.unit adj.counit) ≫
357+ (F.mapComp f (𝟙 b)).hom ⊗≫ F.map f ◁ (F.mapId b).hom := by
358+ simp [leftZigzag, bicategoricalComp]
359+
360+ lemma rightZigzag_map :
361+ rightZigzag ((F.mapId a).inv ≫ F.map₂ adj.unit ≫ (F.mapComp f g).hom)
362+ ((F.mapComp g f).inv ≫ F.map₂ adj.counit ≫ (F.mapId b).hom) =
363+ F.map g ◁ (F.mapId a).inv ⊗≫ (F.mapComp g (𝟙 a)).inv ≫
364+ F.map₂ (rightZigzag adj.unit adj.counit) ≫
365+ (F.mapComp (𝟙 b) g).hom ⊗≫ (F.mapId b).hom ▷ F.map g := by
366+ simp [rightZigzag, bicategoricalComp, F.map₂_iso_inv]
367+
368+ /-- A pseudofunctor carries an adjunction `f ⊣ g` to an adjunction `F.map f ⊣ F.map g`. -/
369+ @[simps]
370+ def mapAdjunction : F.map f ⊣ F.map g where
371+ unit := (F.mapId a).inv ≫ F.map₂ adj.unit ≫ (F.mapComp f g).hom
372+ counit := (F.mapComp g f).inv ≫ F.map₂ adj.counit ≫ (F.mapId b).hom
373+ left_triangle := by simp [leftZigzag_map, bicategoricalComp, F.map₂_iso_inv]
374+ right_triangle := by simp [rightZigzag_map, bicategoricalComp, F.map₂_iso_inv]
375+
376+ end Pseudofunctor
377+
378+ namespace StrictPseudofunctor
379+
380+ variable (F : StrictPseudofunctor B C) (adj : f ⊣ g)
381+
382+ /-- A strict pseudofunctor carries an adjunction `f ⊣ g` to an adjunction
383+ `F.map f ⊣ F.map g`. -/
384+ @[simps!]
385+ def mapAdjunction : F.map f ⊣ F.map g := F.toPseudofunctor.mapAdjunction adj
386+
387+ lemma mapAdjunction_unit' :
388+ (F.mapAdjunction adj).unit =
389+ eqToHom (F.map_id a).symm ≫ F.map₂ adj.unit ≫ eqToHom (F.map_comp f g) := by
390+ simp [F.mapId_eq_eqToIso, F.mapComp_eq_eqToIso]
391+
392+ lemma mapAdjunction_counit' :
393+ (F.mapAdjunction adj).counit =
394+ eqToHom (F.map_comp g f).symm ≫ F.map₂ adj.counit ≫ eqToHom (F.map_id b) := by
395+ simp [F.mapId_eq_eqToIso, F.mapComp_eq_eqToIso]
396+
397+ end StrictPseudofunctor
398+
344399end CategoryTheory
0 commit comments