module Cat.Monoidal.Opposite {o ℓ} {C : Precategory o ℓ} (Cᵐ : Monoidal-category C) where
Opposite monoidal categories🔗
If has the structure of a monoidal category, then there is a natural monoidal structure on its opposite category with the same unit and the opposite bifunctor for the tensor product.
_^mop : Monoidal-category (C ^op) _^mop .-⊗- = bop C.-⊗- _^mop .Unit = C.Unit
The coherence isomorphisms are straightforward to obtain from those of Since we only need morphisms in the opposite direction, we can can take the inverses of the coherence isomorphisms for
_^mop .unitor-l = to-natural-iso record where eta x = C.λ← _ inv x = C.λ→ _ eta∘inv x = C.invl C.λ≅ inv∘eta x = C.invr C.λ≅ natural x y f = C.λ←nat _ _^mop .unitor-r = to-natural-iso record where eta x = C.ρ← _ inv x = C.ρ→ _ eta∘inv x = C.invl C.ρ≅ inv∘eta x = C.invr C.ρ≅ natural x y f = C.ρ←nat _ _^mop .associator = to-natural-iso record where eta (x , y , z) = C.α← (x , y , z) inv (x , y , z) = C.α→ (x , y , z) eta∘inv (x , y , z) = C.invl C.α≅ inv∘eta (x , y , z) = C.invr C.α≅ natural (x , y , z) (x' , y' , z') f = C.cdr (C.car (ap (_ C.▶_) (C.-⊗-.rlmap _ _)) ∙ C.-⊗-.rlmap _ _) ∙∙ Isoⁿ.from C.associator .is-natural _ _ f ∙∙ C.car (C.-⊗-.lrmap _ _ ∙ C.cdr (ap (C._◀ _) (C.-⊗-.lrmap _ _)))
The triangle and pentagon identities are acquired from those of by inverting both sides. In the latter case we need to take care to reassociate composition.
_^mop .triangle = C.inverse-unique₀ (C.α≅ C.Iso⁻¹ C.∙Iso C.◀.F-map-iso C.ρ≅ C.Iso⁻¹) (C.▶.F-map-iso C.λ≅ C.Iso⁻¹) C.triangle _^mop .pentagon = sym (C.assoc _ _ _) ∙ C.inverse-unique₀ ( C.▶.F-map-iso (C.α≅ C.Iso⁻¹) C.∙Iso (C.α≅ C.Iso⁻¹) C.∙Iso C.◀.F-map-iso (C.α≅ C.Iso⁻¹)) (C.α≅ C.Iso⁻¹ C.∙Iso C.α≅ C.Iso⁻¹) (sym (C.assoc _ _ _) ∙ C.pentagon)