# Powers of elements in semirings ```agda module ring-theory.powers-of-elements-semirings where ``` <details><summary>Imports</summary> ```agda open import elementary-number-theory.addition-natural-numbers open import elementary-number-theory.multiplication-natural-numbers open import elementary-number-theory.natural-numbers open import foundation.identity-types open import foundation.universe-levels open import group-theory.powers-of-elements-monoids open import ring-theory.semirings ``` </details> ## Idea The power operation on a semiring is the map `n x ↦ xⁿ`, which is defined by iteratively multiplying `x` with itself `n` times. ## Definition ```agda power-Semiring : {l : Level} (R : Semiring l) → ℕ → type-Semiring R → type-Semiring R power-Semiring R n x = power-Monoid (multiplicative-monoid-Semiring R) n x ``` ## Properties ### `1ⁿ = 1` ```agda module _ {l : Level} (R : Semiring l) where power-one-Semiring : (n : ℕ) → power-Semiring R n (one-Semiring R) = one-Semiring R power-one-Semiring = power-unit-Monoid (multiplicative-monoid-Semiring R) ``` ### `xⁿ⁺¹ = xⁿx` ```agda module _ {l : Level} (R : Semiring l) where power-succ-Semiring : (n : ℕ) (x : type-Semiring R) → power-Semiring R (succ-ℕ n) x = mul-Semiring R (power-Semiring R n x) x power-succ-Semiring = power-succ-Monoid (multiplicative-monoid-Semiring R) ``` ### `xⁿ⁺¹ = xxⁿ` ```agda module _ {l : Level} (R : Semiring l) where power-succ-Semiring' : (n : ℕ) (x : type-Semiring R) → power-Semiring R (succ-ℕ n) x = mul-Semiring R x (power-Semiring R n x) power-succ-Semiring' = power-succ-Monoid' (multiplicative-monoid-Semiring R) ``` ### Powers by sums of natural numbers are products of powers ```agda module _ {l : Level} (R : Semiring l) where distributive-power-add-Semiring : (m n : ℕ) {x : type-Semiring R} → power-Semiring R (m +ℕ n) x = mul-Semiring R (power-Semiring R m x) (power-Semiring R n x) distributive-power-add-Semiring = distributive-power-add-Monoid (multiplicative-monoid-Semiring R) ``` ### If `x` commutes with `y` then so do their powers ```agda module _ {l : Level} (R : Semiring l) where commute-powers-Semiring' : (n : ℕ) {x y : type-Semiring R} → ( mul-Semiring R x y = mul-Semiring R y x) → ( mul-Semiring R (power-Semiring R n x) y) = ( mul-Semiring R y (power-Semiring R n x)) commute-powers-Semiring' = commute-powers-Monoid' (multiplicative-monoid-Semiring R) commute-powers-Semiring : (m n : ℕ) {x y : type-Semiring R} → ( mul-Semiring R x y = mul-Semiring R y x) → ( mul-Semiring R ( power-Semiring R m x) ( power-Semiring R n y)) = ( mul-Semiring R ( power-Semiring R n y) ( power-Semiring R m x)) commute-powers-Semiring = commute-powers-Monoid (multiplicative-monoid-Semiring R) ``` ### If `x` commutes with `y`, then powers distribute over the product of `x` and `y` ```agda module _ {l : Level} (R : Semiring l) where distributive-power-mul-Semiring : (n : ℕ) {x y : type-Semiring R} → (H : mul-Semiring R x y = mul-Semiring R y x) → power-Semiring R n (mul-Semiring R x y) = mul-Semiring R (power-Semiring R n x) (power-Semiring R n y) distributive-power-mul-Semiring = distributive-power-mul-Monoid (multiplicative-monoid-Semiring R) ``` ### Powers by products of natural numbers are iterated powers ```agda module _ {l : Level} (R : Semiring l) where power-mul-Semiring : (m n : ℕ) {x : type-Semiring R} → power-Semiring R (m *ℕ n) x = power-Semiring R n (power-Semiring R m x) power-mul-Semiring = power-mul-Monoid (multiplicative-monoid-Semiring R) ```