module GpdCont.WildCat.Subtype where open import GpdCont.Prelude renaming (id to idfun) hiding (_⋆_) open import Cubical.Foundations.Function using (flip) renaming (_∘_ to _∘fun_) open import Cubical.Foundations.HLevels open import Cubical.WildCat.Base using (WildCat ; _[_,_]) open import Cubical.WildCat.Functor using (WildFunctor) private variable ℓo ℓh : Level open WildCat record SubtypeHom {ℓ} (C : WildCat ℓo ℓh) (P : C .ob → Type ℓ) (u v : Σ[ x ∈ C .ob ] P x) : Type ℓh where field sub : C [ u .fst , v .fst ] SubtypeCat : ∀ {ℓ} (C : WildCat ℓo ℓh) → (P : C .ob → Type ℓ) → WildCat (ℓ-max ℓo ℓ) ℓh SubtypeCat C P .ob = Σ[ x ∈ C .ob ] P x SubtypeCat C P .Hom[_,_] (x , _) (y , _) = C .Hom[_,_] x y SubtypeCat C P .id = C .id SubtypeCat C P ._⋆_ = C ._⋆_ SubtypeCat C P .⋆IdL = C .⋆IdL SubtypeCat C P .⋆IdR = C .⋆IdR SubtypeCat C P .⋆Assoc = C .⋆Assoc open SubtypeHom SubtypeCat' : ∀ {ℓ} (C : WildCat ℓo ℓh) → (P : C .ob → Type ℓ) → WildCat (ℓ-max ℓo ℓ) ℓh SubtypeCat' C P .ob = Σ[ x ∈ C .ob ] P x SubtypeCat' C P .Hom[_,_] = SubtypeHom C P SubtypeCat' C P .id .sub = C .id SubtypeCat' C P ._⋆_ f g .sub = C ._⋆_ (f .sub) (g .sub) SubtypeCat' C P .⋆IdL f i .sub = C .⋆IdL (f .sub) i SubtypeCat' C P .⋆IdR f i .sub = C .⋆IdR (f .sub) i SubtypeCat' C P .⋆Assoc f g h i .sub = C .⋆Assoc (f .sub) (g .sub) (h .sub) i