Positive Natural Number Exponentiation for Semigroups #
This file defines and instantiates an exponentiation operation on semigroups. Exponentiation is
typically defined for natural number exponents, but here we require non-zero natural numbers (ℕ+)
because x^0 is not well-defined in a semigroup context.
This file also contains lemmas about the properties of this exponentiation operation and of the
ℕ+ type.
Main definitions #
Semigroup.pNatPow- Definition of exponentiation in semigroups using positive naturals.
Main theorems #
In the following statements, x y : S and m n : ℕ+ where S is a semigroup:
Semigroup.pow_add-x ^ m * x ^ n = x ^ (m + n).Semigroup.mul_pow_mul-(x * y) ^ n * x = x * (y * x) ^ n.Semigroup.pow_mul_comm-x ^ m * x ^ n = x ^ n * x ^ m.Semigroup.pow_mul_comm'-x ^ n * x = x * x ^ n.Semigroup.pow_mul-(x ^ n) ^ m = x ^ (m * n).Semigroup.pow_right_comm-(x ^ m) ^ n = (x ^ n) ^ m.Monoid.pow_pNat_to_nat-x ^ n = x ^ (n : ℕ).WithOne.pow_eq-(↑x : WithOne S) ^ n = ↑(x ^ n).
Implementation notes #
The simp-tagged lemmas collectively normalize power expressions when calling simp.
For example, (a * b) ^ n * (a * b) ^ m * a ^ 1 normalizes to a * (b * a) ^ (n + m).
References #
Analogous definitions and lemmas for exponentiation in monoids can be found in
Mathlib.Algebra.Group.Defs.
Blueprint #
This file does not have any blueprint entries.
Exponentiation for semigroups over positive naturals.
Equations
- Semigroup.pNatPow x n = n.recOn x fun (x_1 : ℕ+) (ih : S) => ih * x
Instances For
Provides the notation a ^ n for pNatPow a n.
Equations
- Semigroup.hPow = { pow := Semigroup.pNatPow }