Documentation

TauCeti.CategoryTheory.Monoidal.Opposite

Opposites and monoidal opposites of monoidal functors #

A functor F : C ⥤ D induces a functor between the monoidal opposites by applying F to the underlying objects and morphisms. If F is lax, oplax, or strong monoidal, so is this induced functor: its tensor comparison is the monoidal opposite of the comparison of F, with the two inputs reversed.

The opposite functor F.op : Cᵒᵖ ⥤ Dᵒᵖ exchanges the two kinds of structure: since morphisms are reversed in Cᵒᵖ and Dᵒᵖ, the opposite of an oplax monoidal functor is lax monoidal and the opposite of a lax monoidal functor is oplax monoidal, with comparison morphisms the opposites of those of F. A strong monoidal functor has a strong monoidal opposite.

These constructions let a monoidal functor whose codomain is (Dᵒᵖ)ᴹᵒᵖ, such as the right dual functor of a rigid monoidal category, be applied twice: its opposite monoidal opposite lands in ((Dᵒᵖ)ᴹᵒᵖ)ᵒᵖᴹᵒᵖ, which is identified with D as a monoidal category by MonoidalOpposite.opMopOpMopEquivalence, since the two reversals of the tensor product cancel.

Main declarations #

A functor between monoidal categories, applied to the underlying objects and morphisms of their monoidal opposites.

Instances For
    @[simp]
    theorem CategoryTheory.Functor.opMop_obj {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) (X : Cᴹᵒᵖ) :
    F.opMop.obj X = { unmop := F.obj X.unmop }

    The monoidal opposite of a functor applies the original functor to the underlying object.

    @[simp]
    theorem CategoryTheory.Functor.opMop_map {C : Type u₁} [Category.{v₁, u₁} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : Cᴹᵒᵖ} (f : X ⟶ Y) :
    F.opMop.map f = (F.map f.unmop).mop

    The monoidal opposite of a functor applies the original functor to the underlying morphism.

    @[instance_reducible]

    Taking monoidal opposites preserves lax monoidal functors.

    @[instance_reducible]

    Taking monoidal opposites preserves oplax monoidal functors.

    @[instance_reducible]

    Taking monoidal opposites preserves strong monoidal functors.

    The monoidal opposite of an equivalence of categories is an equivalence of categories.

    @[simp]

    The unit comparison of the monoidal opposite of a lax monoidal functor.

    @[simp]

    The tensor comparison of the monoidal opposite of a lax monoidal functor.

    @[simp]

    The counit comparison of the monoidal opposite of an oplax monoidal functor.

    @[simp]

    The cotensor comparison of the monoidal opposite of an oplax monoidal functor.

    @[instance_reducible]

    The opposite of an oplax monoidal functor is lax monoidal.

    @[instance_reducible]

    The opposite of a lax monoidal functor is oplax monoidal.

    @[instance_reducible]

    The opposite of a strong monoidal functor is strong monoidal.

    @[simp]

    The unit comparison of the opposite of an oplax monoidal functor.

    @[simp]

    The tensor comparison of the opposite of an oplax monoidal functor.

    @[simp]

    The counit comparison of the opposite of a lax monoidal functor.

    @[simp]

    The cotensor comparison of the opposite of a lax monoidal functor.

    The equivalence between ((Cᵒᵖ)ᴹᵒᵖ)ᵒᵖᴹᵒᵖ and C, removing the four wrappers.

    Instances For
      @[simp]
      theorem CategoryTheory.MonoidalOpposite.opMopOpMopEquivalence_counitIso (C : Type u) [Category.{v, u} C] :
      (opMopOpMopEquivalence C).counitIso = Iso.refl ({ obj := fun (X : C) => { unmop := Opposite.op { unmop := Opposite.op X } }, map := fun {X Y : C} (f : X ⟶ Y) => f.op.mop.op.mop, map_id := ⋯, map_comp := ⋯ }.comp { obj := fun (X : Cᵒᵖᴹᵒᵖᵒᵖᴹᵒᵖ) => Opposite.unop (Opposite.unop X.unmop).unmop, map := fun {X Y : Cᵒᵖᴹᵒᵖᵒᵖᴹᵒᵖ} (f : X ⟶ Y) => f.unmop.unop.unmop.unop, map_id := ⋯, map_comp := ⋯ })
      @[instance_reducible]

      Removing the four wrappers from ((Cᵒᵖ)ᴹᵒᵖ)ᵒᵖᴹᵒᵖ is strong monoidal with identity comparison morphisms: the tensor product is reversed twice.