module GpdCont.TwoCategory.LocalCategory where open import GpdCont.Prelude open import GpdCont.TwoCategory.Base open import Cubical.Categories.Category.Base open import Cubical.Categories.Functor.Base open import Cubical.Categories.Instances.Terminal using (TerminalCategory ; FunctorFromTerminal) open import Cubical.Categories.Constructions.BinProduct using (_×C_) module _ {ℓo ℓh ℓr} (C : TwoCategory ℓo ℓh ℓr) where private module C = TwoCategory C isLocallyStrict : Type (ℓ-max ℓo ℓh) isLocallyStrict = ∀ x y → isSet (C.hom x y) module _ (x y : TwoCategory.ob C) where LocalCategory : Category ℓh ℓr LocalCategory .Category.ob = C.hom x y LocalCategory .Category.Hom[_,_] = C.rel LocalCategory .Category.id = C.id-rel _ LocalCategory .Category._⋆_ = C.trans LocalCategory .Category.⋆IdL = C.trans-unit-left LocalCategory .Category.⋆IdR = C.trans-unit-right LocalCategory .Category.⋆Assoc = C.trans-assoc LocalCategory .Category.isSetHom = C.is-set-rel _ _ LocalCatIso : ∀ {x y : C.ob} (f g : C.hom x y) → Type _ LocalCatIso {x} {y} f g = CatIso (LocalCategory x y) f g isSetLocalCatIso : ∀ {x y : C.ob} (f g : C.hom x y) → isSet (LocalCatIso f g) isSetLocalCatIso {x} {y} f g = isSet-CatIso {C = LocalCategory x y} f g identityFunctor : ∀ (x : C.ob) → Functor (TerminalCategory {ℓ-zero}) (LocalCategory x x) identityFunctor x = FunctorFromTerminal (C.id-hom x) compositionFunctor : (x y z : C.ob) → Functor (LocalCategory x y ×C LocalCategory y z) (LocalCategory x z) compositionFunctor x y z .Functor.F-ob (f , g) = C.comp-hom f g compositionFunctor x y z .Functor.F-hom (r , s) = C.comp-rel r s compositionFunctor x y z .Functor.F-id = sym $ C.comp-rel-id _ _ compositionFunctor x y z .Functor.F-seq (r , s) (r′ , s′) = C.comp-rel-trans r r′ s s′