module GpdCont.Group.DeloopingCategory where

open import GpdCont.Prelude
open import GpdCont.Categories.DisplayedOverContr using (∫ᶜ)

open import Cubical.Algebra.Group
open import Cubical.Data.Unit.Properties using (isContrUnit)
open import Cubical.Categories.Category.Base
open import Cubical.Categories.Displayed.Base

module _ {} (G : Group ) where
  private
    open module G = GroupStr (str G) using (_·_)

  DeloopingCategory : Category _ _
  DeloopingCategory .Category.ob = Unit
  DeloopingCategory .Category.Hom[_,_] _ _ =  G 
  DeloopingCategory .Category.id = G.1g
  DeloopingCategory .Category._⋆_ = G._·_
  DeloopingCategory .Category.⋆IdL = G.·IdL
  DeloopingCategory .Category.⋆IdR = G.·IdR
  DeloopingCategory .Category.⋆Assoc f g h = sym $ G.·Assoc f g h
  DeloopingCategory .Category.isSetHom = G.is-set

  ∫DeloopingCategory :  {ℓo ℓh}  (D : Categoryᴰ DeloopingCategory ℓo ℓh)  Category ℓo (ℓ-max  ℓh)
  ∫DeloopingCategory D = ∫ᶜ DeloopingCategory D isContrUnit