Documentation

Mathlib.CategoryTheory.Bicategory.Functor.StrictPseudofunctor

Strict pseudofunctors #

In this file we introduce the notion of strict pseudofunctors, which are pseudofunctors such that mapId and mapComp are given by eqToIso _.

To a strict pseudofunctor between strict bicategories we can associate a functor between the underlying categories, see StrictPseudofunctor.toFunctor.

TODO #

Once the deprecated Functor/Strict.lean is removed we should rename this file to Functor/Strict.lean.

structure CategoryTheory.StrictPseudofunctor (B : Type u₁) [Bicategory B] (C : Type u₂) [Bicategory C] extends CategoryTheory.StrictlyUnitaryPseudofunctor B C :
Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

A strict pseudofunctor F between bicategories B and C is a pseudofunctor F from B to C such that mapId and mapComp are given by eqToIso _.

Instances For
    structure CategoryTheory.StrictPseudofunctorPreCore (B : Type u₁) [Bicategory B] (C : Type u₂) [Bicategory C] extends CategoryTheory.PrelaxFunctor B C :
    Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

    A helper structure that bundles the necessary data to construct a StrictPseudofunctor.

    StrictPseudofunctorPreCore does not construct a Pseudofunctor in general, since it does not include the compatibility conditoins on the associator and unitors. However, when the underlying bicategories are strict, a StrictPseudofunctorPreCore does induce a StrictPseudofunctor.

    Instances For
      structure CategoryTheory.StrictPseudofunctorCore (B : Type u₁) [Bicategory B] (C : Type u₂) [Bicategory C] extends CategoryTheory.StrictPseudofunctorPreCore B C :
      Type (max (max (max (max (max u₁ u₂) v₁) v₂) w₁) w₂)

      A helper structure that bundles the necessary data to construct a StrictPseudofunctor without specifying the redundant fields mapId and mapComp.

      Instances For

        An alternate constructor for strictly unitary lax functors that does not require the mapId or mapComp fields, and that adapts the compatability conditions to the fact that the pseudofunctor is strict

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.StrictPseudofunctor.mk'_map {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (S : StrictPseudofunctorCore B C) {X✝ Y✝ : B} (a✝ : X✝ Y✝) :
          (mk' S).map a✝ = S.map a✝
          @[simp]
          theorem CategoryTheory.StrictPseudofunctor.mk'_obj {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (S : StrictPseudofunctorCore B C) (a✝ : B) :
          (mk' S).obj a✝ = S.obj a✝
          @[simp]
          theorem CategoryTheory.StrictPseudofunctor.mk'_map₂ {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (S : StrictPseudofunctorCore B C) {a✝ b✝ : B} {f✝ g✝ : a✝ b✝} (a✝¹ : f✝ g✝) :
          (mk' S).map₂ a✝¹ = S.map₂ a✝¹
          @[simp]
          theorem CategoryTheory.StrictPseudofunctor.mk'_mapComp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (S : StrictPseudofunctorCore B C) {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
          (mk' S).mapComp f g = eqToIso
          @[simp]
          theorem CategoryTheory.StrictPseudofunctor.mk'_mapId {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] (S : StrictPseudofunctorCore B C) (x : B) :
          (mk' S).mapId x = eqToIso

          The identity StrictPseudofunctor.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.StrictPseudofunctor.id_mapComp_hom (B : Type u₁) [Bicategory B] {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
            @[simp]
            theorem CategoryTheory.StrictPseudofunctor.id_map (B : Type u₁) [Bicategory B] {X✝ Y✝ : B} (f : X✝ Y✝) :
            (id B).map f = f
            @[simp]
            theorem CategoryTheory.StrictPseudofunctor.id_mapComp_inv (B : Type u₁) [Bicategory B] {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
            @[simp]
            theorem CategoryTheory.StrictPseudofunctor.id_map₂ (B : Type u₁) [Bicategory B] {a✝ b✝ : B} {f✝ g✝ : a✝ b✝} (η : f✝ g✝) :
            (id B).map₂ η = η
            @[simp]
            theorem CategoryTheory.StrictPseudofunctor.id_obj (B : Type u₁) [Bicategory B] (X : B) :
            (id B).obj X = X

            Composition of StrictPseudofunctor.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_map₂ {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) {a✝ b✝ : B} {f✝ g✝ : a✝ b✝} (η : f✝ g✝) :
              (F.comp G).map₂ η = G.map₂ (F.map₂ η)
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_mapComp_inv {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
              ((F.comp G).mapComp f g).inv = CategoryStruct.comp (G.mapComp (F.map f) (F.map g)).inv (G.map₂ (F.mapComp f g).inv)
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_mapComp_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
              ((F.comp G).mapComp f g).hom = CategoryStruct.comp (G.map₂ (F.mapComp f g).hom) (G.mapComp (F.map f) (F.map g)).hom
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_map {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) {X✝ Y✝ : B} (f : X✝ Y✝) :
              (F.comp G).map f = G.map (F.map f)
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_mapId_hom {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) (a : B) :
              ((F.comp G).mapId a).hom = CategoryStruct.comp (G.map₂ (F.mapId a).hom) (G.mapId (F.obj a)).hom
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_mapId_inv {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) (a : B) :
              ((F.comp G).mapId a).inv = CategoryStruct.comp (G.mapId (F.obj a)).inv (G.map₂ (F.mapId a).inv)
              @[simp]
              theorem CategoryTheory.StrictPseudofunctor.comp_obj {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] {D : Type u₃} [Bicategory D] (F : StrictPseudofunctor B C) (G : StrictPseudofunctor C D) (X : B) :
              (F.comp G).obj X = G.obj (F.obj X)

              An alternate constructor for strict pseudofunctors between strict bicategories, that only requires the data bundled in StrictPseudofunctorPreCore.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem CategoryTheory.StrictPseudofunctor.mk''_map {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] [Bicategory.Strict B] [Bicategory.Strict C] (S : StrictPseudofunctorPreCore B C) {X✝ Y✝ : B} (a✝ : X✝ Y✝) :
                (mk'' S).map a✝ = S.map a✝
                @[simp]
                theorem CategoryTheory.StrictPseudofunctor.mk''_obj {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] [Bicategory.Strict B] [Bicategory.Strict C] (S : StrictPseudofunctorPreCore B C) (a✝ : B) :
                (mk'' S).obj a✝ = S.obj a✝
                @[simp]
                theorem CategoryTheory.StrictPseudofunctor.mk''_mapComp {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] [Bicategory.Strict B] [Bicategory.Strict C] (S : StrictPseudofunctorPreCore B C) {a✝ b✝ c✝ : B} (f : a✝ b✝) (g : b✝ c✝) :
                (mk'' S).mapComp f g = eqToIso
                @[simp]
                theorem CategoryTheory.StrictPseudofunctor.mk''_map₂ {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] [Bicategory.Strict B] [Bicategory.Strict C] (S : StrictPseudofunctorPreCore B C) {a✝ b✝ : B} {f✝ g✝ : a✝ b✝} (a✝¹ : f✝ g✝) :
                (mk'' S).map₂ a✝¹ = S.map₂ a✝¹

                A strict pseudofunctor between strict bicategories induces a functor on the underlying categories.

                Equations
                • F.toFunctor = { obj := F.obj, map := fun {X Y : B} => F.map, map_id := , map_comp := }
                Instances For
                  @[simp]
                  theorem CategoryTheory.StrictPseudofunctor.toFunctor_map {B : Type u₁} [Bicategory B] {C : Type u₂} [Bicategory C] [Bicategory.Strict B] [Bicategory.Strict C] (F : StrictPseudofunctor B C) {X✝ Y✝ : B} (a✝ : X✝ Y✝) :
                  F.toFunctor.map a✝ = F.map a✝
                  @[simp]