{-# OPTIONS --safe #-}
module Cubical.Categories.Instances.Cospan where

open import Cubical.Foundations.Prelude
open import Cubical.Categories.Category
open import Cubical.Data.Unit
open import Cubical.Data.Empty

open Category

data 𝟛 : Type ℓ-zero where
   : 𝟛
   : 𝟛
   : 𝟛

CospanCat : Category ℓ-zero ℓ-zero
CospanCat .ob = 𝟛

CospanCat .Hom[_,_]   = Unit
CospanCat .Hom[_,_]   = Unit
CospanCat .Hom[_,_]   = Unit
CospanCat .Hom[_,_]   = Unit
CospanCat .Hom[_,_]   = Unit
CospanCat .Hom[_,_] _ _ = 

CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt
CospanCat ._⋆_ {x = } {} {} f g = tt

CospanCat .id {} = tt
CospanCat .id {} = tt
CospanCat .id {} = tt

CospanCat .⋆IdL {} {} _ = refl
CospanCat .⋆IdL {} {} _ = refl
CospanCat .⋆IdL {} {} _ = refl
CospanCat .⋆IdL {} {} _ = refl
CospanCat .⋆IdL {} {} _ = refl

CospanCat .⋆IdR {} {} _ = refl
CospanCat .⋆IdR {} {} _ = refl
CospanCat .⋆IdR {} {} _ = refl
CospanCat .⋆IdR {} {} _ = refl
CospanCat .⋆IdR {} {} _ = refl

CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl
CospanCat .⋆Assoc {} {} {} {} _ _ _ = refl

CospanCat .isSetHom {} {} = isSetUnit
CospanCat .isSetHom {} {} = isSetUnit
CospanCat .isSetHom {} {} = isSetUnit
CospanCat .isSetHom {} {} = isSetUnit
CospanCat .isSetHom {} {} = isSetUnit


-- makes it easier to write functors into CospanCat
isPropHomCospanCat : (x y : ob CospanCat)  isProp (CospanCat [ x , y ])
isPropHomCospanCat   = isPropUnit
isPropHomCospanCat   = isPropUnit
isPropHomCospanCat   = isProp⊥
isPropHomCospanCat   = isProp⊥
isPropHomCospanCat   = isPropUnit
isPropHomCospanCat   = isProp⊥
isPropHomCospanCat   = isProp⊥
isPropHomCospanCat   = isPropUnit
isPropHomCospanCat   = isPropUnit