Adjunctions between functors #
F ⊣ G represents the data of an adjunction between two functors
F : C ⥤ D and G : D ⥤ C. F is the left adjoint and G is the right adjoint.
We provide various useful constructors:
mkOfHomEquivmk': construct an adjunction from the data of a hom set equivalence, unit and counit natural transformations together with proofs of the equalitieshomEquiv_unitandhomEquiv_counitrelating them to each other.leftAdjointOfEquiv/rightAdjointOfEquivconstruct a left/right adjoint of a given functor given the action on objects and the relevant equivalence of morphism spaces.adjunctionOfEquivLeft/adjunctionOfEquivRightwitness that these constructions give adjunctions.
There are also typeclasses IsLeftAdjoint / IsRightAdjoint, which asserts the
existence of a adjoint functor. Given [F.IsLeftAdjoint], a chosen right
adjoint can be obtained as F.rightAdjoint.
Adjunction.comp composes adjunctions.
toEquivalence upgrades an adjunction to an equivalence,
given witnesses that the unit and counit are pointwise isomorphisms.
Conversely Equivalence.toAdjunction recovers the underlying adjunction from an equivalence.
Overview of the directory CategoryTheory.Adjunction #
- Adjoint lifting theorems are in the directory
Lifting. - The file
AdjointFunctorTheoremsproves the adjoint functor theorems. - The file
Commashows that for a functorG : D ⥤ Cthe data of an initial object in eachStructuredArrowcategory onGis equivalent to a left adjoint toG, as well as the dual. - The file
Evaluationshows that products and coproducts are adjoint to evaluation of functors. - The file
FullyFaithfulcharacterizes when adjoints are full or faithful in terms of the unit and counit. - The file
Limitsproves that left adjoints preserve colimits and right adjoints preserve limits. - The file
Matesestablishes the bijection between the 2-cells
whereL₁ R₁ C --→ D C ←-- D G ↓ ↗ ↓ H G ↓ ↘ ↓ H E --→ F E ←-- F L₂ R₂L₁ ⊣ R₁andL₂ ⊣ R₂. Specializing to a pair of adjointsL₁ L₂ : C ⥤ D,R₁ R₂ : D ⥤ C, it provides equivalences(L₂ ⟶ L₁) ≃ (R₁ ⟶ R₂)and(L₂ ≅ L₁) ≃ (R₁ ≅ R₂). - The file
Oppositescontains constructions to relate adjunctions of functors to adjunctions of their opposites. - The file
Reflectivedefines reflective functors, i.e. fully faithful right adjoints. Note that many facts about reflective functors are proved in the earlier fileFullyFaithful. - The file
Restrictdefines the restriction of an adjunction along fully faithful functors. - The file
Tripleproves that in an adjoint triple, the left adjoint is fully faithful if and only if the right adjoint is. - The file
Uniqueproves uniqueness of adjoints. - The file
Whiskeringproves that functorsF : D ⥤ EandG : E ⥤ Dwith an adjunctionF ⊣ G, induce adjunctions between the functor categoriesC ⥤ DandC ⥤ E, and the functor categoriesE ⥤ CandD ⥤ C.
Other files related to adjunctions #
- The file
CategoryTheory.Monad.Adjunctiondevelops the basic relationship between adjunctions and (co)monads. There it is also shown that given an adjunctionL ⊣ Rand an isomorphismL ⋙ R ≅ 𝟭 C, the unit is an isomorphism, and similarly for the counit.
F ⊣ G represents the data of an adjunction between two functors
F : C ⥤ D and G : D ⥤ C. F is the left adjoint and G is the right adjoint.
We use the unit-counit definition of an adjunction. There is a constructor Adjunction.mk'
which constructs an adjunction from the data of a hom set equivalence, a unit, and a counit,
together with proofs of the equalities homEquiv_unit and homEquiv_counit relating them to each
other.
There is also a constructor Adjunction.mkOfHomEquiv which constructs an adjunction from a natural
hom set equivalence.
To construct adjoints to a given functor, there are constructors leftAdjointOfEquiv and
adjunctionOfEquivLeft (as well as their duals).
The unit of an adjunction
The counit of an adjunction
- left_triangle_components (X : C) : CategoryStruct.comp (F.map (self.unit.app X)) (self.counit.app (F.obj X)) = CategoryStruct.id (F.obj X)
Equality of the composition of the unit and counit with the identity
F ⟶ FGF ⟶ F = 𝟙 - right_triangle_components (Y : D) : CategoryStruct.comp (self.unit.app (G.obj Y)) (G.map (self.counit.app Y)) = CategoryStruct.id (G.obj Y)
Equality of the composition of the unit and counit with the identity
G ⟶ GFG ⟶ G = 𝟙
Instances For
The notation F ⊣ G stands for Adjunction F G representing that F is left adjoint to G
Equations
- CategoryTheory.«term_⊣_» = Lean.ParserDescr.trailingNode `CategoryTheory.«term_⊣_» 15 15 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊣ ") (Lean.ParserDescr.cat `term 16))
Instances For
A chosen left adjoint to a functor that is a right adjoint.
Equations
- R.leftAdjoint = ⋯.choose
Instances For
A chosen right adjoint to a functor that is a left adjoint.
Equations
- L.rightAdjoint = ⋯.choose
Instances For
The adjunction associated to a functor known to be a left adjoint.
Equations
Instances For
The adjunction associated to a functor known to be a right adjoint.
Equations
Instances For
The hom set equivalence associated to an adjunction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of CategoryTheory.Adjunction.homEquiv_apply.
If adj : F ⊣ G, and X : C, then F.obj X corepresents Y ↦ (X ⟶ G.obj Y).
Equations
- adj.corepresentableBy X = { homEquiv := fun {Y : D} => adj.homEquiv X Y, homEquiv_comp := ⋯ }
Instances For
If adj : F ⊣ G, and Y : D, then G.obj Y represents X ↦ (F.obj X ⟶ Y).
Equations
Instances For
This is an auxiliary data structure useful for constructing adjunctions.
See Adjunction.mk'. This structure won't typically be used anywhere else.
The equivalence between
Hom (F X) YandHom X (G Y)coming from an adjunctionThe unit of an adjunction
The counit of an adjunction
- homEquiv_unit {X : C} {Y : D} {f : F.obj X ⟶ Y} : (self.homEquiv X Y) f = CategoryStruct.comp (self.unit.app X) (G.map f)
The relationship between the unit and hom set equivalence of an adjunction
- homEquiv_counit {X : C} {Y : D} {g : X ⟶ G.obj Y} : (self.homEquiv X Y).symm g = CategoryStruct.comp (F.map g) (self.counit.app Y)
The relationship between the counit and hom set equivalence of an adjunction
Instances For
This is an auxiliary data structure useful for constructing adjunctions.
See Adjunction.mkOfHomEquiv.
This structure won't typically be used anywhere else.
The equivalence between
Hom (F X) YandHom X (G Y)- homEquiv_naturality_left_symm {X' X : C} {Y : D} (f : X' ⟶ X) (g : X ⟶ G.obj Y) : (self.homEquiv X' Y).symm (CategoryStruct.comp f g) = CategoryStruct.comp (F.map f) ((self.homEquiv X Y).symm g)
The property that describes how
homEquiv.symmtransforms compositionsX' ⟶ X ⟶ G Y - homEquiv_naturality_right {X : C} {Y Y' : D} (f : F.obj X ⟶ Y) (g : Y ⟶ Y') : (self.homEquiv X Y') (CategoryStruct.comp f g) = CategoryStruct.comp ((self.homEquiv X Y) f) (G.map g)
The property that describes how
homEquivtransforms compositionsF X ⟶ Y ⟶ Y'
Instances For
This is an auxiliary data structure useful for constructing adjunctions.
See Adjunction.mkOfUnitCounit.
This structure won't typically be used anywhere else.
The unit of an adjunction between
FandGThe counit of an adjunction between
FandGs- left_triangle : CategoryStruct.comp (Functor.whiskerRight self.unit F) (CategoryStruct.comp (F.associator G F).hom (F.whiskerLeft self.counit)) = NatTrans.id ((Functor.id C).comp F)
Equality of the composition of the unit, associator, and counit with the identity
F ⟶ (F G) F ⟶ F (G F) ⟶ F = NatTrans.id F - right_triangle : CategoryStruct.comp (G.whiskerLeft self.unit) (CategoryStruct.comp (G.associator F G).inv (Functor.whiskerRight self.counit G)) = NatTrans.id (G.comp (Functor.id C))
Equality of the composition of the unit, associator, and counit with the identity
G ⟶ G (F G) ⟶ (F G) F ⟶ G = NatTrans.id G
Instances For
Construct an adjunction from the data of a CoreHomEquivUnitCounit, i.e. a hom set
equivalence, unit and counit natural transformations together with proofs of the equalities
homEquiv_unit and homEquiv_counit relating them to each other.
Equations
Instances For
Construct an adjunction between F and G out of a natural bijection between each
F.obj X ⟶ Y and X ⟶ G.obj Y.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct an adjunction between functors F and G given a unit and counit for the adjunction
satisfying the triangle identities.
Equations
Instances For
The adjunction between the identity functor on a category and itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
If F and G are naturally isomorphic functors, establish an equivalence of hom-sets.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If G and H are naturally isomorphic functors, establish an equivalence of hom-sets.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport an adjunction along a natural isomorphism on the left.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport an adjunction along a natural isomorphism on the right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The isomorpism which an adjunction F ⊣ G induces on G ⋙ yoneda. This states that
Adjunction.homEquiv is natural in both arguments.
Equations
- adj.compYonedaIso = CategoryTheory.NatIso.ofComponents (fun (X : D) => CategoryTheory.NatIso.ofComponents (fun (Y : Cᵒᵖ) => (adj.homEquiv (Opposite.unop Y) X).toIso.symm) ⋯) ⋯
Instances For
The isomorpism which an adjunction F ⊣ G induces on F.op ⋙ coyoneda. This states that
Adjunction.homEquiv is natural in both arguments.
Equations
- adj.compCoyonedaIso = CategoryTheory.NatIso.ofComponents (fun (X : Cᵒᵖ) => CategoryTheory.NatIso.ofComponents (fun (Y : D) => (adj.homEquiv (Opposite.unop X) Y).toIso) ⋯) ⋯
Instances For
Composition of adjunctions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a left adjoint functor to G, given the functor's value on objects F_obj and
a bijection e between F_obj X ⟶ Y and X ⟶ G.obj Y satisfying a naturality law
he : ∀ X Y Y' g h, e X Y' (h ≫ g) = e X Y h ≫ G.map g.
Dual to rightAdjointOfEquiv.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Show that the functor given by leftAdjointOfEquiv is indeed left adjoint to G. Dual
to adjunctionOfRightEquiv.
Equations
- CategoryTheory.Adjunction.adjunctionOfEquivLeft e he = CategoryTheory.Adjunction.mkOfHomEquiv { homEquiv := e, homEquiv_naturality_left_symm := ⋯, homEquiv_naturality_right := ⋯ }
Instances For
Construct a right adjoint functor to F, given the functor's value on objects G_obj and
a bijection e between F.obj X ⟶ Y and X ⟶ G_obj Y satisfying a naturality law
he : ∀ X Y Y' g h, e X' Y (F.map f ≫ g) = f ≫ e X Y g.
Dual to leftAdjointOfEquiv.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Show that the functor given by rightAdjointOfEquiv is indeed right adjoint to F. Dual
to adjunctionOfEquivRight.
Equations
- CategoryTheory.Adjunction.adjunctionOfEquivRight e he = CategoryTheory.Adjunction.mkOfHomEquiv { homEquiv := e, homEquiv_naturality_left_symm := ⋯, homEquiv_naturality_right := ⋯ }
Instances For
If the unit and counit of a given adjunction are (pointwise) isomorphisms, then we can upgrade the adjunction to an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If the unit and counit for the adjunction corresponding to a right adjoint functor are (pointwise) isomorphisms, then the functor is an equivalence of categories.
The adjunction given by an equivalence of categories. (To obtain the opposite adjunction,
simply use e.symm.toAdjunction.
Equations
Instances For
If F and G are left adjoints then F ⋙ G is a left adjoint too.
If F and G are right adjoints then F ⋙ G is a right adjoint too.
Transport being a right adjoint along a natural isomorphism.
Transport being a left adjoint along a natural isomorphism.
An equivalence E is left adjoint to its inverse.
Equations
Instances For
If F is an equivalence, it's a left adjoint.
If F is an equivalence, it's a right adjoint.