open import GpdCont.Prelude

open import Cubical.Categories.Category.Base

module GpdCont.Categories.Opposite {} {ℓo ℓh} {C : Category ℓo ℓh} where

import GpdCont.Categories.Products as CatProducts
import GpdCont.Categories.Coproducts as CatCoproducts

private
  module C = CatCoproducts C 

  Cᵒᵖ = C ^op
  module Cᵒᵖ = CatProducts Cᵒᵖ 

OpProducts : C.Coproducts  Cᵒᵖ.Products
OpProducts ⨆C K d = prod where
  module ⨆C = CatCoproducts.UniversalElement (⨆C K d)

  prod : Cᵒᵖ.Product K d
  prod .CatProducts.UniversalElement.vertex = ⨆C.vertex
  prod .CatProducts.UniversalElement.element = ⨆C.element
  prod .CatProducts.UniversalElement.universal = ⨆C.universal