Lemmas about power operations on monoids and groups #
This file contains lemmas about monoid.pow
, group.pow
, nsmul
, zsmul
which require additional imports besides those available in algebra.group_power.basic
.
(Additive) monoid #
Equations
- invertible_pow m n = {inv_of := ⅟ m ^ n, inv_of_mul_self := _, mul_inv_of_self := _}
If x ^ n.succ = 1
then x
has an inverse, x^n
.
Equations
- invertible_of_pow_succ_eq_one x n hx = {inv_of := x ^ n, inv_of_mul_self := _, mul_inv_of_self := _}
If x ^ n = 1
then x
has an inverse, x^(n - 1)
.
Equations
- invertible_of_pow_eq_one x n hx hn = invertible_of_pow_succ_eq_one x (n - 1) _
Lemmas about zsmul
under ordering, placed here (rather than in algebra.group_power.order
with their friends) because they require facts from data.int.basic
See also smul_right_injective
. TODO: provide a no_zero_smul_divisors
instance. We can't
do that here because importing that definition would create import cycles.
Alias of zsmul_right_inj
, for ease of discovery alongside zsmul_le_zsmul_iff'
and
zsmul_lt_zsmul_iff'
.
For any a > 1
and a natural n
we have n ≤ a ^ n / (a - 1)
. See also
nat.cast_le_pow_sub_div_sub
for a stronger inequality with a ^ n - 1
in the numerator.
Monoid homomorphisms from multiplicative ℕ
are defined by the image
of multiplicative.of_add 1
.
Equations
- powers_hom M = {to_fun := λ (x : M), {to_fun := λ (n : multiplicative ℕ), x ^ ⇑multiplicative.to_add n, map_one' := _, map_mul' := _}, inv_fun := λ (f : multiplicative ℕ →* M), ⇑f (⇑multiplicative.of_add 1), left_inv := _, right_inv := _}
Monoid homomorphisms from multiplicative ℤ
are defined by the image
of multiplicative.of_add 1
.
Equations
- zpowers_hom G = {to_fun := λ (x : G), {to_fun := λ (n : multiplicative ℤ), x ^ ⇑multiplicative.to_add n, map_one' := _, map_mul' := _}, inv_fun := λ (f : multiplicative ℤ →* G), ⇑f (⇑multiplicative.of_add 1), left_inv := _, right_inv := _}
Additive homomorphisms from ℕ
are defined by the image of 1
.
Additive homomorphisms from ℤ
are defined by the image of 1
.
monoid_hom.ext_mint
is defined in data.int.cast
add_monoid_hom.ext_nat
is defined in data.nat.cast
add_monoid_hom.ext_int
is defined in data.int.cast
If M
is commutative, powers_hom
is a multiplicative equivalence.
Equations
- powers_mul_hom M = {to_fun := (powers_hom M).to_fun, inv_fun := (powers_hom M).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
If M
is commutative, zpowers_hom
is a multiplicative equivalence.
Equations
- zpowers_mul_hom G = {to_fun := (zpowers_hom G).to_fun, inv_fun := (zpowers_hom G).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
If M
is commutative, multiples_hom
is an additive equivalence.
Equations
- multiples_add_hom A = {to_fun := (multiples_hom A).to_fun, inv_fun := (multiples_hom A).inv_fun, left_inv := _, right_inv := _, map_add' := _}
If M
is commutative, zmultiples_hom
is an additive equivalence.
Equations
- zmultiples_add_hom A = {to_fun := (zmultiples_hom A).to_fun, inv_fun := (zmultiples_hom A).inv_fun, left_inv := _, right_inv := _, map_add' := _}
Commutativity (again) #
Facts about semiconj_by
and commute
that require zpow
or zsmul
, or the fact that integer
multiplication equals semiring multiplication.
Moving to the opposite monoid commutes with taking powers.
Moving to the opposite group or group_with_zero commutes with taking powers.