{-# OPTIONS --safe #-}
module Cubical.Categories.Constructions.Opposite where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Isomorphism
open import Cubical.Categories.Category
open import Cubical.Categories.Functor.Base
open import Cubical.Categories.Isomorphism
private
variable
ℓC ℓC' ℓD ℓD' : Level
open Category
open Functor
open isUnivalent
module _ {C : Category ℓC ℓC'} (isUnivC : isUnivalent C) where
op-Iso-pathToIso : ∀ {x y : C .ob} (p : x ≡ y)
→ op-Iso (pathToIso {C = C} p) ≡ pathToIso {C = C ^op} p
op-Iso-pathToIso =
J (λ y p → op-Iso (pathToIso {C = C} p) ≡ pathToIso {C = C ^op} p)
(CatIso≡ _ _ refl)
op-Iso-pathToIso' : ∀ {x y : C .ob} (p : x ≡ y)
→ op-Iso (pathToIso {C = C ^op} p) ≡ pathToIso {C = C} p
op-Iso-pathToIso' =
J (λ y p → op-Iso (pathToIso {C = C ^op} p) ≡ pathToIso {C = C} p)
(CatIso≡ _ _ refl)
isUnivalentOp : isUnivalent (C ^op)
isUnivalentOp .univ x y = isIsoToIsEquiv
( (λ f^op → CatIsoToPath isUnivC (op-Iso f^op))
, (λ f^op → CatIso≡ _ _
(cong fst
(cong op-Iso ((secEq (univEquiv isUnivC _ _) (op-Iso f^op))))))
, λ p → cong (CatIsoToPath isUnivC) (op-Iso-pathToIso' p)
∙ retEq (univEquiv isUnivC _ _) p)