Skip to content

Commit 8738ebf

Browse files
committed
feat(FieldTheory/Normal): Intersection of normal extensions is normal (#15290)
This PR proves that an intersection of normal extensions is normal (we already have that a compositum of normal extensions is normal).
1 parent c378552 commit 8738ebf

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

Mathlib/FieldTheory/Normal.lean

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,26 @@ instance normal_sup
174174
Normal F (E ⊔ E' : IntermediateField F K) :=
175175
iSup_bool_eq (f := Bool.rec E' E) ▸ normal_iSup (h := by rintro (_|_) <;> infer_instance)
176176

177+
/-- An intersection of normal extensions is normal -/
178+
instance normal_iInf {ι : Type*} [hι : Nonempty ι]
179+
(t : ι → IntermediateField F K) [h : ∀ i, Normal F (t i)] :
180+
Normal F (⨅ i, t i : IntermediateField F K) := by
181+
refine { toIsAlgebraic := ?_, splits' := fun x => ?_ }
182+
· let f := inclusion (iInf_le t hι.some)
183+
exact Algebra.IsAlgebraic.of_injective f f.injective
184+
· have hx : ∀ i, Splits (algebraMap F (t i)) (minpoly F x) := by
185+
intro i
186+
rw [← minpoly.algHom_eq (inclusion (iInf_le t i)) (inclusion (iInf_le t i)).injective]
187+
exact (h i).splits' (inclusion (iInf_le t i) x)
188+
simp only [splits_iff_mem (splits_of_isScalarTower K (hx hι.some))] at hx ⊢
189+
rintro y hy - ⟨-, ⟨i, rfl⟩, rfl⟩
190+
exact hx i y hy
191+
192+
instance normal_inf
193+
(E E' : IntermediateField F K) [Normal F E] [Normal F E'] :
194+
Normal F (E ⊓ E' : IntermediateField F K) :=
195+
iInf_bool_eq (f := Bool.rec E' E) ▸ normal_iInf (h := by rintro (_|_) <;> infer_instance)
196+
177197
variable {F K}
178198
variable {L : Type*} [Field L] [Algebra F L] [Algebra K L] [IsScalarTower F K L]
179199

Mathlib/FieldTheory/SplittingField/IsSplittingField.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,13 @@ theorem IntermediateField.splits_of_splits (h : p.Splits (algebraMap K L))
150150
simp_rw [← F.fieldRange_val, rootSet_def, Finset.mem_coe, Multiset.mem_toFinset] at hF
151151
exact splits_of_comp _ F.val.toRingHom h hF
152152

153+
theorem IntermediateField.splits_iff_mem (h : p.Splits (algebraMap K L)) :
154+
p.Splits (algebraMap K F) ↔ ∀ x ∈ p.rootSet L, x ∈ F := by
155+
refine ⟨?_, IntermediateField.splits_of_splits h⟩
156+
intro hF
157+
rw [← Polynomial.image_rootSet hF F.val, Set.forall_mem_image]
158+
exact fun x _ ↦ x.2
159+
153160
theorem IsIntegral.mem_intermediateField_of_minpoly_splits {x : L} (int : IsIntegral K x)
154161
{F : IntermediateField K L} (h : Splits (algebraMap K F) (minpoly K x)) : x ∈ F := by
155162
rw [← F.fieldRange_val]; exact int.mem_range_algebraMap_of_minpoly_splits h

0 commit comments

Comments
 (0)