@@ -5,6 +5,7 @@ Authors: Damiano Testa
5
5
-/
6
6
import algebra.smul_with_zero
7
7
import algebra.regular.basic
8
+
8
9
/-!
9
10
# Action of regular elements on a module
10
11
@@ -76,35 +77,22 @@ lemma is_left_regular [has_mul R] {a : R} (h : is_smul_regular R a) :
76
77
lemma is_right_regular [has_mul R] {a : R} (h : is_smul_regular R (mul_opposite.op a)) :
77
78
is_right_regular a := h
78
79
79
- end has_scalar
80
-
81
- section monoid
82
-
83
- variables [monoid R] [mul_action R M]
84
-
85
- variable (M)
86
-
87
- /-- One is `M`-regular always. -/
88
- @[simp] lemma one : is_smul_regular M (1 : R) :=
89
- λ a b ab, by rwa [one_smul, one_smul] at ab
90
-
91
- variable {M}
92
-
93
- lemma mul (ra : is_smul_regular M a) (rb : is_smul_regular M b) :
94
- is_smul_regular M (a * b) :=
80
+ lemma mul [has_mul R] [is_scalar_tower R R M]
81
+ (ra : is_smul_regular M a) (rb : is_smul_regular M b) : is_smul_regular M (a * b) :=
95
82
ra.smul rb
96
83
97
- lemma of_mul (ab : is_smul_regular M (a * b)) :
84
+ lemma of_mul [has_mul R] [is_scalar_tower R R M] (ab : is_smul_regular M (a * b)) :
98
85
is_smul_regular M b :=
99
86
by { rw ← smul_eq_mul at ab, exact ab.of_smul _ }
100
87
101
- @[simp] lemma mul_iff_right (ha : is_smul_regular M a) :
88
+ @[simp] lemma mul_iff_right [has_mul R] [is_scalar_tower R R M] (ha : is_smul_regular M a) :
102
89
is_smul_regular M (a * b) ↔ is_smul_regular M b :=
103
90
⟨of_mul, ha.mul⟩
104
91
105
92
/-- Two elements `a` and `b` are `M`-regular if and only if both products `a * b` and `b * a`
106
93
are `M`-regular. -/
107
- lemma mul_and_mul_iff : is_smul_regular M (a * b) ∧ is_smul_regular M (b * a) ↔
94
+ lemma mul_and_mul_iff [has_mul R] [is_scalar_tower R R M] :
95
+ is_smul_regular M (a * b) ∧ is_smul_regular M (b * a) ↔
108
96
is_smul_regular M a ∧ is_smul_regular M b :=
109
97
begin
110
98
refine ⟨_, _⟩,
@@ -114,6 +102,24 @@ begin
114
102
exact ⟨ha.mul hb, hb.mul ha⟩ }
115
103
end
116
104
105
+ end has_scalar
106
+
107
+ section monoid
108
+
109
+ variables [monoid R] [mul_action R M]
110
+
111
+ variable (M)
112
+
113
+ /-- One is `M`-regular always. -/
114
+ @[simp] lemma one : is_smul_regular M (1 : R) :=
115
+ λ a b ab, by rwa [one_smul, one_smul] at ab
116
+
117
+ variable {M}
118
+
119
+ /-- An element of `R` admitting a left inverse is `M`-regular. -/
120
+ lemma of_mul_eq_one (h : a * b = 1 ) : is_smul_regular M b :=
121
+ of_mul (by { rw h, exact one M })
122
+
117
123
/-- Any power of an `M`-regular element is `M`-regular. -/
118
124
lemma pow (n : ℕ) (ra : is_smul_regular M a) : is_smul_regular M (a ^ n) :=
119
125
begin
@@ -133,10 +139,21 @@ end
133
139
134
140
end monoid
135
141
142
+ section monoid_smul
143
+
144
+ variables [monoid S] [has_scalar R M] [has_scalar R S] [mul_action S M] [is_scalar_tower R S M]
145
+
146
+ /-- An element of `S` admitting a left inverse in `R` is `M`-regular. -/
147
+ lemma of_smul_eq_one (h : a • s = 1 ) : is_smul_regular M s :=
148
+ of_smul a (by { rw h, exact one M })
149
+
150
+ end monoid_smul
151
+
136
152
section monoid_with_zero
137
153
138
- variables [monoid_with_zero R] [monoid_with_zero S] [has_zero M] [mul_action_with_zero R M]
139
- [mul_action_with_zero R S] [mul_action_with_zero S M] [is_scalar_tower R S M]
154
+ variables [monoid_with_zero R] [monoid_with_zero S] [has_zero M]
155
+ [mul_action_with_zero R M] [mul_action_with_zero R S] [mul_action_with_zero S M]
156
+ [is_scalar_tower R S M]
140
157
141
158
/-- The element `0` is `M`-regular if and only if `M` is trivial. -/
142
159
protected lemma subsingleton (h : is_smul_regular M (0 : R)) : subsingleton M :=
@@ -162,19 +179,11 @@ zero_iff_subsingleton.mpr sM
162
179
lemma not_zero [nM : nontrivial M] : ¬ is_smul_regular M (0 : R) :=
163
180
not_zero_iff.mpr nM
164
181
165
- /-- An element of `S` admitting a left inverse in `R` is `M`-regular. -/
166
- lemma of_smul_eq_one (h : a • s = 1 ) : is_smul_regular M s :=
167
- of_smul a (by { rw h, exact one M })
168
-
169
- /-- An element of `R` admitting a left inverse is `M`-regular. -/
170
- lemma of_mul_eq_one (h : a * b = 1 ) : is_smul_regular M b :=
171
- of_mul (by { rw h, exact one M })
172
-
173
182
end monoid_with_zero
174
183
175
- section comm_monoid
184
+ section comm_semigroup
176
185
177
- variables [comm_monoid R] [mul_action R M]
186
+ variables [comm_semigroup R] [has_scalar R M] [is_scalar_tower R R M]
178
187
179
188
/-- A product is `M`-regular if and only if the factors are. -/
180
189
lemma mul_iff : is_smul_regular M (a * b) ↔
@@ -184,7 +193,7 @@ begin
184
193
exact ⟨λ ab, ⟨ab, by rwa mul_comm⟩, λ rab, rab.1 ⟩
185
194
end
186
195
187
- end comm_monoid
196
+ end comm_semigroup
188
197
189
198
end is_smul_regular
190
199
203
212
204
213
end group
205
214
206
- variables [monoid_with_zero R] [has_zero M] [mul_action_with_zero R M]
215
+ section units
216
+
217
+ variables [monoid R] [mul_action R M]
207
218
208
219
/-- Any element in `Rˣ` is `M`-regular. -/
209
220
lemma units.is_smul_regular (a : Rˣ) : is_smul_regular M (a : R) :=
@@ -215,3 +226,5 @@ begin
215
226
rcases ua with ⟨a, rfl⟩,
216
227
exact a.is_smul_regular M
217
228
end
229
+
230
+ end units
0 commit comments