Integer powers of elements in large groups

Content created by Louis Wasserman.

Created on 2025-10-14.
Last modified on 2025-10-14.

module group-theory.integer-powers-of-elements-large-groups where
Imports
open import elementary-number-theory.addition-integers
open import elementary-number-theory.integers
open import elementary-number-theory.multiplication-integers
open import elementary-number-theory.natural-numbers

open import foundation.action-on-identifications-functions
open import foundation.identity-types
open import foundation.injective-maps
open import foundation.transport-along-identifications
open import foundation.universe-levels

open import group-theory.integer-powers-of-elements-groups
open import group-theory.large-groups
open import group-theory.powers-of-elements-large-groups
open import group-theory.powers-of-elements-large-monoids

Idea

The power operation on a large group is the map n x ↦ xⁿ, which is defined by iteratively multiplying x with itself n times. In this file we consider the case where n is an integer.

Definition

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  int-power-Large-Group :
    {l : Level}    type-Large-Group G l  type-Large-Group G l
  int-power-Large-Group {l} = integer-power-Group (group-Large-Group G l)

Properties

The standard embedding of natural numbers in the integers preserves powers of large group elements

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-int-Large-Group :
      {l : Level} (n : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (int-ℕ n) x  power-Large-Group G n x
    int-power-int-Large-Group {l} =
      integer-power-int-Group (group-Large-Group G l)

The integer power x⁰ is the unit element

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-zero-Large-Group :
      {l : Level} (x : type-Large-Group G l) 
      int-power-Large-Group G zero-ℤ x  raise-unit-Large-Group G l
    int-power-zero-Large-Group {l} =
      integer-power-zero-Group (group-Large-Group G l)

x¹ = x

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-one-Large-Group :
      {l : Level} (x : type-Large-Group G l) 
      int-power-Large-Group G one-ℤ x  x
    int-power-one-Large-Group {l} =
      integer-power-one-Group (group-Large-Group G l)

The integer power x⁻¹ is the inverse of x

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-neg-one-Large-Group :
      {l : Level} (x : type-Large-Group G l) 
      int-power-Large-Group G neg-one-ℤ x  inv-Large-Group G x
    int-power-neg-one-Large-Group {l} =
      integer-power-neg-one-Group (group-Large-Group G l)

The integer power xᵐ⁺ⁿ computes to xᵐxⁿ

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    distributive-int-power-add-Large-Group :
      {l : Level} (x : type-Large-Group G l) (m n : ) 
      int-power-Large-Group G (m +ℤ n) x 
      mul-Large-Group G
        ( int-power-Large-Group G m x)
        ( int-power-Large-Group G n x)
    distributive-int-power-add-Large-Group {l} =
      distributive-integer-power-add-Group (group-Large-Group G l)

The integer power x⁻ᵏ is the inverse of the integer power xᵏ

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-neg-Large-Group :
      {l : Level} (k : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (neg-ℤ k) x 
      inv-Large-Group G (int-power-Large-Group G k x)
    int-power-neg-Large-Group {l} =
      integer-power-neg-Group (group-Large-Group G l)

xᵏ⁺¹ = xᵏx and xᵏ⁺¹ = xxᵏ

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-succ-Large-Group :
      {l : Level} (k : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (succ-ℤ k) x 
      mul-Large-Group G (int-power-Large-Group G k x) x
    int-power-succ-Large-Group {l} =
      integer-power-succ-Group (group-Large-Group G l)

    int-power-succ-Large-Group' :
      {l : Level} (k : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (succ-ℤ k) x 
      mul-Large-Group G x (int-power-Large-Group G k x)
    int-power-succ-Large-Group' {l} =
      integer-power-succ-Group' (group-Large-Group G l)

xᵏ⁻¹ = xᵏx⁻¹ and xᵏ⁻¹ = x⁻¹xᵏ

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-pred-Large-Group :
      {l : Level} (k : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (pred-ℤ k) x 
      mul-Large-Group G (int-power-Large-Group G k x) (inv-Large-Group G x)
    int-power-pred-Large-Group {l} =
      integer-power-pred-Group (group-Large-Group G l)

    int-power-pred-Large-Group' :
      {l : Level} (k : ) (x : type-Large-Group G l) 
      int-power-Large-Group G (pred-ℤ k) x 
      mul-Large-Group G (inv-Large-Group G x) (int-power-Large-Group G k x)
    int-power-pred-Large-Group' {l} =
      integer-power-pred-Group' (group-Large-Group G l)

1ᵏ = 1

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    raise-int-power-unit-Large-Group :
      (l : Level) (k : ) 
      int-power-Large-Group G k (raise-unit-Large-Group G l) 
      raise-unit-Large-Group G l
    raise-int-power-unit-Large-Group l =
      integer-power-unit-Group (group-Large-Group G l)

If x commutes with y then so do their integer powers

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  (let _*_ = mul-Large-Group G)
  (let mul-inv = inv-Large-Group G)
  (let
    _^_ : {l : Level}  type-Large-Group G l    type-Large-Group G l
    x ^ k = int-power-Large-Group G k x)
  where

  abstract
    commute-int-powers-Large-Group' :
      {l1 l2 : Level} (k : ) 
      (x : type-Large-Group G l1) (y : type-Large-Group G l2) 
      (mul-Large-Group G x y  mul-Large-Group G y x) 
      mul-Large-Group G (int-power-Large-Group G k x) y 
      mul-Large-Group G y (int-power-Large-Group G k x)
    commute-int-powers-Large-Group' {l1} {l2} n x y xy=yx =
      let
        x⁻¹y=yx⁻¹ =
          is-injective-emb
            ( emb-left-mul-Large-Group G (l1  l2) x)
            ( equational-reasoning
              x * (mul-inv x * y)
               raise-Large-Group G l1 y
                by cancel-left-mul-div-Large-Group G x y
               (y * x) * mul-inv x
                by inv (cancel-right-mul-div-Large-Group G x y)
               (x * y) * mul-inv x
                by ap-mul-Large-Group G (inv xy=yx) refl
               x * (y * mul-inv x)
                by associative-mul-Large-Group G _ _ _)
        nonneg-case n =
          equational-reasoning
            (x ^ int-ℕ n) * y
             power-Large-Group G n x * y
              by ap-mul-Large-Group G (int-power-int-Large-Group G n x) refl
             y * power-Large-Group G n x
              by
                commute-powers-Large-Monoid'
                  ( large-monoid-Large-Group G)
                  ( n)
                  ( xy=yx)
             y * (x ^ int-ℕ n)
              by
                ap-mul-Large-Group G
                  ( refl)
                  ( inv (int-power-int-Large-Group G n x))
      in
        ind-ℤ
          ( λ k  (x ^ k) * y  y * (x ^ k))
          ( equational-reasoning
            (x ^ neg-one-ℤ) * y
             mul-inv x * y
              by ap-mul-Large-Group G (int-power-neg-one-Large-Group G x) refl
             y * mul-inv x
              by x⁻¹y=yx⁻¹
             y * (x ^ neg-one-ℤ)
              by
                ap-mul-Large-Group G
                  ( refl)
                  ( inv (int-power-neg-one-Large-Group G x)))
          ( λ n x⁻ⁿy=yx⁻ⁿ 
            equational-reasoning
              (x ^ in-neg-ℤ (succ-ℕ n)) * y
               ((x ^ in-neg-ℤ n) * mul-inv x) * y
                by
                  ap-mul-Large-Group G
                    ( int-power-pred-Large-Group G (in-neg-ℤ n) x)
                    ( refl)
               (x ^ in-neg-ℤ n) * (mul-inv x * y)
                by associative-mul-Large-Group G _ _ _
               (x ^ in-neg-ℤ n) * (y * mul-inv x)
                by ap-mul-Large-Group G refl x⁻¹y=yx⁻¹
               ((x ^ in-neg-ℤ n) * y) * mul-inv x
                by inv (associative-mul-Large-Group G _ _ _)
               (y * (x ^ in-neg-ℤ n)) * mul-inv x
                by ap-mul-Large-Group G x⁻ⁿy=yx⁻ⁿ refl
               y * ((x ^ in-neg-ℤ n) * mul-inv x)
                by associative-mul-Large-Group G _ _ _
               y * (x ^ in-neg-ℤ (succ-ℕ n))
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( inv (int-power-pred-Large-Group G (in-neg-ℤ n) x)))
          ( nonneg-case 0)
          ( nonneg-case 1)
          ( λ n _  nonneg-case (succ-ℕ (succ-ℕ n)))
          ( n)

    commute-int-powers-Large-Group'' :
      {l1 l2 : Level} (k : ) 
      (x : type-Large-Group G l1) (y : type-Large-Group G l2) 
      (mul-Large-Group G x y  mul-Large-Group G y x) 
      mul-Large-Group G x (int-power-Large-Group G k y) 
      mul-Large-Group G (int-power-Large-Group G k y) x
    commute-int-powers-Large-Group'' {l1} {l2} n x y xy=yx =
      let
        xy⁻¹=y⁻¹x =
          is-injective-emb
            ( emb-right-mul-Large-Group G (l1  l2) y)
            ( equational-reasoning
              (x * mul-inv y) * y
               raise-Large-Group G l2 x
                by cancel-right-div-mul-Large-Group G y x
               mul-inv y * (y * x)
                by inv (cancel-left-div-mul-Large-Group G y x)
               mul-inv y * (x * y)
                by ap-mul-Large-Group G refl (inv xy=yx)
               (mul-inv y * x) * y
                by inv (associative-mul-Large-Group G _ _ _))
        nonneg-case n =
          equational-reasoning
            x * (y ^ int-ℕ n)
             x * power-Large-Group G n y
              by ap-mul-Large-Group G refl (int-power-int-Large-Group G n y)
             power-Large-Group G n y * x
              by
                commute-powers-Large-Monoid''
                  ( large-monoid-Large-Group G)
                  ( n)
                  ( xy=yx)
             (y ^ int-ℕ n) * x
              by
                ap-mul-Large-Group G
                  ( inv (int-power-int-Large-Group G n y))
                  ( refl)
      in
        ind-ℤ
          ( λ k 
            mul-Large-Group G x (int-power-Large-Group G k y) 
            mul-Large-Group G (int-power-Large-Group G k y) x)
          ( equational-reasoning
            x * (y ^ neg-one-ℤ)
             x * mul-inv y
              by ap-mul-Large-Group G refl (int-power-neg-one-Large-Group G y)
             mul-inv y * x
              by xy⁻¹=y⁻¹x
             (y ^ neg-one-ℤ) * x
              by
                ap-mul-Large-Group G
                  ( inv (int-power-neg-one-Large-Group G y))
                  ( refl))
          ( λ n xy⁻ⁿ=y⁻ⁿx 
            equational-reasoning
              x * (y ^ in-neg-ℤ (succ-ℕ n))
               x * (mul-inv y * (y ^ in-neg-ℤ n))
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( int-power-pred-Large-Group' G (in-neg-ℤ n) y)
               (x * mul-inv y) * (y ^ in-neg-ℤ n)
                by inv (associative-mul-Large-Group G _ _ _)
               (mul-inv y * x) * (y ^ in-neg-ℤ n)
                by ap-mul-Large-Group G xy⁻¹=y⁻¹x refl
               mul-inv y * (x * (y ^ in-neg-ℤ n))
                by associative-mul-Large-Group G _ _ _
               mul-inv y * ((y ^ in-neg-ℤ n) * x)
                by ap-mul-Large-Group G refl xy⁻ⁿ=y⁻ⁿx
               (mul-inv y * (y ^ in-neg-ℤ n)) * x
                by inv (associative-mul-Large-Group G _ _ _)
               (y ^ in-neg-ℤ (succ-ℕ n)) * x
                by
                  ap-mul-Large-Group G
                    ( inv (int-power-pred-Large-Group' G (in-neg-ℤ n) y))
                    ( refl))
          ( nonneg-case 0)
          ( nonneg-case 1)
          ( λ n _  nonneg-case (succ-ℕ (succ-ℕ n)))
          ( n)

    commute-int-powers-Large-Group :
      {l1 l2 : Level} (k l : ) 
      {x : type-Large-Group G l1} {y : type-Large-Group G l2} 
      ( mul-Large-Group G x y  mul-Large-Group G y x) 
      ( mul-Large-Group G
          ( int-power-Large-Group G k x)
          ( int-power-Large-Group G l y) 
        mul-Large-Group G
          ( int-power-Large-Group G l y)
          ( int-power-Large-Group G k x))
    commute-int-powers-Large-Group k l {x} {y} xy=yx =
      commute-int-powers-Large-Group' k x _
        ( commute-int-powers-Large-Group'' l x y xy=yx)

If x commutes with y, then integer powers distribute over the product of x and y

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    distributive-int-power-mul-Large-Group :
      {l1 l2 : Level} (k : ) 
      (x : type-Large-Group G l1) (y : type-Large-Group G l2) 
      ( mul-Large-Group G x y  mul-Large-Group G y x) 
      int-power-Large-Group G k (mul-Large-Group G x y) 
      mul-Large-Group G
        ( int-power-Large-Group G k x)
        ( int-power-Large-Group G k y)
    distributive-int-power-mul-Large-Group {l1} {l2} l x y xy=yx =
      let
        _^_ : {l : Level}  type-Large-Group G l    type-Large-Group G l
        x ^ k = int-power-Large-Group G k x
        _*_ = mul-Large-Group G
        mul-inv = inv-Large-Group G
        nonneg-case n =
          equational-reasoning
            (x * y) ^ int-ℕ n
             power-Large-Group G n (x * y)
              by int-power-int-Large-Group G n (x * y)
             power-Large-Group G n x * power-Large-Group G n y
              by distributive-power-mul-Large-Group G n xy=yx
             (x ^ int-ℕ n) * (y ^ int-ℕ n)
              by
                ap-mul-Large-Group G
                  ( inv (int-power-int-Large-Group G n x))
                  ( inv (int-power-int-Large-Group G n y))
        x⁻¹y⁻¹=⟨xy⟩⁻¹ =
          eq-sim-Large-Group G _ _
            ( unique-right-inv-Large-Group G (x * y) (mul-inv x * mul-inv y)
              ( equational-reasoning
                (x * y) * (mul-inv x * mul-inv y)
                 (y * x) * (mul-inv x * mul-inv y)
                  by ap-mul-Large-Group G xy=yx refl
                 y * (x * (mul-inv x * mul-inv y))
                  by associative-mul-Large-Group G _ _ _
                 y * raise-Large-Group G l1 (mul-inv y)
                  by
                    ap-mul-Large-Group G
                      ( refl)
                      ( cancel-left-mul-div-Large-Group G x _)
                 raise-Large-Group G l1 (y * mul-inv y)
                  by raise-right-mul-Large-Group G _ _
                 raise-Large-Group G l1 (raise-unit-Large-Group G l2)
                  by
                    ap
                      ( raise-Large-Group G l1)
                      ( right-inverse-law-mul-Large-Group G y)
                 raise-unit-Large-Group G (l1  l2)
                  by raise-raise-Large-Group G _))
      in
        ind-ℤ
          ( λ k 
            int-power-Large-Group G k (mul-Large-Group G x y) 
            mul-Large-Group G
              ( int-power-Large-Group G k x)
              ( int-power-Large-Group G k y))
          ( equational-reasoning
            (x * y) ^ neg-one-ℤ
             mul-inv (x * y)
              by int-power-neg-one-Large-Group G _
             mul-inv x * mul-inv y
              by inv x⁻¹y⁻¹=⟨xy⟩⁻¹
             (x ^ neg-one-ℤ) * (y ^ neg-one-ℤ)
              by
                ap-mul-Large-Group G
                  ( inv (int-power-neg-one-Large-Group G x))
                  ( inv (int-power-neg-one-Large-Group G y)))
          ( λ n ⟨xy⟩⁻ⁿ=x⁻ⁿy⁻ⁿ 

            equational-reasoning
              (x * y) ^ in-neg-ℤ (succ-ℕ n)
               ((x * y) ^ in-neg-ℤ n) * mul-inv (x * y)
                by int-power-pred-Large-Group G (in-neg-ℤ n) (x * y)
               (( x ^ in-neg-ℤ n) * (y ^ in-neg-ℤ n)) * (mul-inv x * mul-inv y)
                by
                  ap-mul-Large-Group G ⟨xy⟩⁻ⁿ=x⁻ⁿy⁻ⁿ (inv x⁻¹y⁻¹=⟨xy⟩⁻¹)
               (x ^ in-neg-ℤ n) * ((y ^ in-neg-ℤ n) * (mul-inv x * mul-inv y))
                by
                  associative-mul-Large-Group G _ _ _
               (x ^ in-neg-ℤ n) * (((y ^ in-neg-ℤ n) * mul-inv x) * mul-inv y)
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( inv (associative-mul-Large-Group G _ _ _))
              
                (x ^ in-neg-ℤ n) *
                (((y ^ in-neg-ℤ n) * (x ^ neg-one-ℤ)) * mul-inv y)
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( ap-mul-Large-Group G
                      ( ap-mul-Large-Group G
                        ( refl)
                        ( inv (int-power-neg-one-Large-Group G x)))
                      ( refl))
              
                (x ^ in-neg-ℤ n) *
                (((x ^ neg-one-ℤ) * (y ^ in-neg-ℤ n)) * mul-inv y)
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( ap-mul-Large-Group G
                      ( commute-int-powers-Large-Group G
                        ( in-neg-ℤ n)
                        ( neg-one-ℤ)
                        ( inv xy=yx))
                      ( refl))
              
                (x ^ in-neg-ℤ n) *
                ((x ^ neg-one-ℤ) * ((y ^ in-neg-ℤ n) * mul-inv y))
                by
                  ap-mul-Large-Group G
                    ( refl)
                    ( associative-mul-Large-Group G _ _ _)
              
                ((x ^ in-neg-ℤ n) * (x ^ neg-one-ℤ)) *
                ((y ^ in-neg-ℤ n) * mul-inv y)
                by
                  inv (associative-mul-Large-Group G _ _ _)
               ((x ^ in-neg-ℤ n) * mul-inv x) * (y ^ in-neg-ℤ (succ-ℕ n))
                  by
                    ap-mul-Large-Group G
                      ( ap-mul-Large-Group G
                        ( refl)
                        ( int-power-neg-one-Large-Group G x))
                      ( inv (int-power-pred-Large-Group G (in-neg-ℤ n) y))
               (x ^ in-neg-ℤ (succ-ℕ n)) * (y ^ in-neg-ℤ (succ-ℕ n))
                by
                  ap-mul-Large-Group G
                    ( inv (int-power-pred-Large-Group G (in-neg-ℤ n) x))
                    ( refl))
          ( nonneg-case 0)
          ( nonneg-case 1)
          ( λ n _  nonneg-case (succ-ℕ (succ-ℕ n)))
          ( l)

Powers by products of integers are iterated integer powers

module _
  {α : Level  Level} {β : Level  Level  Level} (G : Large-Group α β)
  where

  abstract
    int-power-mul-Large-Group :
      {l1 : Level} (k l : ) (x : type-Large-Group G l1) 
      int-power-Large-Group G (k *ℤ l) x 
      int-power-Large-Group G l (int-power-Large-Group G k x)
    int-power-mul-Large-Group {l1} =
      integer-power-mul-Group (group-Large-Group G l1)

See also

Recent changes