module GpdCont.GroupAction.Integer where
open import GpdCont.Prelude
open import GpdCont.GroupAction.Base
open import Cubical.Foundations.HLevels
open import Cubical.Algebra.Group.Base using (Group)
open import Cubical.Algebra.Group.Morphisms using (GroupHom)
open import Cubical.Algebra.Group.MorphismProperties using (idGroupHom)
open import Cubical.HITs.FreeGroup as FG using (freeGroupGroup)
ℤ : Group ℓ-zero
ℤ = freeGroupGroup Unit
1ℤ : ⟨ ℤ ⟩
1ℤ = FG.η tt
ℤ-rec : ∀ {ℓ} {G : Group ℓ} (g₀ : ⟨ G ⟩) → GroupHom ℤ G
ℤ-rec g₀ = FG.rec (λ _ → g₀)
ℤ-action : ∀ {ℓ} {X : hSet ℓ} (σ : ⟨ X ⟩ ≃ ⟨ X ⟩) → Action ℤ X
ℤ-action = GroupHom→Action ∘ ℤ-rec