Power operations on monoids and groups
The power operation on monoids and groups.
We separate this from group, because it depends on ℕ,
which in turn depends on other parts of algebra.
This module contains the definitions of monoid.pow and group.pow
and their additive counterparts nsmul and gsmul, along with a few lemmas.
Further lemmas can be found in algebra.group_power.lemmas.
Notation
The class has_pow α β provides the notation a^b for powers.
We define instances of has_pow M ℕ, for monoids M, and has_pow G ℤ for groups G.
We also define infix operators •ℕ and •ℤ for scalar multiplication by a natural and an integer
numbers, respectively.
Implementation details
We adopt the convention that 0^0 = 1.
This module provides the instance has_pow ℕ ℕ (via monoid.has_pow)
and is imported by data.nat.basic, so it has to live low in the import hierarchy.
Not all of its imports are needed yet; the intent is to move more lemmas here from .lemmas
so that they are available in data.nat.basic, and the imports will be required then.
The power operation in a monoid. a^n = a*a*...*a n times.
Equations
- monoid.pow a (n + 1) = a * monoid.pow a n
- monoid.pow a 0 = 1
Equations
- monoid.has_pow = {pow := monoid.pow (monoid.to_has_one M)}
Commutativity
First we prove some facts about semiconj_by and commute. They do not require any theory about
pow and/or nsmul and will be useful later in this file.
Commutative (additive) monoid
Equations
- group.has_pow = {pow := gpow _inst_1}