Documentation

Mathlib.CategoryTheory.Adjunction.Opposites

Opposite adjunctions #

This file contains constructions to relate adjunctions of functors to adjunctions of their opposites. These constructions are used to show uniqueness of adjoints (up to natural isomorphism).

Tags #

adjunction, opposite, uniqueness

@[simp]
theorem CategoryTheory.Adjunction.adjointOfOpAdjointOp_counit_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D C) (h : G.op F.op) (Y : D) :
(CategoryTheory.Adjunction.adjointOfOpAdjointOp F G h).counit.app Y = (CategoryTheory.opEquiv (Opposite.op Y) (Opposite.op (F.toPrefunctor.obj (G.toPrefunctor.obj Y)))) ((h.homEquiv (Opposite.op Y) (Opposite.op (G.toPrefunctor.obj Y))) ((CategoryTheory.opEquiv (Opposite.op (G.toPrefunctor.obj Y)) (Opposite.op (G.toPrefunctor.obj Y))).symm (CategoryTheory.CategoryStruct.id (G.toPrefunctor.obj Y))))
@[simp]
theorem CategoryTheory.Adjunction.adjointOfOpAdjointOp_unit_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D C) (h : G.op F.op) (X : C) :
(CategoryTheory.Adjunction.adjointOfOpAdjointOp F G h).unit.app X = (CategoryTheory.opEquiv (Opposite.op (G.toPrefunctor.obj (F.toPrefunctor.obj X))) (Opposite.op X)) ((h.homEquiv (Opposite.op (F.toPrefunctor.obj X)) (Opposite.op X)).symm ((CategoryTheory.opEquiv (Opposite.op (F.toPrefunctor.obj X)) (Opposite.op (F.toPrefunctor.obj X))).symm (CategoryTheory.CategoryStruct.id (F.toPrefunctor.obj X))))

If G.op is adjoint to F.op then F is adjoint to G.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    If G is adjoint to F.op then F is adjoint to G.unop.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      If G.op is adjoint to F then F.unop is adjoint to G.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        If G is adjoint to F then F.unop is adjoint to G.unop.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.Adjunction.opAdjointOpOfAdjoint_unit_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D C) (h : G F) (X : Cᵒᵖ) :
          (CategoryTheory.Adjunction.opAdjointOpOfAdjoint F G h).unit.app X = (CategoryTheory.opEquiv X (Opposite.op (G.toPrefunctor.1 (F.toPrefunctor.obj X.unop)))).symm (CategoryTheory.CategoryStruct.comp (G.toPrefunctor.map ((CategoryTheory.opEquiv (Opposite.op (F.toPrefunctor.obj X.unop)) (Opposite.op (F.toPrefunctor.obj X.unop))) (CategoryTheory.CategoryStruct.id (Opposite.op (F.toPrefunctor.obj X.unop))))) (h.counit.app X.unop))
          @[simp]
          theorem CategoryTheory.Adjunction.opAdjointOpOfAdjoint_counit_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] (F : CategoryTheory.Functor C D) (G : CategoryTheory.Functor D C) (h : G F) (Y : Dᵒᵖ) :
          (CategoryTheory.Adjunction.opAdjointOpOfAdjoint F G h).counit.app Y = (CategoryTheory.opEquiv (Opposite.op (F.toPrefunctor.obj (G.toPrefunctor.obj Y.unop))) Y).symm (CategoryTheory.CategoryStruct.comp (h.unit.app Y.unop) (F.toPrefunctor.map ((CategoryTheory.opEquiv (Opposite.op (G.toPrefunctor.obj Y.unop)) (Opposite.op (G.toPrefunctor.1 Y.unop))) (CategoryTheory.CategoryStruct.id (Opposite.op (G.toPrefunctor.obj Y.unop))))))

          If G is adjoint to F then F.op is adjoint to G.op.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            If G is adjoint to F.unop then F is adjoint to G.op.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              If G.unop is adjoint to F then F.op is adjoint to G.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                If G.unop is adjoint to F.unop then F is adjoint to G.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  If F and F' are both adjoint to G, there is a natural isomorphism F.op ⋙ coyoneda ≅ F'.op ⋙ coyoneda. We use this in combination with fullyFaithfulCancelRight to show left adjoints are unique.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    If F and F' are both left adjoint to G, then they are naturally isomorphic.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem CategoryTheory.Adjunction.homEquiv_leftAdjointUniq_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {F' : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F' G) (x : C) :
                      (adj1.homEquiv x (F'.toPrefunctor.obj x)) ((CategoryTheory.Adjunction.leftAdjointUniq adj1 adj2).hom.app x) = adj2.unit.app x
                      @[simp]
                      theorem CategoryTheory.Adjunction.unit_leftAdjointUniq_hom_app_assoc {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {F' : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F' G) (x : C) {Z : C} (h : G.toPrefunctor.obj (F'.toPrefunctor.obj x) Z) :
                      @[simp]
                      theorem CategoryTheory.Adjunction.unit_leftAdjointUniq_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {F' : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F' G) (x : C) :
                      CategoryTheory.CategoryStruct.comp (adj1.unit.app x) (G.toPrefunctor.map ((CategoryTheory.Adjunction.leftAdjointUniq adj1 adj2).hom.app x)) = adj2.unit.app x
                      @[simp]
                      theorem CategoryTheory.Adjunction.leftAdjointUniq_hom_app_counit {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {F' : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F' G) (x : D) :
                      CategoryTheory.CategoryStruct.comp ((CategoryTheory.Adjunction.leftAdjointUniq adj1 adj2).hom.app (G.toPrefunctor.obj x)) (adj2.counit.app x) = adj1.counit.app x

                      If G and G' are both right adjoint to F, then they are naturally isomorphic.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem CategoryTheory.Adjunction.homEquiv_symm_rightAdjointUniq_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} {G' : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F G') (x : D) :
                        (adj2.homEquiv (G.toPrefunctor.obj x) x).symm ((CategoryTheory.Adjunction.rightAdjointUniq adj1 adj2).hom.app x) = adj1.counit.app x
                        @[simp]
                        theorem CategoryTheory.Adjunction.unit_rightAdjointUniq_hom_app_assoc {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} {G' : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F G') (x : C) {Z : C} (h : G'.toPrefunctor.obj (F.toPrefunctor.obj x) Z) :
                        @[simp]
                        theorem CategoryTheory.Adjunction.unit_rightAdjointUniq_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} {G' : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F G') (x : C) :
                        CategoryTheory.CategoryStruct.comp (adj1.unit.app x) ((CategoryTheory.Adjunction.rightAdjointUniq adj1 adj2).hom.app (F.toPrefunctor.obj x)) = adj2.unit.app x
                        @[simp]
                        theorem CategoryTheory.Adjunction.rightAdjointUniq_hom_app_counit {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] {F : CategoryTheory.Functor C D} {G : CategoryTheory.Functor D C} {G' : CategoryTheory.Functor D C} (adj1 : F G) (adj2 : F G') (x : D) :
                        CategoryTheory.CategoryStruct.comp (F.toPrefunctor.map ((CategoryTheory.Adjunction.rightAdjointUniq adj1 adj2).hom.app x)) (adj2.counit.app x) = adj1.counit.app x

                        Given two adjunctions, if the left adjoints are naturally isomorphic, then so are the right adjoints.

                        Equations
                        Instances For

                          Given two adjunctions, if the right adjoints are naturally isomorphic, then so are the left adjoints.

                          Equations
                          Instances For