@@ -84,6 +84,11 @@ subfield.copy (⨅ (m : M), fixed_by.subfield F m) (fixed_points M F)
84
84
instance : is_invariant_subfield M (fixed_points.subfield M F) :=
85
85
{ smul_mem := λ g x hx g', by rw [hx, hx] }
86
86
87
+ instance : smul_comm_class M (fixed_points.subfield M F) F :=
88
+ { smul_comm := λ m f f', show m • (↑f * f') = f * (m • f'), by rw [smul_mul', f.prop m] }
89
+
90
+ instance smul_comm_class' : smul_comm_class (fixed_points.subfield M F) M F :=
91
+ smul_comm_class.symm _ _ _
87
92
88
93
@[simp] theorem smul (m : M) (x : fixed_points.subfield M F) : m • x = x :=
89
94
subtype.eq $ x.2 m
@@ -292,38 +297,27 @@ lemma finrank_alg_hom (K : Type u) (V : Type v)
292
297
fintype_card_le_finrank_of_linear_independent $ linear_independent_to_linear_map K V V
293
298
294
299
namespace fixed_points
295
- /-- Embedding produced from a faithful action. -/
296
- @[simps apply {fully_applied := ff}]
297
- def to_alg_hom (G : Type u) (F : Type v) [group G] [field F]
298
- [mul_semiring_action G F] [has_faithful_scalar G F] : G ↪ (F →ₐ[fixed_points.subfield G F] F) :=
299
- { to_fun := λ g, { commutes' := λ x, x.2 g,
300
- .. mul_semiring_action.to_ring_hom G F g },
301
- inj' := λ g₁ g₂ hg, to_ring_hom_injective G F $ ring_hom.ext $ λ x, alg_hom.ext_iff.1 hg x, }
302
-
303
- lemma to_alg_hom_apply_apply {G : Type u} {F : Type v} [group G] [field F]
304
- [mul_semiring_action G F] [has_faithful_scalar G F] (g : G) (x : F) :
305
- to_alg_hom G F g x = g • x :=
306
- rfl
307
300
308
301
theorem finrank_eq_card (G : Type u) (F : Type v) [group G] [field F]
309
302
[fintype G] [mul_semiring_action G F] [has_faithful_scalar G F] :
310
303
finrank (fixed_points.subfield G F) F = fintype.card G :=
311
304
le_antisymm (fixed_points.finrank_le_card G F) $
312
305
calc fintype.card G
313
306
≤ fintype.card (F →ₐ[fixed_points.subfield G F] F) :
314
- fintype.card_le_of_injective _ (to_alg_hom G F). 2
307
+ fintype.card_le_of_injective _ (mul_semiring_action.to_alg_hom_injective _ F)
315
308
... ≤ finrank F (F →ₗ[fixed_points.subfield G F] F) : finrank_alg_hom (fixed_points G F) F
316
309
... = finrank (fixed_points.subfield G F) F : finrank_linear_map' _ _ _
317
310
311
+ /-- `mul_semiring_action.to_alg_hom` is bijective. -/
318
312
theorem to_alg_hom_bijective (G : Type u) (F : Type v) [group G] [field F]
319
313
[fintype G] [mul_semiring_action G F] [has_faithful_scalar G F] :
320
- function.bijective (to_alg_hom G F) :=
314
+ function.bijective (mul_semiring_action. to_alg_hom _ _ : G → F →ₐ[subfield G F] F) :=
321
315
begin
322
316
rw fintype.bijective_iff_injective_and_card,
323
317
split,
324
- { exact (to_alg_hom G F).injective },
318
+ { exact mul_semiring_action.to_alg_hom_injective _ F },
325
319
{ apply le_antisymm,
326
- { exact fintype.card_le_of_injective _ (to_alg_hom G F).injective },
320
+ { exact fintype.card_le_of_injective _ (mul_semiring_action.to_alg_hom_injective _ F) },
327
321
{ rw ← finrank_eq_card G F,
328
322
exact has_le.le.trans_eq (finrank_alg_hom _ F) (finrank_linear_map' _ _ _) } },
329
323
end
332
326
def to_alg_hom_equiv (G : Type u) (F : Type v) [group G] [field F]
333
327
[fintype G] [mul_semiring_action G F] [has_faithful_scalar G F] :
334
328
G ≃ (F →ₐ[fixed_points.subfield G F] F) :=
335
- function.embedding.equiv_of_surjective (to_alg_hom G F) (to_alg_hom_bijective G F). 2
329
+ equiv.of_bijective _ (to_alg_hom_bijective G F)
336
330
337
331
end fixed_points
0 commit comments