Skip to content

Commit 718a853

Browse files
committed
feat(FieldTheory/Galois/IsGaloisGroup): add IsGaloisGroup.of_algEquiv and of_ringEquiv (leanprover-community#38902)
Add two constructors for `IsGaloisGroup`: - `IsGaloisGroup.of_algEquiv`: if `G` is a Galois group on `B/A` and `e : B ≃ₐ[A] B'` is `G`-equivariant, then `G` is a Galois group on `B'/A`. - `IsGaloisGroup.of_ringEquiv`: if `G` is a Galois group on `B/A` and `e : A ≃+* A'` is compatible with the algebra structures, then `G` is a Galois group on `B/A'`.
1 parent d568c8c commit 718a853

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Mathlib/FieldTheory/Galois/IsGaloisGroup.lean

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,37 @@ theorem IsGaloisGroup.top_iff : IsGaloisGroup (⊤ : Subgroup G) A B ↔ IsGaloi
8080
instance [IsGaloisGroup G A B] : IsGaloisGroup (⊤ : Subgroup G) A B :=
8181
IsGaloisGroup.top_iff.mpr ‹_›
8282

83+
theorem IsGaloisGroup.of_algEquiv [hG : IsGaloisGroup G A B] (B' : Type*) [Semiring B']
84+
[Algebra A B'] [MulSemiringAction G B'] (e : B ≃ₐ[A] B')
85+
(he : ∀ (g : G) (x : B), e (g • x) = g • (e x)) :
86+
IsGaloisGroup G A B' where
87+
faithful := ⟨fun h ↦ hG.faithful.eq_of_smul_eq_smul fun b ↦ by simpa [← he] using h (e b)⟩
88+
commutes := ⟨fun g a b' ↦ by
89+
have h' {x'} : e.symm (g • x') = g • e.symm x' := by
90+
apply e.injective
91+
simp [he]
92+
apply e.symm.injective
93+
simpa [h', map_smul] using hG.commutes.smul_comm g a (e.symm b')⟩
94+
isInvariant := ⟨fun x' hx' ↦ by
95+
obtain ⟨a, ha⟩ := hG.isInvariant.isInvariant (e.symm x') (fun g ↦ by
96+
apply e.injective
97+
simp [he, hx'])
98+
exact ⟨a, by rw [← e.commutes, ha, AlgEquiv.apply_symm_apply]⟩⟩
99+
100+
theorem IsGaloisGroup.of_ringEquiv [hG : IsGaloisGroup G A B] [CommSemiring A'] [Algebra A' B]
101+
(e : A ≃+* A') (he : ∀ a, algebraMap A' B (e a) = algebraMap A B a) :
102+
IsGaloisGroup G A' B where
103+
faithful := hG.faithful
104+
commutes := ⟨by
105+
intro g a' b
106+
obtain ⟨a, rfl⟩ : ∃ a, e a = a' := e.surjective a'
107+
rw [Algebra.smul_def, Algebra.smul_def, he, ← Algebra.smul_def, ← Algebra.smul_def]
108+
exact hG.commutes.smul_comm g a b⟩
109+
isInvariant := ⟨by
110+
intro b h
111+
obtain ⟨a, ha⟩ := hG.isInvariant.isInvariant b h
112+
exact ⟨e a, by rw [he, ha]⟩⟩
113+
83114
attribute [instance low] IsGaloisGroup.commutes IsGaloisGroup.isInvariant
84115

85116
variable {C : Type*} [CommSemiring C] [Algebra C B]

0 commit comments

Comments
 (0)