module GpdCont.TwoCategory.GroupoidEndo where
open import GpdCont.Prelude
open import GpdCont.TwoCategory.Base
open import GpdCont.TwoCategory.Isomorphism
open import GpdCont.TwoCategory.TwoDiscrete using (TwoDiscrete)
open import GpdCont.WildCat.TypeOfHLevel using (hGroupoidEndo ; isGroupoidEndoNatTrans)
open import GpdCont.WildCat.NatTrans using (WildNatTransPath ; isGroupoidHom→WildNatTransSquare)
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.GroupoidLaws
private
variable
ℓ ℓ' : Level
X Y Z : Type ℓ
isGroupoid→ : isGroupoid Y → isGroupoid (X → Y)
isGroupoid→ = isGroupoidΠ ∘ const
_→Gpd_ : (X Y : hGroupoid ℓ) → hGroupoid ℓ
X →Gpd Y = (⟨ X ⟩ → ⟨ Y ⟩) , isGroupoid→ (str Y)
_∙htpy_ : ∀ {f₁ f₂ : X → Y} {g₁ g₂ : Y → Z}
→ (p : f₁ ≡ f₂)
→ (q : g₁ ≡ g₂)
→ (f₁ ⋆ g₁ ≡ f₂ ⋆ g₂)
_∙htpy_ p q = cong₂ _⋆_ p q
module _ (ℓ : Level) where
Endo : TwoCategory (ℓ-suc ℓ) (ℓ-suc ℓ) (ℓ-suc ℓ)
Endo = TwoDiscrete (hGroupoidEndo ℓ) (isGroupoidEndoNatTrans ℓ)