module GpdCont.WildCat.HomotopyCategory where open import GpdCont.Prelude open import Cubical.WildCat.Base renaming (_[_,_] to _[_,_]ʷ) open import Cubical.Categories.Category.Base open import Cubical.HITs.SetTruncation as ST using (∥_∥₂) private variable ℓo ℓh : Level ho : WildCat ℓo ℓh → Category ℓo ℓh ho C = def where module C = WildCat C ∥C[_,_]∥₂ : (x y : C.ob) → Type _ ∥C[_,_]∥₂ x y = ∥ C.Hom[_,_] x y ∥₂ isSet-∥C[-,-]∥₂ : ∀ {x y : C.ob} → isSet ∥C[ x , y ]∥₂ isSet-∥C[-,-]∥₂ = ST.isSetSetTrunc def : Category _ _ def .Category.ob = C.ob def .Category.Hom[_,_] x y = ∥C[ x , y ]∥₂ def .Category.id {x} = ST.∣ C.id ∣₂ def .Category._⋆_ = ST.rec2 isSet-∥C[-,-]∥₂ λ f g → ST.∣ f C.⋆ g ∣₂ def .Category.⋆IdL = ST.elim (λ f → ST.isSetPathImplicit) λ f → cong ST.∣_∣₂ (C.⋆IdL f) def .Category.⋆IdR = ST.elim (λ f → ST.isSetPathImplicit) λ f → cong ST.∣_∣₂ (C.⋆IdR f) def .Category.⋆Assoc = ST.elim3 (λ f g h → ST.isSetPathImplicit) λ f g h → cong ST.∣_∣₂ (C.⋆Assoc f g h) def .Category.isSetHom = isSet-∥C[-,-]∥₂ module Notation (C : WildCat ℓo ℓh) where private module C = WildCat C hoHom : (c d : C.ob) → Type _ hoHom = ho C .Category.Hom[_,_] trunc-hom : {c d : C.ob} → C [ c , d ]ʷ → ho C [ c , d ] trunc-hom = ST.∣_∣₂