Opposite adjunctions #
This file contains constructions to relate adjunctions of functors to adjunctions of their opposites.
Tags #
adjunction, opposite, uniqueness
def
CategoryTheory.Adjunction.unop
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ Dᵒᵖ}
{G : Functor Dᵒᵖ Cᵒᵖ}
(h : G ⊣ F)
:
If G is adjoint to F then F.unop is adjoint to G.unop.
Equations
- h.unop = { unit := CategoryTheory.NatTrans.unop h.counit, counit := CategoryTheory.NatTrans.unop h.unit, left_triangle_components := ⋯, right_triangle_components := ⋯ }
Instances For
@[simp]
theorem
CategoryTheory.Adjunction.unop_counit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ Dᵒᵖ}
{G : Functor Dᵒᵖ Cᵒᵖ}
(h : G ⊣ F)
:
@[simp]
theorem
CategoryTheory.Adjunction.unop_unit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ Dᵒᵖ}
{G : Functor Dᵒᵖ Cᵒᵖ}
(h : G ⊣ F)
:
def
CategoryTheory.Adjunction.op
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C D}
{G : Functor D C}
(h : G ⊣ F)
:
If G is adjoint to F then F.op is adjoint to G.op.
Equations
- h.op = { unit := CategoryTheory.NatTrans.op h.counit, counit := CategoryTheory.NatTrans.op h.unit, left_triangle_components := ⋯, right_triangle_components := ⋯ }
Instances For
@[simp]
theorem
CategoryTheory.Adjunction.op_unit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C D}
{G : Functor D C}
(h : G ⊣ F)
:
@[simp]
theorem
CategoryTheory.Adjunction.op_counit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C D}
{G : Functor D C}
(h : G ⊣ F)
:
def
CategoryTheory.Adjunction.leftOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
{G : Functor D Cᵒᵖ}
(a : F ⊣ G.leftOp)
:
If F is adjoint to G.leftOp then G is adjoint to F.leftOp.
Equations
- a.leftOp = { unit := CategoryTheory.NatTrans.unop a.counit, counit := CategoryTheory.NatTrans.op a.unit, left_triangle_components := ⋯, right_triangle_components := ⋯ }
Instances For
@[simp]
theorem
CategoryTheory.Adjunction.leftOp_counit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
{G : Functor D Cᵒᵖ}
(a : F ⊣ G.leftOp)
:
@[simp]
theorem
CategoryTheory.Adjunction.leftOp_unit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
{G : Functor D Cᵒᵖ}
(a : F ⊣ G.leftOp)
:
def
CategoryTheory.Adjunction.rightOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
{G : Functor Dᵒᵖ C}
(a : F.rightOp ⊣ G)
:
If F.rightOp is adjoint to G then G.rightOp is adjoint to F.
Equations
- a.rightOp = { unit := CategoryTheory.NatTrans.unop a.counit, counit := CategoryTheory.NatTrans.op a.unit, left_triangle_components := ⋯, right_triangle_components := ⋯ }
Instances For
@[simp]
theorem
CategoryTheory.Adjunction.rightOp_counit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
{G : Functor Dᵒᵖ C}
(a : F.rightOp ⊣ G)
:
@[simp]
theorem
CategoryTheory.Adjunction.rightOp_unit
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
{G : Functor Dᵒᵖ C}
(a : F.rightOp ⊣ G)
:
theorem
CategoryTheory.Adjunction.leftOp_eq
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
{G : Functor D Cᵒᵖ}
(a : F ⊣ G.leftOp)
:
theorem
CategoryTheory.Adjunction.rightOp_eq
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
{G : Functor Dᵒᵖ C}
(a : F.rightOp ⊣ G)
:
def
CategoryTheory.Adjunction.leftAdjointsCoyonedaEquiv
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F F' : Functor C D}
{G : Functor D C}
(adj1 : F ⊣ G)
(adj2 : F' ⊣ G)
:
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
@[deprecated "Use `(Adjunction.conjugateIsoEquiv adj1 adj2).symm` (requires `import Mathlib.CategoryTheory.Adjunction.Mates`)." (since := "2026-01-31")]
def
CategoryTheory.Adjunction.natIsoOfRightAdjointNatIso
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F F' : Functor C D}
{G G' : Functor D C}
(adj1 : F ⊣ G)
(adj2 : F' ⊣ G')
(r : G ≅ G')
:
Deprecated: prefer (Adjunction.conjugateIsoEquiv adj1 adj2).symm.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[deprecated "Use `Adjunction.conjugateIsoEquiv adj1 adj2` (requires `import Mathlib.CategoryTheory.Adjunction.Mates`)." (since := "2026-01-31")]
def
CategoryTheory.Adjunction.natIsoOfLeftAdjointNatIso
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F F' : Functor C D}
{G G' : Functor D C}
(adj1 : F ⊣ G)
(adj2 : F' ⊣ G')
(l : F ≅ F')
:
Deprecated: prefer Adjunction.conjugateIsoEquiv adj1 adj2.
Equations
- adj1.natIsoOfLeftAdjointNatIso adj2 l = CategoryTheory.NatIso.removeOp (adj2.op.natIsoOfRightAdjointNatIso adj1.op (CategoryTheory.NatIso.op l))
Instances For
instance
CategoryTheory.Functor.IsLeftAdjoint.op
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C D}
[F.IsLeftAdjoint]
:
instance
CategoryTheory.Functor.IsRightAdjoint.op
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C D}
[F.IsRightAdjoint]
:
instance
CategoryTheory.Functor.IsLeftAdjoint.leftOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
[F.IsLeftAdjoint]
:
instance
CategoryTheory.Functor.IsRightAdjoint.leftOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor C Dᵒᵖ}
[F.IsRightAdjoint]
:
instance
CategoryTheory.Functor.IsLeftAdjoint.rightOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
[F.IsLeftAdjoint]
:
instance
CategoryTheory.Functor.IsRightAdjoint.rightOp
{C : Type u₁}
[Category.{v₁, u₁} C]
{D : Type u₂}
[Category.{v₂, u₂} D]
{F : Functor Cᵒᵖ D}
[F.IsRightAdjoint]
: