{-# OPTIONS --without-K #-}
open import lib.Basics
open import lib.types.Group
open import lib.types.Unit
open import lib.groups.Homomorphisms
open import lib.groups.Lift
module lib.groups.Unit where
Unit-group-structure : GroupStructure Unit
Unit-group-structure = record
{ ident = unit
; inv = λ _ → unit
; comp = λ _ _ → unit
; unitl = λ _ → idp
; unitr = λ _ → idp
; assoc = λ _ _ _ → idp
; invr = λ _ → idp
; invl = λ _ → idp
}
Unit-Group : Group lzero
Unit-Group = group _ Unit-is-set Unit-group-structure
LiftUnit-Group : ∀ {i} → Group i
LiftUnit-Group = Lift-Group Unit-Group
0ᴳ = LiftUnit-Group
contr-is-0ᴳ : ∀ {i} (G : Group i) → is-contr (Group.El G) → G == 0ᴳ
contr-is-0ᴳ G pA = group-ua
(group-hom (λ _ → lift unit) (λ _ _ → idp) , snd (contr-equiv-LiftUnit pA))
0ᴳ-hom-out-level : ∀ {i j} {G : Group i}
→ is-contr (0ᴳ {j} →ᴳ G)
0ᴳ-hom-out-level {G = G} =
(cst-hom ,
λ φ → hom= _ _ (λ= (λ {(lift unit) → ! (GroupHom.pres-ident φ)})))
0ᴳ-hom-in-level : ∀ {i j} {G : Group i}
→ is-contr (G →ᴳ 0ᴳ {j})
0ᴳ-hom-in-level {G = G} =
(cst-hom , λ φ → hom= _ _ (λ= (λ _ → idp)))