Lemmas about power operations on monoids and groups #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 n • x = 0
, n ≠ 0
, then x
is an additive unit.
Equations
- add_units.of_nsmul_eq_zero x n hx hn = 0.of_nsmul x hn hx
If x ^ n = 1
then x
has an inverse, x^(n - 1)
.
Equations
- invertible_of_pow_eq_one x n hx hn = (units.of_pow_eq_one x n hx hn).invertible
To show a property of all multiples of g
it suffices to show it is closed under
addition by g
and -g
on the left. For additive subgroups generated by more than one element, see
add_subgroup.closure_induction_left
.
To show a property of all powers of g
it suffices to show it is closed under multiplication
by g
and g⁻¹
on the left. For subgroups generated by more than one element, see
subgroup.closure_induction_left
.
To show a property of all multiples of g
it suffices to show it is closed under
addition by g
and -g
on the right. For additive subgroups generated by more than one element,
see add_subgroup.closure_induction_right
.
To show a property of all powers of g
it suffices to show it is closed under multiplication
by g
and g⁻¹
on the right. For subgroups generated by more than one element, see
subgroup.closure_induction_right
.
zpow
/zsmul
and an order #
Those lemmas are 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'
.
Alias of zsmul_right_inj
, for ease of discovery alongside zsmul_le_zsmul_iff'
and
zsmul_lt_zsmul_iff'
.
Note that add_comm_monoid.nat_smul_comm_class
requires stronger assumptions on R
.
Note that add_comm_monoid.nat_is_scalar_tower
requires stronger assumptions on R
.
Note this holds in marginally more generality than int.cast_mul
Note that add_comm_group.int_smul_comm_class
requires stronger assumptions on R
.
Note that add_comm_group.int_is_scalar_tower
requires stronger assumptions on R
.
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.