@@ -231,7 +231,7 @@ attribute [local instance] FractionRing.liftAlgebra in
231231/--
232232If `G` is finite and `IsGaloisGroup G A B` with `A` and `B` domains, then `G` is also
233233a Galois group for `FractionRing B / FractionRing A` for the action defined by
234- `FractionRing.mulSemiringAction_of_isGaloisGroup `.
234+ `IsFractionRing.mulSemiringAction `.
235235-/
236236theorem IsGaloisGroup.toFractionRing [IsDomain A] [IsDomain B] [IsTorsionFree A B] [Finite G]
237237 [IsGaloisGroup G A B] :
@@ -314,16 +314,6 @@ protected theorem finite (A B : Type*) [CommRing A] [CommRing B] [Algebra A B] [
314314 IsGalois.card_aut_eq_finrank K L]
315315 exact ⟨fun _ _ ↦ (faithful K).eq_of_smul_eq_smul ∘ DFunLike.ext_iff.mp, rfl⟩)
316316
317- /-- If `G` and `G'` are finite Galois groups for `L/K`, then `G` is isomorphic to `G'`. -/
318- noncomputable def mulEquivCongr [IsGaloisGroup G K L] [Finite G]
319- [IsGaloisGroup G' K L] [Finite G'] : G ≃* G' :=
320- (mulEquivAlgEquiv G K L).trans (mulEquivAlgEquiv G' K L).symm
321-
322- @[simp]
323- theorem mulEquivCongr_apply_smul [IsGaloisGroup G K L] [Finite G] [IsGaloisGroup G' K L] [Finite G']
324- (g : G) (x : L) : mulEquivCongr G G' K L g • x = g • x :=
325- AlgEquiv.ext_iff.mp ((mulEquivAlgEquiv G' K L).apply_symm_apply (mulEquivAlgEquiv G K L g)) x
326-
327317@[simp]
328318theorem map_mulEquivAlgEquiv_fixingSubgroup
329319 [IsGaloisGroup G K L] [Finite G] (F : IntermediateField K L) :
@@ -332,6 +322,57 @@ theorem map_mulEquivAlgEquiv_fixingSubgroup
332322 obtain ⟨g, rfl⟩ := (mulEquivAlgEquiv G K L).surjective g
333323 simp [mem_fixingSubgroup_iff]
334324
325+ /-- If `G` and `G'` are finite Galois groups for `L/K`, then `G` is isomorphic to `G'`.
326+ See `mulEquivCongr` for a more general version. -/
327+ noncomputable def mulEquivCongr' [IsGaloisGroup G K L] [Finite G]
328+ [IsGaloisGroup G' K L] [Finite G'] : G ≃* G' :=
329+ (mulEquivAlgEquiv G K L).trans (mulEquivAlgEquiv G' K L).symm
330+
331+ @[simp]
332+ theorem mulEquivCongr'_apply_smul [IsGaloisGroup G K L] [Finite G] [IsGaloisGroup G' K L]
333+ [Finite G'] (g : G) (x : L) : mulEquivCongr' G G' K L g • x = g • x :=
334+ AlgEquiv.ext_iff.mp ((mulEquivAlgEquiv G' K L).apply_symm_apply (mulEquivAlgEquiv G K L g)) x
335+
336+ attribute [local instance ] FractionRing.liftAlgebra in
337+ /-- If `G` and `G'` are finite Galois groups for `B/A` with `B` a domain, then `G` is
338+ isomorphic to `G'`. -/
339+ noncomputable def mulEquivCongr [Finite G] [Finite G'] (A B : Type *) [CommRing A]
340+ [CommRing B] [IsDomain B] [Algebra A B] [FaithfulSMul A B] [MulSemiringAction G B]
341+ [MulSemiringAction G' B] [IsGaloisGroup G A B] [IsGaloisGroup G' A B] :
342+ G ≃* G' :=
343+ haveI : IsDomain A := (FaithfulSMul.algebraMap_injective A B).isDomain
344+ letI K := FractionRing A
345+ letI L := FractionRing B
346+ letI : MulSemiringAction G L := IsFractionRing.mulSemiringAction G A B K L
347+ letI : MulSemiringAction G' L := IsFractionRing.mulSemiringAction G' A B K L
348+ haveI : IsGaloisGroup G K L := IsGaloisGroup.toFractionRing G A B
349+ haveI : IsGaloisGroup G' K L := IsGaloisGroup.toFractionRing G' A B
350+ mulEquivCongr' G G' K L
351+
352+ attribute [local instance ] FractionRing.liftAlgebra in
353+ @[simp]
354+ theorem mulEquivCongr_apply_smul [Finite G] [Finite G'] (A B : Type *) [CommRing A]
355+ [CommRing B] [IsDomain B] [Algebra A B] [FaithfulSMul A B] [MulSemiringAction G B]
356+ [MulSemiringAction G' B] [IsGaloisGroup G A B] [IsGaloisGroup G' A B] (g : G) (x : B) :
357+ mulEquivCongr G G' A B g • x = g • x := by
358+ haveI : IsDomain A := (FaithfulSMul.algebraMap_injective A B).isDomain
359+ letI K := FractionRing A
360+ letI L := FractionRing B
361+ letI : MulSemiringAction G L := IsFractionRing.mulSemiringAction G A B K L
362+ letI : MulSemiringAction G' L := IsFractionRing.mulSemiringAction G' A B K L
363+ haveI : IsGaloisGroup G K L := IsGaloisGroup.toFractionRing G A B
364+ haveI : IsGaloisGroup G' K L := IsGaloisGroup.toFractionRing G' A B
365+ apply FaithfulSMul.algebraMap_injective B L
366+ rw [algebraMap.smul', algebraMap.smul']
367+ exact mulEquivCongr'_apply_smul G G' K L g _
368+
369+ @[simp]
370+ theorem mulEquivCongr_symm_apply_smul [Finite G] [Finite G'] (A B : Type *) [CommRing A]
371+ [CommRing B] [IsDomain B] [Algebra A B] [FaithfulSMul A B] [MulSemiringAction G B]
372+ [MulSemiringAction G' B] [IsGaloisGroup G A B] [IsGaloisGroup G' A B] (g : G') (x : B) :
373+ (mulEquivCongr G G' A B).symm g • x = g • x := by
374+ rw [← mulEquivCongr_apply_smul G G' A B, MulEquiv.apply_symm_apply]
375+
335376variable (H H' : Subgroup G) (F F' : IntermediateField K L)
336377
337378instance (R S : Type *) [CommRing R] [CommRing S] [Algebra R S]
@@ -495,10 +536,10 @@ theorem fixingSubgroup_range_algebraMap' [Finite G] (B : Type*) [CommSemiring B]
495536attribute [local instance ] FractionRing.liftAlgebra in
496537/-- If `G` acts on a domain `C` with `IsGaloisGroup G A C`, and a subgroup `H` acts on `C` with
497538`IsGaloisGroup H B C`, then the fixing subgroup of `algebraMap B C` equals `H`. -/
498- theorem fixingSubgroup_range_algebraMap [Finite G] (A B C : Type *) [CommRing A]
499- [CommRing C ] [IsDomain C ] [Algebra A C] [FaithfulSMul A C] [MulSemiringAction G C]
500- (H : Subgroup G) [hGAC : IsGaloisGroup G A C] [CommRing B ] [Algebra B C] [FaithfulSMul B C]
501- [hH : IsGaloisGroup H B C] :
539+ theorem fixingSubgroup_range_algebraMap [Finite G] (A B C : Type *) (H : Subgroup G)
540+ [CommRing A ] [CommRing B ] [CommRing C] [IsDomain C]
541+ [Algebra A C] [FaithfulSMul A C ] [MulSemiringAction G C] [hGAC : IsGaloisGroup G A C]
542+ [Algebra B C] [FaithfulSMul B C] [ hH : IsGaloisGroup H B C] :
502543 fixingSubgroup G (Set.range (algebraMap B C)) = H := by
503544 have : IsDomain B := (FaithfulSMul.algebraMap_injective B C).isDomain
504545 have : IsDomain A := (FaithfulSMul.algebraMap_injective A C).isDomain
0 commit comments