Free groups with one generator

module group-theory.free-groups-with-one-generator where
Imports
open import elementary-number-theory.addition-integers
open import elementary-number-theory.group-of-integers
open import elementary-number-theory.integers
open import elementary-number-theory.natural-numbers

open import foundation.contractible-maps
open import foundation.contractible-types
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.identity-types
open import foundation.iterating-automorphisms
open import foundation.sets
open import foundation.subtypes
open import foundation.universe-levels

open import group-theory.groups
open import group-theory.homomorphisms-groups

open import structured-types.initial-pointed-type-equipped-with-automorphism

Idea

A group F equipped with an element x : F is said to satisfy the universal property of the free group with one generator if for every group G the map

  type-hom-Group F G → type-Group G

given by h ↦ h x is an equivalence. The group of integers is a free group with one generator.

Definitions

is-free-group-with-one-generator :
  {l1 : Level} (l2 : Level) (F : Group l1) (x : type-Group F) 
  UU (l1  lsuc l2)
is-free-group-with-one-generator l2 F x =
  (G : Group l2)  is-equiv  (h : type-hom-Group F G)  map-hom-Group F G h x)

Properties

The group of integers is the free group with one generator

module _
  {l : Level} (G : Group l) (g : type-Group G)
  where

  generalized-map-hom-free-group-with-one-generator-ℤ :
      type-Group G  type-Group G
  generalized-map-hom-free-group-with-one-generator-ℤ k =
    map-iterate-automorphism-ℤ k (equiv-mul-Group G g)

  associative-generalized-map-hom-free-group-with-one-generator-ℤ :
    (k : ) (h1 h2 : type-Group G) 
    generalized-map-hom-free-group-with-one-generator-ℤ k (mul-Group G h1 h2) 
    mul-Group G (generalized-map-hom-free-group-with-one-generator-ℤ k h1) h2
  associative-generalized-map-hom-free-group-with-one-generator-ℤ
    ( inl zero-ℕ) h1 h2 =
    inv (associative-mul-Group G (inv-Group G g) h1 h2)
  associative-generalized-map-hom-free-group-with-one-generator-ℤ
    ( inl (succ-ℕ x)) h1 h2 =
    ( ap
      ( mul-Group G (inv-Group G g))
      ( associative-generalized-map-hom-free-group-with-one-generator-ℤ
        ( inl x)
        ( h1)
        ( h2))) 
    ( inv
      ( associative-mul-Group G
        ( inv-Group G g)
        ( generalized-map-hom-free-group-with-one-generator-ℤ (inl x) h1)
        ( h2)))
  associative-generalized-map-hom-free-group-with-one-generator-ℤ
    ( inr (inl star)) h1 h2 =
    refl
  associative-generalized-map-hom-free-group-with-one-generator-ℤ
    ( inr (inr zero-ℕ)) h1 h2 =
    inv (associative-mul-Group G g h1 h2)
  associative-generalized-map-hom-free-group-with-one-generator-ℤ
    ( inr (inr (succ-ℕ x))) h1 h2 =
    ( ap
      ( mul-Group G g)
      ( associative-generalized-map-hom-free-group-with-one-generator-ℤ
        ( inr (inr x))
        ( h1)
        ( h2))) 
    ( inv
      ( associative-mul-Group G g
        ( generalized-map-hom-free-group-with-one-generator-ℤ (inr (inr x)) h1)
        ( h2)))

  map-hom-free-group-with-one-generator-ℤ :   type-Group G
  map-hom-free-group-with-one-generator-ℤ k =
    generalized-map-hom-free-group-with-one-generator-ℤ k (unit-Group G)

  preserves-unit-hom-free-group-with-one-generator-ℤ :
    map-hom-free-group-with-one-generator-ℤ zero-ℤ  unit-Group G
  preserves-unit-hom-free-group-with-one-generator-ℤ =
    preserves-point-map-ℤ-Pointed-Type-With-Aut
      ( pointed-type-with-aut-Group G g)

  preserves-mul-map-hom-free-group-with-one-generator-ℤ :
    (x y : ) 
    ( map-hom-free-group-with-one-generator-ℤ (x +ℤ y)) 
    ( mul-Group G
      ( map-hom-free-group-with-one-generator-ℤ x)
      ( map-hom-free-group-with-one-generator-ℤ y))
  preserves-mul-map-hom-free-group-with-one-generator-ℤ x y =
    ( iterate-automorphism-add-ℤ x y (equiv-mul-Group G g) (unit-Group G)) 
    ( ( ap
        ( generalized-map-hom-free-group-with-one-generator-ℤ x)
        ( inv (left-unit-law-mul-Group G
          ( map-hom-free-group-with-one-generator-ℤ y)))) 
      ( associative-generalized-map-hom-free-group-with-one-generator-ℤ x
        ( unit-Group G)
        ( map-hom-free-group-with-one-generator-ℤ y)))

  hom-free-group-with-one-generator-ℤ : type-hom-Group ℤ-Group G
  pr1 hom-free-group-with-one-generator-ℤ =
    map-hom-free-group-with-one-generator-ℤ
  pr2 hom-free-group-with-one-generator-ℤ =
    preserves-mul-map-hom-free-group-with-one-generator-ℤ

  htpy-hom-free-group-with-one-generator-ℤ :
    (h : type-hom-Group ℤ-Group G)  map-hom-Group ℤ-Group G h one-ℤ  g 
    htpy-hom-Group ℤ-Group G hom-free-group-with-one-generator-ℤ h
  htpy-hom-free-group-with-one-generator-ℤ h p =
    htpy-map-ℤ-Pointed-Type-With-Aut
      ( pair (pointed-type-Group G) (equiv-mul-Group G g))
      ( pair
        ( map-hom-Group ℤ-Group G h)
        ( pair
          ( preserves-unit-hom-Group ℤ-Group G h)
          ( λ x 
            ( ap
              ( map-hom-Group ℤ-Group G h)
              ( is-left-add-one-succ-ℤ x)) 
            ( ( preserves-mul-hom-Group ℤ-Group G h one-ℤ x) 
              ( ap ( mul-Group' G (map-hom-Group ℤ-Group G h x)) p)))))

  is-contr-total-hom-free-group-with-one-generator-ℤ :
    is-contr
      ( Σ ( type-hom-Group ℤ-Group G)
          ( λ h  map-hom-Group ℤ-Group G h one-ℤ  g))
  pr1 (pr1 is-contr-total-hom-free-group-with-one-generator-ℤ) =
    hom-free-group-with-one-generator-ℤ
  pr2 (pr1 is-contr-total-hom-free-group-with-one-generator-ℤ) =
    right-unit-law-mul-Group G g
  pr2 is-contr-total-hom-free-group-with-one-generator-ℤ (pair h p) =
    eq-type-subtype
      ( λ f  Id-Prop (set-Group G) (map-hom-Group ℤ-Group G f one-ℤ) g)
      ( eq-htpy-hom-Group ℤ-Group G
        ( htpy-hom-free-group-with-one-generator-ℤ h p))

is-hom-free-group-with-one-generator-ℤ :
  {l : Level}  is-free-group-with-one-generator l ℤ-Group one-ℤ
is-hom-free-group-with-one-generator-ℤ G =
  is-equiv-is-contr-map (is-contr-total-hom-free-group-with-one-generator-ℤ G)