Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit de37a6a

Browse files
committed
chore(field_theory/fixed): reuse existing mul_semiring_action.to_alg_hom by providing smul_comm_class (#8965)
This removes `fixed_points.to_alg_hom` as this is really just a bundled form of `mul_semiring_action.to_alg_hom` + `mul_semiring_action.to_alg_hom_injective`, once we provide the missing `smul_comm_class`.
1 parent 2aebabc commit de37a6a

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed

src/algebra/algebra/basic.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,10 @@ This is a stronger version of `mul_semiring_action.to_ring_hom` and
11001100
def to_alg_hom (m : M) : A →ₐ[R] A :=
11011101
alg_hom.mk' (mul_semiring_action.to_ring_hom _ _ m) (smul_comm _)
11021102

1103+
theorem to_alg_hom_injective [has_faithful_scalar M A] :
1104+
function.injective (mul_semiring_action.to_alg_hom R A : M → A →ₐ[R] A) :=
1105+
λ m₁ m₂ h, eq_of_smul_eq_smul $ λ r, alg_hom.ext_iff.1 h r
1106+
11031107
end
11041108

11051109
section
@@ -1114,6 +1118,10 @@ def to_alg_equiv (g : G) : A ≃ₐ[R] A :=
11141118
{ .. mul_semiring_action.to_ring_equiv _ _ g,
11151119
.. mul_semiring_action.to_alg_hom R A g }
11161120

1121+
theorem to_alg_equiv_injective [has_faithful_scalar G A] :
1122+
function.injective (mul_semiring_action.to_alg_equiv R A : G → A ≃ₐ[R] A) :=
1123+
λ m₁ m₂ h, eq_of_smul_eq_smul $ λ r, alg_equiv.ext_iff.1 h r
1124+
11171125
end
11181126

11191127
end mul_semiring_action

src/field_theory/fixed.lean

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ subfield.copy (⨅ (m : M), fixed_by.subfield F m) (fixed_points M F)
8484
instance : is_invariant_subfield M (fixed_points.subfield M F) :=
8585
{ smul_mem := λ g x hx g', by rw [hx, hx] }
8686

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 _ _ _
8792

8893
@[simp] theorem smul (m : M) (x : fixed_points.subfield M F) : m • x = x :=
8994
subtype.eq $ x.2 m
@@ -292,38 +297,27 @@ lemma finrank_alg_hom (K : Type u) (V : Type v)
292297
fintype_card_le_finrank_of_linear_independent $ linear_independent_to_linear_map K V V
293298

294299
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
307300

308301
theorem finrank_eq_card (G : Type u) (F : Type v) [group G] [field F]
309302
[fintype G] [mul_semiring_action G F] [has_faithful_scalar G F] :
310303
finrank (fixed_points.subfield G F) F = fintype.card G :=
311304
le_antisymm (fixed_points.finrank_le_card G F) $
312305
calc fintype.card G
313306
≤ 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)
315308
... ≤ finrank F (F →ₗ[fixed_points.subfield G F] F) : finrank_alg_hom (fixed_points G F) F
316309
... = finrank (fixed_points.subfield G F) F : finrank_linear_map' _ _ _
317310

311+
/-- `mul_semiring_action.to_alg_hom` is bijective. -/
318312
theorem to_alg_hom_bijective (G : Type u) (F : Type v) [group G] [field F]
319313
[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) :=
321315
begin
322316
rw fintype.bijective_iff_injective_and_card,
323317
split,
324-
{ exact (to_alg_hom G F).injective },
318+
{ exact mul_semiring_action.to_alg_hom_injective _ F },
325319
{ 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) },
327321
{ rw ← finrank_eq_card G F,
328322
exact has_le.le.trans_eq (finrank_alg_hom _ F) (finrank_linear_map' _ _ _) } },
329323
end
@@ -332,6 +326,6 @@ end
332326
def to_alg_hom_equiv (G : Type u) (F : Type v) [group G] [field F]
333327
[fintype G] [mul_semiring_action G F] [has_faithful_scalar G F] :
334328
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)
336330

337331
end fixed_points

0 commit comments

Comments
 (0)