Opposite categories #
We provide a category instance on Cᵒᵖ.
The morphisms X ⟶ Y are defined to be the morphisms unop Y ⟶ unop X in C.
Here Cᵒᵖ is an irreducible typeclass synonym for C
(it is the same one used in the algebra library).
We also provide various mechanisms for constructing opposite morphisms, functors, and natural transformations.
Unfortunately, because we do not have a definitional equality op (op X) = X,
there are quite a few variations that are needed in practice.
The opposite category.
See
Equations
- CategoryTheory.Category.opposite = CategoryTheory.Category.mk
The functor from the double-opposite of a category to the underlying category.
Equations
- CategoryTheory.unopUnop C = CategoryTheory.Functor.mk { obj := fun X => X.unop.unop, map := fun {X Y} f => f.unop.unop }
Instances For
The functor from a category to its double-opposite.
Equations
- CategoryTheory.opOp C = CategoryTheory.Functor.mk { obj := fun X => Opposite.op (Opposite.op X), map := fun {X Y} f => f.op.op }
Instances For
The double opposite category is equivalent to the original.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If f is an isomorphism, so is f.op
If f.op is an isomorphism f must be too.
(This cannot be an instance as it would immediately loop!)
The opposite of a functor, i.e. considering a functor F : C ⥤ D as a functor Cᵒᵖ ⥤ Dᵒᵖ.
In informal mathematics no distinction is made between these.
Equations
- F.op = CategoryTheory.Functor.mk { obj := fun X => Opposite.op (F.obj X.unop), map := fun {X Y} f => (F.map f.unop).op }
Instances For
Given a functor F : Cᵒᵖ ⥤ Dᵒᵖ we can take the "unopposite" functor F : C ⥤ D.
In informal mathematics no distinction is made between these.
Equations
- CategoryTheory.Functor.unop F = CategoryTheory.Functor.mk { obj := fun X => (F.obj (Opposite.op X)).unop, map := fun {X Y} f => (F.map f.op).unop }
Instances For
The isomorphism between F.op.unop and F.
Equations
- CategoryTheory.Functor.opUnopIso F = CategoryTheory.NatIso.ofComponents fun X => CategoryTheory.Iso.refl ((CategoryTheory.Functor.unop F.op).obj X)
Instances For
The isomorphism between F.unop.op and F.
Equations
- CategoryTheory.Functor.unopOpIso F = CategoryTheory.NatIso.ofComponents fun X => CategoryTheory.Iso.refl ((CategoryTheory.Functor.unop F).op.obj X)
Instances For
Taking the opposite of a functor is functorial.
Equations
- CategoryTheory.Functor.opHom C D = CategoryTheory.Functor.mk { obj := fun F => F.unop.op, map := fun {X Y} α => CategoryTheory.NatTrans.mk fun X_1 => (α.unop.app X_1.unop).op }
Instances For
Take the "unopposite" of a functor is functorial.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Another variant of the opposite of functor, turning a functor C ⥤ Dᵒᵖ into a functor Cᵒᵖ ⥤ D.
In informal mathematics no distinction is made.
Equations
- F.leftOp = CategoryTheory.Functor.mk { obj := fun X => (F.obj X.unop).unop, map := fun {X Y} f => (F.map f.unop).unop }
Instances For
Another variant of the opposite of functor, turning a functor Cᵒᵖ ⥤ D into a functor C ⥤ Dᵒᵖ.
In informal mathematics no distinction is made.
Equations
- F.rightOp = CategoryTheory.Functor.mk { obj := fun X => Opposite.op (F.obj (Opposite.op X)), map := fun {X Y} f => (F.map f.op).op }
Instances For
Equations
- CategoryTheory.Functor.instFullOppositeOppositeOppositeOppositeOp = CategoryTheory.Full.mk fun X Y f => (F.preimage f.unop).op
If F is faithful then the right_op of F is also faithful.
If F is faithful then the left_op of F is also faithful.
The isomorphism between F.leftOp.rightOp and F.
Equations
- CategoryTheory.Functor.leftOpRightOpIso F = CategoryTheory.NatIso.ofComponents fun X => CategoryTheory.Iso.refl (F.leftOp.rightOp.obj X)
Instances For
The isomorphism between F.rightOp.leftOp and F.
Equations
- CategoryTheory.Functor.rightOpLeftOpIso F = CategoryTheory.NatIso.ofComponents fun X => CategoryTheory.Iso.refl (F.rightOp.leftOp.obj X)
Instances For
Whenever possible, it is advisable to use the isomorphism rightOpLeftOpIso
instead of this equality of functors.
The opposite of a natural transformation.
Equations
- CategoryTheory.NatTrans.op α = CategoryTheory.NatTrans.mk fun X => (α.app X.unop).op
Instances For
The "unopposite" of a natural transformation.
Equations
- CategoryTheory.NatTrans.unop α = CategoryTheory.NatTrans.mk fun X => (α.app (Opposite.op X)).unop
Instances For
Given a natural transformation α : F.op ⟶ G.op,
we can take the "unopposite" of each component obtaining a natural transformation G ⟶ F.
Equations
- CategoryTheory.NatTrans.removeOp α = CategoryTheory.NatTrans.mk fun X => (α.app (Opposite.op X)).unop
Instances For
Given a natural transformation α : F.unop ⟶ G.unop, we can take the opposite of each
component obtaining a natural transformation G ⟶ F.
Equations
- CategoryTheory.NatTrans.removeUnop α = CategoryTheory.NatTrans.mk fun X => (α.app X.unop).op
Instances For
Given a natural transformation α : F ⟶ G, for F G : C ⥤ Dᵒᵖ,
taking unop of each component gives a natural transformation G.leftOp ⟶ F.leftOp.
Equations
- CategoryTheory.NatTrans.leftOp α = CategoryTheory.NatTrans.mk fun X => (α.app X.unop).unop
Instances For
Given a natural transformation α : F.leftOp ⟶ G.leftOp, for F G : C ⥤ Dᵒᵖ,
taking op of each component gives a natural transformation G ⟶ F.
Equations
- CategoryTheory.NatTrans.removeLeftOp α = CategoryTheory.NatTrans.mk fun X => (α.app (Opposite.op X)).op
Instances For
Given a natural transformation α : F ⟶ G, for F G : Cᵒᵖ ⥤ D,
taking op of each component gives a natural transformation G.rightOp ⟶ F.rightOp.
Equations
- CategoryTheory.NatTrans.rightOp α = CategoryTheory.NatTrans.mk fun X => (α.app (Opposite.op X)).op
Instances For
Given a natural transformation α : F.rightOp ⟶ G.rightOp, for F G : Cᵒᵖ ⥤ D,
taking unop of each component gives a natural transformation G ⟶ F.
Equations
- CategoryTheory.NatTrans.removeRightOp α = CategoryTheory.NatTrans.mk fun X => (α.app X.unop).unop
Instances For
The opposite isomorphism.
Equations
- CategoryTheory.Iso.op α = CategoryTheory.Iso.mk α.hom.op α.inv.op
Instances For
The isomorphism obtained from an isomorphism in the opposite category.
Equations
- CategoryTheory.Iso.unop f = CategoryTheory.Iso.mk f.hom.unop f.inv.unop
Instances For
The natural isomorphism between opposite functors G.op ≅ F.op induced by a natural
isomorphism between the original functors F ≅ G.
Equations
Instances For
The natural isomorphism between functors G ≅ F induced by a natural isomorphism
between the opposite functors F.op ≅ G.op.
Equations
Instances For
The natural isomorphism between functors G.unop ≅ F.unop induced by a natural isomorphism
between the original functors F ≅ G.
Equations
Instances For
An equivalence between categories gives an equivalence between the opposite categories.
Equations
- CategoryTheory.Equivalence.op e = CategoryTheory.Equivalence.mk' e.functor.op e.inverse.op (CategoryTheory.NatIso.op e.unitIso).symm (CategoryTheory.NatIso.op e.counitIso).symm
Instances For
An equivalence between opposite categories gives an equivalence between the original categories.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between arrows of the form A ⟶ B and B.unop ⟶ A.unop. Useful for building
adjunctions.
Note that this (definitionally) gives variants
def opEquiv' (A : C) (B : Cᵒᵖ) : (Opposite.op A ⟶ B) ≃ (B.unop ⟶ A) :=
opEquiv _ _
def opEquiv'' (A : Cᵒᵖ) (B : C) : (A ⟶ Opposite.op B) ≃ (B ⟶ A.unop) :=
opEquiv _ _
def opEquiv''' (A B : C) : (Opposite.op A ⟶ Opposite.op B) ≃ (B ⟶ A) :=
opEquiv _ _
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The equivalence between isomorphisms of the form A ≅ B and B.unop ≅ A.unop.
Note this is definitionally the same as the other three variants:
(Opposite.op A ≅ B) ≃ (B.unop ≅ A)(A ≅ Opposite.op B) ≃ (B ≅ A.unop)(Opposite.op A ≅ Opposite.op B) ≃ (B ≅ A)
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence of functor categories induced by op and unop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence of functor categories induced by leftOp and rightOp.
Equations
- One or more equations did not get rendered due to their size.