Module docstring
{"# Additional lemmas about commuting pairs of elements in monoids
"}
{"# Additional lemmas about commuting pairs of elements in monoids
"}
SemiconjBy.function_semiconj_mul_left
theorem
(h : SemiconjBy a b c) : Semiconj (a * ·) (b * ·) (c * ·)
@[to_additive]
lemma SemiconjBy.function_semiconj_mul_left (h : SemiconjBy a b c) :
Semiconj (a * ·) (b * ·) (c * ·) := fun j ↦ by simp only [← mul_assoc, h.eq]
Commute.function_commute_mul_left
theorem
(h : Commute a b) : Function.Commute (a * ·) (b * ·)
@[to_additive]
lemma Commute.function_commute_mul_left (h : Commute a b) : Function.Commute (a * ·) (b * ·) :=
SemiconjBy.function_semiconj_mul_left h
SemiconjBy.function_semiconj_mul_right_swap
theorem
(h : SemiconjBy a b c) : Function.Semiconj (· * a) (· * c) (· * b)
@[to_additive]
lemma SemiconjBy.function_semiconj_mul_right_swap (h : SemiconjBy a b c) :
Function.Semiconj (· * a) (· * c) (· * b) := fun j ↦ by simp only [mul_assoc, ← h.eq]
Commute.function_commute_mul_right
theorem
(h : Commute a b) : Function.Commute (· * a) (· * b)
@[to_additive]
lemma Commute.function_commute_mul_right (h : Commute a b) : Function.Commute (· * a) (· * b) :=
SemiconjBy.function_semiconj_mul_right_swap h
Commute.inv_inv
theorem
: Commute a b → Commute a⁻¹ b⁻¹
@[to_additive]
protected theorem inv_inv : Commute a b → Commute a⁻¹ b⁻¹ :=
SemiconjBy.inv_inv_symm
Commute.inv_inv_iff
theorem
: Commute a⁻¹ b⁻¹ ↔ Commute a b
@[to_additive (attr := simp)]
theorem inv_inv_iff : CommuteCommute a⁻¹ b⁻¹ ↔ Commute a b :=
SemiconjBy.inv_inv_symm_iff
Commute.div_mul_div_comm
theorem
(hbd : Commute b d) (hbc : Commute b⁻¹ c) : a / b * (c / d) = a * c / (b * d)
@[to_additive]
protected theorem div_mul_div_comm (hbd : Commute b d) (hbc : Commute b⁻¹ c) :
a / b * (c / d) = a * c / (b * d) := by
simp_rw [div_eq_mul_inv, mul_inv_rev, hbd.inv_inv.symm.eq, hbc.mul_mul_mul_comm]
Commute.mul_div_mul_comm
theorem
(hcd : Commute c d) (hbc : Commute b c⁻¹) : a * b / (c * d) = a / c * (b / d)
@[to_additive]
protected theorem mul_div_mul_comm (hcd : Commute c d) (hbc : Commute b c⁻¹) :
a * b / (c * d) = a / c * (b / d) :=
(hcd.div_mul_div_comm hbc.symm).symm
Commute.div_div_div_comm
theorem
(hbc : Commute b c) (hbd : Commute b⁻¹ d) (hcd : Commute c⁻¹ d) : a / b / (c / d) = a / c / (b / d)
@[to_additive]
protected theorem div_div_div_comm (hbc : Commute b c) (hbd : Commute b⁻¹ d) (hcd : Commute c⁻¹ d) :
a / b / (c / d) = a / c / (b / d) := by
simp_rw [div_eq_mul_inv, mul_inv_rev, inv_inv, hbd.symm.eq, hcd.symm.eq,
hbc.inv_inv.mul_mul_mul_comm]
Commute.inv_left_iff
theorem
: Commute a⁻¹ b ↔ Commute a b
@[to_additive (attr := simp)]
lemma inv_left_iff : CommuteCommute a⁻¹ b ↔ Commute a b := SemiconjBy.inv_symm_left_iff
Commute.inv_right_iff
theorem
: Commute a b⁻¹ ↔ Commute a b
@[to_additive (attr := simp)]
lemma inv_right_iff : CommuteCommute a b⁻¹ ↔ Commute a b := SemiconjBy.inv_right_iff
Commute.inv_mul_cancel
theorem
(h : Commute a b) : a⁻¹ * b * a = b
@[to_additive]
protected lemma inv_mul_cancel (h : Commute a b) : a⁻¹ * b * a = b := by
rw [h.inv_left.eq, inv_mul_cancel_right]
Commute.inv_mul_cancel_assoc
theorem
(h : Commute a b) : a⁻¹ * (b * a) = b
@[to_additive]
lemma inv_mul_cancel_assoc (h : Commute a b) : a⁻¹ * (b * a) = b := by
rw [← mul_assoc, h.inv_mul_cancel]
Commute.conj_iff
theorem
(h : G) : Commute (h * a * h⁻¹) (h * b * h⁻¹) ↔ Commute a b
@[to_additive (attr := simp)]
protected theorem conj_iff (h : G) : CommuteCommute (h * a * h⁻¹) (h * b * h⁻¹) ↔ Commute a b :=
SemiconjBy.conj_iff
Commute.conj
theorem
(comm : Commute a b) (h : G) : Commute (h * a * h⁻¹) (h * b * h⁻¹)
@[to_additive]
protected theorem conj (comm : Commute a b) (h : G) : Commute (h * a * h⁻¹) (h * b * h⁻¹) :=
(Commute.conj_iff h).mpr comm
Commute.zpow_right
theorem
(h : Commute a b) (m : ℤ) : Commute a (b ^ m)
@[to_additive (attr := simp)]
lemma zpow_right (h : Commute a b) (m : ℤ) : Commute a (b ^ m) := SemiconjBy.zpow_right h m
Commute.zpow_left
theorem
(h : Commute a b) (m : ℤ) : Commute (a ^ m) b
@[to_additive (attr := simp)]
lemma zpow_left (h : Commute a b) (m : ℤ) : Commute (a ^ m) b := (h.symm.zpow_right m).symm
Commute.zpow_zpow
theorem
(h : Commute a b) (m n : ℤ) : Commute (a ^ m) (b ^ n)
@[to_additive] lemma zpow_zpow (h : Commute a b) (m n : ℤ) : Commute (a ^ m) (b ^ n) :=
(h.zpow_left m).zpow_right n
Commute.self_zpow
theorem
: Commute a (a ^ n)
@[to_additive] lemma self_zpow : Commute a (a ^ n) := (Commute.refl a).zpow_right n
Commute.zpow_self
theorem
: Commute (a ^ n) a
@[to_additive] lemma zpow_self : Commute (a ^ n) a := (Commute.refl a).zpow_left n
Commute.zpow_zpow_self
theorem
: Commute (a ^ m) (a ^ n)
@[to_additive] lemma zpow_zpow_self : Commute (a ^ m) (a ^ n) := (Commute.refl a).zpow_zpow m n
pow_inv_comm
theorem
(a : G) (m n : ℕ) : a⁻¹ ^ m * a ^ n = a ^ n * a⁻¹ ^ m
@[to_additive] lemma pow_inv_comm (a : G) (m n : ℕ) : a⁻¹ ^ m * a ^ n = a ^ n * a⁻¹ ^ m :=
(Commute.refl a).inv_left.pow_pow _ _