@@ -90,32 +90,49 @@ end mul_one_class
90
90
91
91
section monoid
92
92
93
- variables {M : Type *} [monoid M]
93
+ variables {M : Type *} [monoid M] {a b : M} {u u₁ u₂ : units M}
94
94
95
- @[to_additive] theorem units_inv_right {a : M} {u : units M} : commute a u → commute a ↑u⁻¹ :=
95
+ @[simp, to_additive]
96
+ theorem pow_right (h : commute a b) (n : ℕ) : commute a (b ^ n) := h.pow_right n
97
+ @[simp, to_additive]
98
+ theorem pow_left (h : commute a b) (n : ℕ) : commute (a ^ n) b := (h.symm.pow_right n).symm
99
+ @[simp, to_additive]
100
+ theorem pow_pow (h : commute a b) (m n : ℕ) : commute (a ^ m) (b ^ n) :=
101
+ (h.pow_left m).pow_right n
102
+
103
+ @[simp, to_additive]
104
+ theorem self_pow (a : M) (n : ℕ) : commute a (a ^ n) := (commute.refl a).pow_right n
105
+ @[simp, to_additive]
106
+ theorem pow_self (a : M) (n : ℕ) : commute (a ^ n) a := (commute.refl a).pow_left n
107
+ @[simp, to_additive]
108
+ theorem pow_pow_self (a : M) (m n : ℕ) : commute (a ^ m) (a ^ n) :=
109
+ (commute.refl a).pow_pow m n
110
+
111
+ @[to_additive succ_nsmul'] theorem _root_.pow_succ' (a : M) (n : ℕ) : a ^ (n + 1 ) = a ^ n * a :=
112
+ (pow_succ a n).trans (self_pow _ _)
113
+
114
+ @[to_additive] theorem units_inv_right : commute a u → commute a ↑u⁻¹ :=
96
115
semiconj_by.units_inv_right
97
116
98
- @[simp, to_additive] theorem units_inv_right_iff {a : M} {u : units M} :
117
+ @[simp, to_additive] theorem units_inv_right_iff :
99
118
commute a ↑u⁻¹ ↔ commute a u :=
100
119
semiconj_by.units_inv_right_iff
101
120
102
- @[to_additive] theorem units_inv_left {u : units M} {a : M} : commute ↑u a → commute ↑u⁻¹ a :=
121
+ @[to_additive] theorem units_inv_left : commute ↑u a → commute ↑u⁻¹ a :=
103
122
semiconj_by.units_inv_symm_left
104
123
105
124
@[simp, to_additive]
106
- theorem units_inv_left_iff {u : units M} {a : M} : commute ↑u⁻¹ a ↔ commute ↑u a :=
125
+ theorem units_inv_left_iff : commute ↑u⁻¹ a ↔ commute ↑u a :=
107
126
semiconj_by.units_inv_symm_left_iff
108
127
109
- variables {u₁ u₂ : units M}
110
-
111
128
@[to_additive]
112
129
theorem units_coe : commute u₁ u₂ → commute (u₁ : M) u₂ := semiconj_by.units_coe
113
130
@[to_additive]
114
131
theorem units_of_coe : commute (u₁ : M) u₂ → commute u₁ u₂ := semiconj_by.units_of_coe
115
132
@[simp, to_additive]
116
133
theorem units_coe_iff : commute (u₁ : M) u₂ ↔ commute u₁ u₂ := semiconj_by.units_coe_iff
117
134
118
- @[to_additive] lemma is_unit_mul_iff {a b : M} (h : commute a b) :
135
+ @[to_additive] lemma is_unit_mul_iff (h : commute a b) :
119
136
is_unit (a * b) ↔ is_unit a ∧ is_unit b :=
120
137
begin
121
138
refine ⟨_, λ H, H.1 .mul H.2 ⟩,
@@ -131,7 +148,7 @@ begin
131
148
rw [mul_assoc, ← hu, u.inv_mul] }
132
149
end
133
150
134
- @[simp, to_additive] lemma _root_.is_unit_mul_self_iff {a : M} :
151
+ @[simp, to_additive] lemma _root_.is_unit_mul_self_iff :
135
152
is_unit (a * a) ↔ is_unit a :=
136
153
(commute.refl a).is_unit_mul_iff.trans (and_self _)
137
154
0 commit comments