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.