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}