Documentation

Mathlib.CategoryTheory.Bicategory.Extension

Extensions and lifts in bicategories #

We introduce the concept of extensions and lifts within the bicategorical framework. These concepts are defined by commutative diagrams in the (1-)categorical context. Within the bicategorical framework, commutative diagrams are replaced by 2-morphisms. Depending on the orientation of the 2-morphisms, we define both left and right extensions (likewise for lifts). The use of left and right here is a common one in the theory of Kan extensions.

Implementation notes #

We define extensions and lifts as objects in certain comma categories (StructuredArrow for left, and CostructuredArrow for right). See the file CategoryTheory.StructuredArrow for properties about these categories. We introduce some intuitive aliases. For example, LeftExtension.extension is an alias for Comma.right.

References #

@[reducible, inline]
abbrev CategoryTheory.Bicategory.LeftExtension {B : Type u} [Bicategory B] {a b c : B} (f : a b) (g : a c) :
Type (max v w)

Triangle diagrams for (left) extensions.

  b
  △ \
  |   \ extension  △
f |     \          | unit
  |       ◿
  a - - - ▷ c
      g
Equations
Instances For
    @[reducible, inline]
    abbrev CategoryTheory.Bicategory.LeftExtension.extension {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) :
    b c

    The extension of g along f.

    Equations
    • t.extension = t.right
    Instances For
      @[reducible, inline]
      abbrev CategoryTheory.Bicategory.LeftExtension.unit {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) :
      g CategoryStruct.comp f t.extension

      The 2-morphism filling the triangle diagram.

      Equations
      • t.unit = t.hom
      Instances For
        @[reducible, inline]
        abbrev CategoryTheory.Bicategory.LeftExtension.mk {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (h : b c) (unit : g CategoryStruct.comp f h) :

        Construct a left extension from a 1-morphism and a 2-morphism.

        Equations
        Instances For
          @[reducible, inline]
          abbrev CategoryTheory.Bicategory.LeftExtension.homMk {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (η : s.extension t.extension) (w : CategoryStruct.comp s.unit (whiskerLeft f η) = t.unit := by aesop_cat) :
          s t

          To construct a morphism between left extensions, we need a 2-morphism between the extensions, and to check that it is compatible with the units.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.Bicategory.LeftExtension.w {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (η : s t) :
            CategoryStruct.comp s.unit (whiskerLeft f η.right) = t.unit
            @[simp]
            theorem CategoryTheory.Bicategory.LeftExtension.w_assoc {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (η : s t) {Z : a c} (h : CategoryStruct.comp f t.right Z) :

            Construct a left extension of g : a ⟶ c from a left extension of g ≫ 𝟙 c.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.Bicategory.LeftExtension.ofCompId_hom {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f (CategoryStruct.comp g (CategoryStruct.id c))) :
              t.ofCompId.hom = CategoryStruct.comp (rightUnitor g).inv t.unit
              @[simp]
              theorem CategoryTheory.Bicategory.LeftExtension.ofCompId_right {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f (CategoryStruct.comp g (CategoryStruct.id c))) :
              t.ofCompId.right = t.extension
              @[simp]
              theorem CategoryTheory.Bicategory.LeftExtension.ofCompId_left_as {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f (CategoryStruct.comp g (CategoryStruct.id c))) :
              t.ofCompId.left.as = PUnit.unit
              def CategoryTheory.Bicategory.LeftExtension.whisker {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) {x : B} (h : c x) :

              Whisker a 1-morphism to an extension.

                b
                △ \
                |   \ extension  △
              f |     \          | unit
                |       ◿
                a - - - ▷ c - - - ▷ x
                    g         h
              
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem CategoryTheory.Bicategory.LeftExtension.whisker_extension {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) {x : B} (h : c x) :
                (t.whisker h).extension = CategoryStruct.comp t.extension h
                @[simp]
                theorem CategoryTheory.Bicategory.LeftExtension.whisker_unit {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) {x : B} (h : c x) :
                (t.whisker h).unit = CategoryStruct.comp (whiskerRight t.unit h) (associator f t.extension h).hom
                def CategoryTheory.Bicategory.LeftExtension.whiskering {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {x : B} (h : c x) :

                Whiskering a 1-morphism is a functor.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem CategoryTheory.Bicategory.LeftExtension.whiskering_map {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {x : B} (h : c x) {X✝ Y✝ : LeftExtension f g} (η : X✝ Y✝) :
                  (whiskering h).map η = homMk (whiskerRight η.right h)
                  @[simp]
                  theorem CategoryTheory.Bicategory.LeftExtension.whiskering_obj {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {x : B} (h : c x) (t : LeftExtension f g) :
                  (whiskering h).obj t = t.whisker h
                  def CategoryTheory.Bicategory.LeftExtension.whiskerIdCancel {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (s : LeftExtension f (CategoryStruct.comp g (CategoryStruct.id c))) {t : LeftExtension f g} (τ : s t.whisker (CategoryStruct.id c)) :
                  s.ofCompId t

                  Define a morphism between left extensions by cancelling the whiskered identities.

                  Equations
                  Instances For
                    @[simp]
                    theorem CategoryTheory.Bicategory.LeftExtension.whiskerIdCancel_right {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (s : LeftExtension f (CategoryStruct.comp g (CategoryStruct.id c))) {t : LeftExtension f g} (τ : s t.whisker (CategoryStruct.id c)) :
                    (s.whiskerIdCancel τ).right = CategoryStruct.comp τ.right (rightUnitor t.extension).hom
                    def CategoryTheory.Bicategory.LeftExtension.whiskerHom {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (i : s t) {x : B} (h : c x) :
                    s.whisker h t.whisker h

                    Construct a morphism between whiskered extensions.

                    Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Bicategory.LeftExtension.whiskerHom_right {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (i : s t) {x : B} (h : c x) :
                      (whiskerHom i h).right = whiskerRight i.right h
                      def CategoryTheory.Bicategory.LeftExtension.whiskerIso {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : LeftExtension f g} (i : s t) {x : B} (h : c x) :
                      s.whisker h t.whisker h

                      Construct an isomorphism between whiskered extensions.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def CategoryTheory.Bicategory.LeftExtension.whiskerOfCompIdIsoSelf {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) :
                        (t.whisker (CategoryStruct.id c)).ofCompId t

                        The isomorphism between left extensions induced by a right unitor.

                        Equations
                        Instances For
                          @[simp]
                          theorem CategoryTheory.Bicategory.LeftExtension.whiskerOfCompIdIsoSelf_inv_right {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) :
                          t.whiskerOfCompIdIsoSelf.inv.right = (rightUnitor t.extension).inv
                          @[simp]
                          theorem CategoryTheory.Bicategory.LeftExtension.whiskerOfCompIdIsoSelf_hom_right {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : LeftExtension f g) :
                          t.whiskerOfCompIdIsoSelf.hom.right = (rightUnitor t.extension).hom
                          @[reducible, inline]
                          abbrev CategoryTheory.Bicategory.LeftLift {B : Type u} [Bicategory B] {a b c : B} (f : b a) (g : c a) :
                          Type (max v w)

                          Triangle diagrams for (left) lifts.

                                      b
                                    ◹ |
                             lift /   |      △
                                /     | f    | unit
                              /       ▽
                            c - - - ▷ a
                                 g
                          
                          Equations
                          Instances For
                            @[reducible, inline]
                            abbrev CategoryTheory.Bicategory.LeftLift.lift {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) :
                            c b

                            The lift of g along f.

                            Equations
                            • t.lift = t.right
                            Instances For
                              @[reducible, inline]
                              abbrev CategoryTheory.Bicategory.LeftLift.unit {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) :

                              The 2-morphism filling the triangle diagram.

                              Equations
                              • t.unit = t.hom
                              Instances For
                                @[reducible, inline]
                                abbrev CategoryTheory.Bicategory.LeftLift.mk {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (h : c b) (unit : g CategoryStruct.comp h f) :

                                Construct a left lift from a 1-morphism and a 2-morphism.

                                Equations
                                Instances For
                                  @[reducible, inline]
                                  abbrev CategoryTheory.Bicategory.LeftLift.homMk {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (η : s.lift t.lift) (w : CategoryStruct.comp s.unit (whiskerRight η f) = t.unit := by aesop_cat) :
                                  s t

                                  To construct a morphism between left lifts, we need a 2-morphism between the lifts, and to check that it is compatible with the units.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.Bicategory.LeftLift.w {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (h : s t) :
                                    CategoryStruct.comp s.unit (whiskerRight h.right f) = t.unit
                                    @[simp]
                                    theorem CategoryTheory.Bicategory.LeftLift.w_assoc {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (h : s t) {Z : c a} (h✝ : CategoryStruct.comp t.right f Z) :
                                    def CategoryTheory.Bicategory.LeftLift.ofIdComp {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) :

                                    Construct a left lift along g : c ⟶ a from a left lift along 𝟙 c ≫ g.

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.Bicategory.LeftLift.ofIdComp_hom {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) :
                                      t.ofIdComp.hom = CategoryStruct.comp (leftUnitor g).inv t.unit
                                      @[simp]
                                      theorem CategoryTheory.Bicategory.LeftLift.ofIdComp_left_as {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) :
                                      t.ofIdComp.left.as = PUnit.unit
                                      @[simp]
                                      theorem CategoryTheory.Bicategory.LeftLift.ofIdComp_right {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) :
                                      t.ofIdComp.right = t.lift
                                      def CategoryTheory.Bicategory.LeftLift.whisker {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) {x : B} (h : x c) :

                                      Whisker a 1-morphism to a lift.

                                                          b
                                                        ◹ |
                                                 lift /   |      △
                                                    /     | f    | unit
                                                  /       ▽
                                      x - - - ▷ c - - - ▷ a
                                           h         g
                                      
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[simp]
                                        theorem CategoryTheory.Bicategory.LeftLift.whisker_lift {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) {x : B} (h : x c) :
                                        (t.whisker h).lift = CategoryStruct.comp h t.lift
                                        @[simp]
                                        theorem CategoryTheory.Bicategory.LeftLift.whisker_unit {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) {x : B} (h : x c) :
                                        (t.whisker h).unit = CategoryStruct.comp (whiskerLeft h t.unit) (associator h t.lift f).inv
                                        def CategoryTheory.Bicategory.LeftLift.whiskering {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {x : B} (h : x c) :

                                        Whiskering a 1-morphism is a functor.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.Bicategory.LeftLift.whiskering_map {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {x : B} (h : x c) {X✝ Y✝ : LeftLift f g} (η : X✝ Y✝) :
                                          (whiskering h).map η = homMk (whiskerLeft h η.right)
                                          @[simp]
                                          theorem CategoryTheory.Bicategory.LeftLift.whiskering_obj {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {x : B} (h : x c) (t : LeftLift f g) :
                                          (whiskering h).obj t = t.whisker h
                                          def CategoryTheory.Bicategory.LeftLift.whiskerIdCancel {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (s : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) {t : LeftLift f g} (τ : s t.whisker (CategoryStruct.id c)) :
                                          s.ofIdComp t

                                          Define a morphism between left lifts by cancelling the whiskered identities.

                                          Equations
                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.Bicategory.LeftLift.whiskerIdCancel_right {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (s : LeftLift f (CategoryStruct.comp (CategoryStruct.id c) g)) {t : LeftLift f g} (τ : s t.whisker (CategoryStruct.id c)) :
                                            (s.whiskerIdCancel τ).right = CategoryStruct.comp τ.right (leftUnitor t.lift).hom
                                            def CategoryTheory.Bicategory.LeftLift.whiskerHom {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (i : s t) {x : B} (h : x c) :
                                            s.whisker h t.whisker h

                                            Construct a morphism between whiskered lifts.

                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem CategoryTheory.Bicategory.LeftLift.whiskerHom_right {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (i : s t) {x : B} (h : x c) :
                                              (whiskerHom i h).right = whiskerLeft h i.right
                                              def CategoryTheory.Bicategory.LeftLift.whiskerIso {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : LeftLift f g} (i : s t) {x : B} (h : x c) :
                                              s.whisker h t.whisker h

                                              Construct an isomorphism between whiskered lifts.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                def CategoryTheory.Bicategory.LeftLift.whiskerOfIdCompIsoSelf {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) :
                                                (t.whisker (CategoryStruct.id c)).ofIdComp t

                                                The isomorphism between left lifts induced by a left unitor.

                                                Equations
                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.Bicategory.LeftLift.whiskerOfIdCompIsoSelf_hom_right {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) :
                                                  t.whiskerOfIdCompIsoSelf.hom.right = (leftUnitor t.lift).hom
                                                  @[simp]
                                                  theorem CategoryTheory.Bicategory.LeftLift.whiskerOfIdCompIsoSelf_inv_right {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : LeftLift f g) :
                                                  t.whiskerOfIdCompIsoSelf.inv.right = (leftUnitor t.lift).inv
                                                  @[reducible, inline]
                                                  abbrev CategoryTheory.Bicategory.RightExtension {B : Type u} [Bicategory B] {a b c : B} (f : a b) (g : a c) :
                                                  Type (max v w)

                                                  Triangle diagrams for (right) extensions.

                                                    b
                                                    △ \
                                                    |   \ extension  | counit
                                                  f |     \          ▽
                                                    |       ◿
                                                    a - - - ▷ c
                                                        g
                                                  
                                                  Equations
                                                  Instances For
                                                    @[reducible, inline]
                                                    abbrev CategoryTheory.Bicategory.RightExtension.extension {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : RightExtension f g) :
                                                    b c

                                                    The extension of g along f.

                                                    Equations
                                                    • t.extension = t.left
                                                    Instances For
                                                      @[reducible, inline]
                                                      abbrev CategoryTheory.Bicategory.RightExtension.counit {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (t : RightExtension f g) :
                                                      CategoryStruct.comp f t.extension g

                                                      The 2-morphism filling the triangle diagram.

                                                      Equations
                                                      • t.counit = t.hom
                                                      Instances For
                                                        @[reducible, inline]
                                                        abbrev CategoryTheory.Bicategory.RightExtension.mk {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} (h : b c) (counit : CategoryStruct.comp f h g) :

                                                        Construct a right extension from a 1-morphism and a 2-morphism.

                                                        Equations
                                                        Instances For
                                                          @[reducible, inline]
                                                          abbrev CategoryTheory.Bicategory.RightExtension.homMk {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : RightExtension f g} (η : s.extension t.extension) (w : CategoryStruct.comp (whiskerLeft f η) t.counit = s.counit) :
                                                          s t

                                                          To construct a morphism between right extensions, we need a 2-morphism between the extensions, and to check that it is compatible with the counits.

                                                          Equations
                                                          Instances For
                                                            @[simp]
                                                            theorem CategoryTheory.Bicategory.RightExtension.w {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : RightExtension f g} (η : s t) :
                                                            CategoryStruct.comp (whiskerLeft f η.left) t.counit = s.counit
                                                            @[simp]
                                                            theorem CategoryTheory.Bicategory.RightExtension.w_assoc {B : Type u} [Bicategory B] {a b c : B} {f : a b} {g : a c} {s t : RightExtension f g} (η : s t) {Z : a c} (h : g Z) :
                                                            @[reducible, inline]
                                                            abbrev CategoryTheory.Bicategory.RightLift {B : Type u} [Bicategory B] {a b c : B} (f : b a) (g : c a) :
                                                            Type (max v w)

                                                            Triangle diagrams for (right) lifts.

                                                                        b
                                                                      ◹ |
                                                               lift /   |      | counit
                                                                  /     | f    ▽
                                                                /       ▽
                                                              c - - - ▷ a
                                                                   g
                                                            
                                                            Equations
                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev CategoryTheory.Bicategory.RightLift.lift {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : RightLift f g) :
                                                              c b

                                                              The lift of g along f.

                                                              Equations
                                                              • t.lift = t.left
                                                              Instances For
                                                                @[reducible, inline]
                                                                abbrev CategoryTheory.Bicategory.RightLift.counit {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (t : RightLift f g) :

                                                                The 2-morphism filling the triangle diagram.

                                                                Equations
                                                                • t.counit = t.hom
                                                                Instances For
                                                                  @[reducible, inline]
                                                                  abbrev CategoryTheory.Bicategory.RightLift.mk {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} (h : c b) (counit : CategoryStruct.comp h f g) :

                                                                  Construct a right lift from a 1-morphism and a 2-morphism.

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]
                                                                    abbrev CategoryTheory.Bicategory.RightLift.homMk {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : RightLift f g} (η : s.lift t.lift) (w : CategoryStruct.comp (whiskerRight η f) t.counit = s.counit) :
                                                                    s t

                                                                    To construct a morphism between right lifts, we need a 2-morphism between the lifts, and to check that it is compatible with the counits.

                                                                    Equations
                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.Bicategory.RightLift.w {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : RightLift f g} (h : s t) :
                                                                      CategoryStruct.comp (whiskerRight h.left f) t.counit = s.counit
                                                                      @[simp]
                                                                      theorem CategoryTheory.Bicategory.RightLift.w_assoc {B : Type u} [Bicategory B] {a b c : B} {f : b a} {g : c a} {s t : RightLift f g} (h : s t) {Z : c a} (h✝ : g Z) :