# mathlib3documentation

algebra.group_with_zero.power

# Powers of elements of groups with an adjoined zero element #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file we define integer power functions for groups with an adjoined zero element. This generalises the integer power function on a division ring.

theorem pow_sub₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) {m n : } (ha : a 0) (h : n m) :
a ^ (m - n) = a ^ m * (a ^ n)⁻¹
theorem pow_sub_of_lt {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) {m n : } (h : n < m) :
a ^ (m - n) = a ^ m * (a ^ n)⁻¹
theorem pow_inv_comm₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (m n : ) :
a⁻¹ ^ m * a ^ n = a ^ n * a⁻¹ ^ m
theorem inv_pow_sub₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} {m n : } (ha : a 0) (h : n m) :
a⁻¹ ^ (m - n) = (a ^ m)⁻¹ * a ^ n
theorem inv_pow_sub_of_lt {G₀ : Type u_1} [group_with_zero G₀] {m n : } (a : G₀) (h : n < m) :
a⁻¹ ^ (m - n) = (a ^ m)⁻¹ * a ^ n
theorem zero_zpow {G₀ : Type u_1} [group_with_zero G₀] (z : ) :
z 0 0 ^ z = 0
theorem zero_zpow_eq {G₀ : Type u_1} [group_with_zero G₀] (n : ) :
0 ^ n = ite (n = 0) 1 0
theorem zpow_add_one₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (ha : a 0) (n : ) :
a ^ (n + 1) = a ^ n * a
theorem zpow_sub_one₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (ha : a 0) (n : ) :
a ^ (n - 1) = a ^ n * a⁻¹
theorem zpow_add₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (ha : a 0) (m n : ) :
a ^ (m + n) = a ^ m * a ^ n
theorem zpow_add' {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} {m n : } (h : a 0 m + n 0 m = 0 n = 0) :
a ^ (m + n) = a ^ m * a ^ n
theorem zpow_one_add₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (h : a 0) (i : ) :
a ^ (1 + i) = a * a ^ i
theorem semiconj_by.zpow_right₀ {G₀ : Type u_1} [group_with_zero G₀] {a x y : G₀} (h : x y) (m : ) :
(x ^ m) (y ^ m)
theorem commute.zpow_right₀ {G₀ : Type u_1} [group_with_zero G₀] {a b : G₀} (h : b) (m : ) :
(b ^ m)
theorem commute.zpow_left₀ {G₀ : Type u_1} [group_with_zero G₀] {a b : G₀} (h : b) (m : ) :
commute (a ^ m) b
theorem commute.zpow_zpow₀ {G₀ : Type u_1} [group_with_zero G₀] {a b : G₀} (h : b) (m n : ) :
commute (a ^ m) (b ^ n)
theorem commute.zpow_self₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (n : ) :
commute (a ^ n) a
theorem commute.self_zpow₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (n : ) :
(a ^ n)
theorem commute.zpow_zpow_self₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (m n : ) :
commute (a ^ m) (a ^ n)
theorem zpow_bit1₀ {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (n : ) :
a ^ bit1 n = a ^ n * a ^ n * a
theorem zpow_ne_zero_of_ne_zero {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (ha : a 0) (z : ) :
a ^ z 0
theorem zpow_sub₀ {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} (ha : a 0) (z1 z2 : ) :
a ^ (z1 - z2) = a ^ z1 / a ^ z2
theorem zpow_bit1' {G₀ : Type u_1} [group_with_zero G₀] (a : G₀) (n : ) :
a ^ bit1 n = (a * a) ^ n * a
theorem zpow_eq_zero {G₀ : Type u_1} [group_with_zero G₀] {x : G₀} {n : } (h : x ^ n = 0) :
x = 0
theorem zpow_eq_zero_iff {G₀ : Type u_1} [group_with_zero G₀] {a : G₀} {n : } (hn : n 0) :
a ^ n = 0 a = 0
theorem zpow_ne_zero {G₀ : Type u_1} [group_with_zero G₀] {x : G₀} (n : ) :
x 0 x ^ n 0
theorem zpow_neg_mul_zpow_self {G₀ : Type u_1} [group_with_zero G₀] (n : ) {x : G₀} (h : x 0) :
x ^ -n * x ^ n = 1
theorem div_sq_cancel {G₀ : Type u_1} (a b : G₀) :
a ^ 2 * b / a = a * b
@[simp]
theorem map_zpow₀ {F : Type u_1} {G₀ : Type u_2} {G₀' : Type u_3} [group_with_zero G₀] [group_with_zero G₀'] [ G₀'] (f : F) (x : G₀) (n : ) :
f (x ^ n) = f x ^ n

If a monoid homomorphism f between two group_with_zeros maps 0 to 0, then it maps x^n, n : ℤ, to (f x)^n.