Equivalence of categories #
An equivalence of categories C
and D
is a pair of functors F : C ⥤ D
and G : D ⥤ C
such
that η : 𝟭 C ≅ F ⋙ G
and ε : G ⋙ F ≅ 𝟭 D
. In many situations, equivalences are a better
notion of "sameness" of categories than the stricter isomorphism of categories.
Recall that one way to express that two functors F : C ⥤ D
and G : D ⥤ C
are adjoint is using
two natural transformations η : 𝟭 C ⟶ F ⋙ G
and ε : G ⋙ F ⟶ 𝟭 D
, called the unit and the
counit, such that the compositions F ⟶ FGF ⟶ F
and G ⟶ GFG ⟶ G
are the identity. Unfortunately,
it is not the case that the natural isomorphisms η
and ε
in the definition of an equivalence
automatically give an adjunction. However, it is true that
- if one of the two compositions is the identity, then so is the other, and
- given an equivalence of categories, it is always possible to refine
η
in such a way that the identities are satisfied.
For this reason, in mathlib we define an equivalence to be a "half-adjoint equivalence", which is
a tuple (F, G, η, ε)
as in the first paragraph such that the composite F ⟶ FGF ⟶ F
is the
identity. By the remark above, this already implies that the tuple is an "adjoint equivalence",
i.e., that the composite G ⟶ GFG ⟶ G
is also the identity.
We also define essentially surjective functors and show that a functor is an equivalence if and only if it is full, faithful and essentially surjective.
Main definitions #
Equivalence
: bundled (half-)adjoint equivalences of categoriesFunctor.EssSurj
: type class on a functorF
containing the data of the preimages and the isomorphismsF.obj (preimage d) ≅ d
.Functor.IsEquivalence
: type class on a functorF
which is full, faithful and essentially surjective.
Main results #
Equivalence.mk
: upgrade an equivalence to a (half-)adjoint equivalenceisEquivalence_iff_of_iso
: whenF
andG
are isomorphic functors,F
is an equivalence iffG
is.Functor.asEquivalenceFunctor
: construction of an equivalence of categories from a functorF
which satisfies the propertyF.IsEquivalence
(i.e.F
is full, faithful and essentially surjective).
Notations #
We write C ≌ D
(\backcong
, not to be confused with ≅
/\cong
) for a bundled equivalence.
We define an equivalence as a (half)-adjoint equivalence, a pair of functors with
a unit and counit which are natural isomorphisms and the triangle law Fη ≫ εF = 1
, or in other
words the composite F ⟶ FGF ⟶ F
is the identity.
In unit_inverse_comp
, we show that this is actually an adjoint equivalence, i.e., that the
composite G ⟶ GFG ⟶ G
is also the identity.
The triangle equation is written as a family of equalities between morphisms, it is more
complicated if we write it as an equality of natural transformations, because then we would have
to insert natural transformations like F ⟶ F1
.
See https://stacks.math.columbia.edu/tag/001J
- mk' :: (
- functor : CategoryTheory.Functor C D
A functor in one direction
- inverse : CategoryTheory.Functor D C
A functor in the other direction
- unitIso : CategoryTheory.Functor.id C ≅ self.functor.comp self.inverse
- counitIso : self.inverse.comp self.functor ≅ CategoryTheory.Functor.id D
- functor_unitIso_comp (X : C) : CategoryTheory.CategoryStruct.comp (self.functor.map (self.unitIso.hom.app X)) (self.counitIso.hom.app (self.functor.obj X)) = CategoryTheory.CategoryStruct.id (self.functor.obj X)
The natural isomorphisms compose to the identity.
- )
Instances For
We infix the usual notation for an equivalence
Equations
- CategoryTheory.«term_≌_» = Lean.ParserDescr.trailingNode `CategoryTheory.«term_≌_» 10 11 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≌ ") (Lean.ParserDescr.cat `term 10))
Instances For
The unit of an equivalence of categories.
Equations
- e.unit = e.unitIso.hom
Instances For
The counit of an equivalence of categories.
Equations
- e.counit = e.counitIso.hom
Instances For
The inverse of the unit of an equivalence of categories.
Equations
- e.unitInv = e.unitIso.inv
Instances For
The inverse of the counit of an equivalence of categories.
Equations
- e.counitInv = e.counitIso.inv
Instances For
The other triangle equality. The proof follows the following proof in Globular: http://globular.science/1905.001
If η : 𝟭 C ≅ F ⋙ G
is part of a (not necessarily half-adjoint) equivalence, we can upgrade it
to a refined natural isomorphism adjointifyη η : 𝟭 C ≅ F ⋙ G
which exhibits the properties
required for a half-adjoint equivalence. See Equivalence.mk
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every equivalence of categories consisting of functors F
and G
such that F ⋙ G
and
G ⋙ F
are naturally isomorphic to identity functors can be transformed into a half-adjoint
equivalence without changing F
or G
.
Equations
- CategoryTheory.Equivalence.mk F G η ε = { functor := F, inverse := G, unitIso := CategoryTheory.Equivalence.adjointifyη η ε, counitIso := ε, functor_unitIso_comp := ⋯ }
Instances For
Equivalence of categories is reflexive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.Equivalence.instInhabited = { default := CategoryTheory.Equivalence.refl }
Equivalence of categories is symmetric.
Equations
- e.symm = { functor := e.inverse, inverse := e.functor, unitIso := e.counitIso.symm, counitIso := e.unitIso.symm, functor_unitIso_comp := ⋯ }
Instances For
Equivalence of categories is transitive.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Composing a functor with both functors of an equivalence yields a naturally isomorphic functor.
Equations
- e.funInvIdAssoc F = (e.functor.associator e.inverse F).symm ≪≫ CategoryTheory.isoWhiskerRight e.unitIso.symm F ≪≫ F.leftUnitor
Instances For
Composing a functor with both functors of an equivalence yields a naturally isomorphic functor.
Equations
- e.invFunIdAssoc F = (e.inverse.associator e.functor F).symm ≪≫ CategoryTheory.isoWhiskerRight e.counitIso F ≪≫ F.leftUnitor
Instances For
If C
is equivalent to D
, then C ⥤ E
is equivalent to D ⥤ E
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If C
is equivalent to D
, then E ⥤ C
is equivalent to E ⥤ D
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Natural number powers of an auto-equivalence. Use (^)
instead.
Equations
Instances For
Powers of an auto-equivalence. Use (^)
instead.
Equations
- e.pow (Int.ofNat n) = e.powNat n
- e.pow (Int.negSucc n) = e.symm.powNat (n + 1)
Instances For
Equations
- CategoryTheory.Equivalence.instPowInt = { pow := CategoryTheory.Equivalence.pow }
The functor of an equivalence of categories is essentially surjective.
The functor of an equivalence of categories is fully faithful.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse of an equivalence of categories is fully faithful.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor of an equivalence of categories is faithful.
The functor of an equivalence of categories is full.
If e : C ≌ D
is an equivalence of categories, and iso : e.functor ≅ G
is
an isomorphism, then there is an equivalence of categories whose functor is G
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compatibility of changeFunctor
with identity isomorphisms of functors
Compatibility of changeFunctor
with the composition of isomorphisms of functors
If e : C ≌ D
is an equivalence of categories, and iso : e.functor ≅ G
is
an isomorphism, then there is an equivalence of categories whose inverse is G
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A functor is an equivalence of categories if it is faithful, full and essentially surjective.
- faithful : F.Faithful
- full : F.Full
- essSurj : F.EssSurj
Instances
To see that a functor is an equivalence, it suffices to provide an inverse functor G
such that
F ⋙ G
and G ⋙ F
are naturally isomorphic to identity functors.
A quasi-inverse D ⥤ C
to a functor that F : C ⥤ D
that is an equivalence,
i.e. faithful, full, and essentially surjective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret a functor that is an equivalence as an equivalence.
See https://stacks.math.columbia.edu/tag/02C3.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If G
and F ⋙ G
are equivalence of categories, then F
is also an equivalence.
If F
and F ⋙ G
are equivalence of categories, then G
is also an equivalence.
Construct an isomorphism F ⋙ H.inverse ≅ G
from an isomorphism F ≅ G ⋙ H.functor
.
Equations
- i.compInverseIso = CategoryTheory.isoWhiskerRight i H.inverse ≪≫ G.associator H.functor H.inverse ≪≫ CategoryTheory.isoWhiskerLeft G H.unitIso.symm ≪≫ G.rightUnitor
Instances For
Construct an isomorphism G ≅ F ⋙ H.inverse
from an isomorphism G ⋙ H.functor ≅ F
.
Equations
- i.isoCompInverse = G.rightUnitor.symm ≪≫ CategoryTheory.isoWhiskerLeft G H.unitIso ≪≫ (G.associator H.functor H.inverse).symm ≪≫ CategoryTheory.isoWhiskerRight i H.inverse
Instances For
Construct an isomorphism G.inverse ⋙ F ≅ H
from an isomorphism F ≅ G.functor ⋙ H
.
Equations
- i.inverseCompIso = CategoryTheory.isoWhiskerLeft G.inverse i ≪≫ (G.inverse.associator G.functor H).symm ≪≫ CategoryTheory.isoWhiskerRight G.counitIso H ≪≫ H.leftUnitor
Instances For
Construct an isomorphism H ≅ G.inverse ⋙ F
from an isomorphism G.functor ⋙ H ≅ F
.
Equations
- i.isoInverseComp = H.leftUnitor.symm ≪≫ CategoryTheory.isoWhiskerRight G.counitIso.symm H ≪≫ G.inverse.associator G.functor H ≪≫ CategoryTheory.isoWhiskerLeft G.inverse i
Instances For
Alias of CategoryTheory.Functor.IsEquivalence
.
A functor is an equivalence of categories if it is faithful, full and essentially surjective.
Instances For
Alias of CategoryTheory.Functor.fun_inv_map
.
Alias of CategoryTheory.Functor.inv_fun_map
.
Alias of CategoryTheory.Equivalence.changeFunctor
.
If e : C ≌ D
is an equivalence of categories, and iso : e.functor ≅ G
is
an isomorphism, then there is an equivalence of categories whose functor is G
.
Instances For
Alias of CategoryTheory.Equivalence.changeFunctor_trans
.
Compatibility of changeFunctor
with the composition of isomorphisms of functors
Alias of CategoryTheory.Equivalence.changeFunctor_refl
.
Compatibility of changeFunctor
with identity isomorphisms of functors
Alias of CategoryTheory.Functor.isEquivalence_of_comp_right
.
If G
and F ⋙ G
are equivalence of categories, then F
is also an equivalence.
Alias of CategoryTheory.Functor.isEquivalence_of_comp_left
.
If F
and F ⋙ G
are equivalence of categories, then G
is also an equivalence.