@@ -47,13 +47,15 @@ add_decl_doc add_action.to_perm
47
47
variables (α) (β)
48
48
49
49
/-- Given an action of a group `α` on a set `β`, each `g : α` defines a permutation of `β`. -/
50
+ @[simps]
50
51
def mul_action.to_perm_hom : α →* equiv.perm β :=
51
52
{ to_fun := mul_action.to_perm,
52
53
map_one' := equiv.ext $ one_smul α,
53
54
map_mul' := λ u₁ u₂, equiv.ext $ mul_smul (u₁:α) u₂ }
54
55
55
56
/-- Given an action of a additive group `α` on a set `β`, each `g : α` defines a permutation of
56
57
`β`. -/
58
+ @[simps]
57
59
def add_action.to_perm_hom (α : Type *) [add_group α] [add_action α β] :
58
60
α →+ additive (equiv.perm β) :=
59
61
{ to_fun := λ a, additive.of_mul $ add_action.to_perm a,
@@ -136,6 +138,29 @@ section distrib_mul_action
136
138
section group
137
139
variables [group α] [add_monoid β] [distrib_mul_action α β]
138
140
141
+ variables (β)
142
+
143
+ /-- Each element of the group defines an additive monoid isomorphism.
144
+
145
+ This is a stronger version of `mul_action.to_perm`. -/
146
+ @[simps {simp_rhs := tt}]
147
+ def distrib_mul_action.to_add_equiv (x : α) : β ≃+ β :=
148
+ { .. distrib_mul_action.to_add_monoid_hom β x,
149
+ .. mul_action.to_perm_hom α β x }
150
+
151
+ variables (α β)
152
+
153
+ /-- Each element of the group defines an additive monoid isomorphism.
154
+
155
+ This is a stronger version of `mul_action.to_perm_hom`. -/
156
+ @[simps]
157
+ def distrib_mul_action.to_add_aut : α →* add_aut β :=
158
+ { to_fun := distrib_mul_action.to_add_equiv β,
159
+ map_one' := add_equiv.ext (one_smul _),
160
+ map_mul' := λ a₁ a₂, add_equiv.ext (mul_smul _ _) }
161
+
162
+ variables {α β}
163
+
139
164
theorem smul_eq_zero_iff_eq (a : α) {x : β} : a • x = 0 ↔ x = 0 :=
140
165
⟨λ h, by rw [← inv_smul_smul a x, h, smul_zero], λ h, h.symm ▸ smul_zero _⟩
141
166
@@ -157,6 +182,34 @@ end gwz
157
182
158
183
end distrib_mul_action
159
184
185
+ section mul_distrib_mul_action
186
+ variables [group α] [monoid β] [mul_distrib_mul_action α β]
187
+
188
+ variables (β)
189
+
190
+ /-- Each element of the group defines a multiplicative monoid isomorphism.
191
+
192
+ This is a stronger version of `mul_action.to_perm`. -/
193
+ @[simps {simp_rhs := tt}]
194
+ def mul_distrib_mul_action.to_mul_equiv (x : α) : β ≃* β :=
195
+ { .. mul_distrib_mul_action.to_monoid_hom β x,
196
+ .. mul_action.to_perm_hom α β x }
197
+
198
+ variables (α β)
199
+
200
+ /-- Each element of the group defines an multiplicative monoid isomorphism.
201
+
202
+ This is a stronger version of `mul_action.to_perm_hom`. -/
203
+ @[simps]
204
+ def mul_distrib_mul_action.to_mul_aut : α →* mul_aut β :=
205
+ { to_fun := mul_distrib_mul_action.to_mul_equiv β,
206
+ map_one' := mul_equiv.ext (one_smul _),
207
+ map_mul' := λ a₁ a₂, mul_equiv.ext (mul_smul _ _) }
208
+
209
+ variables {α β}
210
+
211
+ end mul_distrib_mul_action
212
+
160
213
section arrow
161
214
162
215
/-- If `G` acts on `A`, then it acts also on `A → B`, by `(g • F) a = F (g⁻¹ • a)`. -/
@@ -167,17 +220,18 @@ section arrow
167
220
168
221
local attribute [instance] arrow_action
169
222
223
+ /-- When `B` is a monoid, `arrow_action` is additionally a `mul_distrib_mul_action`. -/
224
+ def arrow_mul_distrib_mul_action {G A B : Type *} [group G] [mul_action G A] [monoid B] :
225
+ mul_distrib_mul_action G (A → B) :=
226
+ { smul_one := λ g, rfl,
227
+ smul_mul := λ g f₁ f₂, rfl }
228
+
229
+ local attribute [instance] arrow_mul_distrib_mul_action
230
+
170
231
/-- Given groups `G H` with `G` acting on `A`, `G` acts by
171
232
multiplicative automorphisms on `A → H`. -/
172
- @[simps] def mul_aut_arrow {G A H} [group G] [mul_action G A] [group H] : G →* mul_aut (A → H) :=
173
- { to_fun := λ g,
174
- { to_fun := λ F, g • F,
175
- inv_fun := λ F, g⁻¹ • F,
176
- left_inv := λ F, inv_smul_smul g F,
177
- right_inv := λ F, smul_inv_smul g F,
178
- map_mul' := by { intros, ext, simp only [arrow_action_to_has_scalar_smul, pi.mul_apply] } },
179
- map_one' := by { ext, simp only [mul_aut.one_apply, mul_equiv.coe_mk, one_smul] },
180
- map_mul' := by { intros, ext, simp only [mul_smul, mul_equiv.coe_mk, mul_aut.mul_apply] } }
233
+ @[simps] def mul_aut_arrow {G A H} [group G] [mul_action G A] [monoid H] : G →* mul_aut (A → H) :=
234
+ mul_distrib_mul_action.to_mul_aut _ _
181
235
182
236
end arrow
183
237
0 commit comments