@@ -631,7 +631,7 @@ theorem adjoin_algebraic_toSubalgebra {S : Set E} (hS : ∀ x ∈ S, IsAlgebraic
631
631
simp only [isAlgebraic_iff_isIntegral] at hS
632
632
have : Algebra.IsIntegral F (Algebra.adjoin F S) := by
633
633
rwa [← le_integralClosure_iff_isIntegral, Algebra.adjoin_le_iff]
634
- have := isField_of_isIntegral_of_isField' this (Field.toIsField F)
634
+ have : IsField (Algebra.adjoin F S) : = isField_of_isIntegral_of_isField' (Field.toIsField F)
635
635
rw [← ((Algebra.adjoin F S).toIntermediateField' this).eq_adjoin_of_eq_algebra_adjoin F S] <;> rfl
636
636
#align intermediate_field.adjoin_algebraic_to_subalgebra IntermediateField.adjoin_algebraic_toSubalgebra
637
637
@@ -675,38 +675,39 @@ theorem le_sup_toSubalgebra : E1.toSubalgebra ⊔ E2.toSubalgebra ≤ (E1 ⊔ E2
675
675
sup_le (show E1 ≤ E1 ⊔ E2 from le_sup_left) (show E2 ≤ E1 ⊔ E2 from le_sup_right)
676
676
#align intermediate_field.le_sup_to_subalgebra IntermediateField.le_sup_toSubalgebra
677
677
678
- theorem sup_toSubalgebra_of_isAlgebraic_right (halg : Algebra.IsAlgebraic K E2) :
678
+ theorem sup_toSubalgebra_of_isAlgebraic_right [ Algebra.IsAlgebraic K E2] :
679
679
(E1 ⊔ E2).toSubalgebra = E1.toSubalgebra ⊔ E2.toSubalgebra := by
680
680
have : (adjoin E1 (E2 : Set L)).toSubalgebra = _ := adjoin_algebraic_toSubalgebra fun x h ↦
681
- IsAlgebraic.tower_top E1 (isAlgebraic_iff.1 (halg ⟨x, h⟩))
681
+ IsAlgebraic.tower_top E1 (isAlgebraic_iff.1
682
+ (Algebra.IsAlgebraic.isAlgebraic (⟨x, h⟩ : E2)))
682
683
apply_fun Subalgebra.restrictScalars K at this
683
684
erw [← restrictScalars_toSubalgebra, restrictScalars_adjoin,
684
685
Algebra.restrictScalars_adjoin] at this
685
686
exact this
686
687
687
- theorem sup_toSubalgebra_of_isAlgebraic_left (halg : Algebra.IsAlgebraic K E1) :
688
+ theorem sup_toSubalgebra_of_isAlgebraic_left [ Algebra.IsAlgebraic K E1] :
688
689
(E1 ⊔ E2).toSubalgebra = E1.toSubalgebra ⊔ E2.toSubalgebra := by
689
- have := sup_toSubalgebra_of_isAlgebraic_right E2 E1 halg
690
+ have := sup_toSubalgebra_of_isAlgebraic_right E2 E1
690
691
rwa [sup_comm (a := E1), sup_comm (a := E1.toSubalgebra)]
691
692
692
693
/-- The compositum of two intermediate fields is equal to the compositum of them
693
694
as subalgebras, if one of them is algebraic over the base field. -/
694
695
theorem sup_toSubalgebra_of_isAlgebraic
695
696
(halg : Algebra.IsAlgebraic K E1 ∨ Algebra.IsAlgebraic K E2) :
696
697
(E1 ⊔ E2).toSubalgebra = E1.toSubalgebra ⊔ E2.toSubalgebra :=
697
- halg.elim (sup_toSubalgebra_of_isAlgebraic_left E1 E2)
698
- (sup_toSubalgebra_of_isAlgebraic_right E1 E2)
698
+ halg.elim (fun _ ↦ sup_toSubalgebra_of_isAlgebraic_left E1 E2)
699
+ (fun _ ↦ sup_toSubalgebra_of_isAlgebraic_right E1 E2)
699
700
700
701
theorem sup_toSubalgebra_of_left [FiniteDimensional K E1] :
701
702
(E1 ⊔ E2).toSubalgebra = E1.toSubalgebra ⊔ E2.toSubalgebra :=
702
- sup_toSubalgebra_of_isAlgebraic_left E1 E2 (Algebra.IsAlgebraic.of_finite K _)
703
+ sup_toSubalgebra_of_isAlgebraic_left E1 E2
703
704
#align intermediate_field.sup_to_subalgebra IntermediateField.sup_toSubalgebra_of_left
704
705
705
706
@[deprecated] alias sup_toSubalgebra := sup_toSubalgebra_of_left
706
707
707
708
theorem sup_toSubalgebra_of_right [FiniteDimensional K E2] :
708
709
(E1 ⊔ E2).toSubalgebra = E1.toSubalgebra ⊔ E2.toSubalgebra :=
709
- sup_toSubalgebra_of_isAlgebraic_right E1 E2 (Algebra.IsAlgebraic.of_finite K _)
710
+ sup_toSubalgebra_of_isAlgebraic_right E1 E2
710
711
711
712
instance finiteDimensional_sup [FiniteDimensional K E1] [FiniteDimensional K E2] :
712
713
FiniteDimensional K (E1 ⊔ E2 : IntermediateField K L) := by
@@ -804,15 +805,16 @@ theorem adjoin_toSubalgebra_of_isAlgebraic (L : IntermediateField F K)
804
805
erw [← restrictScalars_toSubalgebra, restrictScalars_adjoin_of_algEquiv i' hi,
805
806
Algebra.restrictScalars_adjoin_of_algEquiv i' hi, restrictScalars_adjoin,
806
807
Algebra.restrictScalars_adjoin]
807
- exact E'.sup_toSubalgebra_of_isAlgebraic L (halg.imp i'.isAlgebraic id)
808
+ exact E'.sup_toSubalgebra_of_isAlgebraic L (halg.imp
809
+ (fun (_ : Algebra.IsAlgebraic F E) ↦ i'.isAlgebraic) id)
808
810
809
811
theorem adjoin_toSubalgebra_of_isAlgebraic_left (L : IntermediateField F K)
810
- ( halg : Algebra.IsAlgebraic F E) :
812
+ [ halg : Algebra.IsAlgebraic F E] :
811
813
(adjoin E (L : Set K)).toSubalgebra = Algebra.adjoin E (L : Set K) :=
812
814
adjoin_toSubalgebra_of_isAlgebraic E L (Or.inl halg)
813
815
814
816
theorem adjoin_toSubalgebra_of_isAlgebraic_right (L : IntermediateField F K)
815
- ( halg : Algebra.IsAlgebraic F L) :
817
+ [ halg : Algebra.IsAlgebraic F L] :
816
818
(adjoin E (L : Set K)).toSubalgebra = Algebra.adjoin E (L : Set K) :=
817
819
adjoin_toSubalgebra_of_isAlgebraic E L (Or.inr halg)
818
820
@@ -829,12 +831,12 @@ theorem adjoin_rank_le_of_isAlgebraic (L : IntermediateField F K)
829
831
rwa [(Subalgebra.equivOfEq _ _ h).symm.toLinearEquiv.rank_eq] at this
830
832
831
833
theorem adjoin_rank_le_of_isAlgebraic_left (L : IntermediateField F K)
832
- ( halg : Algebra.IsAlgebraic F E) :
834
+ [ halg : Algebra.IsAlgebraic F E] :
833
835
Module.rank E (adjoin E (L : Set K)) ≤ Module.rank F L :=
834
836
adjoin_rank_le_of_isAlgebraic E L (Or.inl halg)
835
837
836
838
theorem adjoin_rank_le_of_isAlgebraic_right (L : IntermediateField F K)
837
- ( halg : Algebra.IsAlgebraic F L) :
839
+ [ halg : Algebra.IsAlgebraic F L] :
838
840
Module.rank E (adjoin E (L : Set K)) ≤ Module.rank F L :=
839
841
adjoin_rank_le_of_isAlgebraic E L (Or.inr halg)
840
842
@@ -905,7 +907,7 @@ theorem exists_finset_of_mem_supr'' {ι : Type*} {f : ι → IntermediateField F
905
907
(subset_adjoin F (rootSet (minpoly F x1) E) _)
906
908
· rw [IntermediateField.minpoly_eq, Subtype.coe_mk]
907
909
· rw [mem_rootSet_of_ne, minpoly.aeval]
908
- exact minpoly.ne_zero (isIntegral_iff.mp (h i ⟨x1, hx1⟩).isIntegral )
910
+ exact minpoly.ne_zero (isIntegral_iff.mp (Algebra.IsIntegral.isIntegral ( ⟨x1, hx1⟩ : f i)) )
909
911
#align intermediate_field.exists_finset_of_mem_supr'' IntermediateField.exists_finset_of_mem_supr''
910
912
911
913
theorem exists_finset_of_mem_adjoin {S : Set E} {x : E} (hx : x ∈ adjoin F S) :
@@ -1192,7 +1194,7 @@ variable {F} in
1192
1194
/-- If `E / F` is an infinite algebraic extension, then there exists an intermediate field
1193
1195
`L / F` with arbitrarily large finite extension degree. -/
1194
1196
theorem exists_lt_finrank_of_infinite_dimensional
1195
- (halg : Algebra.IsAlgebraic F E) (hnfd : ¬ FiniteDimensional F E) (n : ℕ) :
1197
+ [ Algebra.IsAlgebraic F E] (hnfd : ¬ FiniteDimensional F E) (n : ℕ) :
1196
1198
∃ L : IntermediateField F E, FiniteDimensional F L ∧ n < finrank F L := by
1197
1199
induction' n with n ih
1198
1200
· exact ⟨⊥, Subalgebra.finite_bot, finrank_pos⟩
@@ -1202,7 +1204,7 @@ theorem exists_lt_finrank_of_infinite_dimensional
1202
1204
rw [show L = ⊤ from eq_top_iff.2 fun x _ ↦ hnfd x] at fin
1203
1205
exact topEquiv.toLinearEquiv.finiteDimensional
1204
1206
let L' := L ⊔ F⟮x⟯
1205
- haveI := adjoin.finiteDimensional (halg x).isIntegral
1207
+ haveI := adjoin.finiteDimensional (Algebra.IsIntegral.isIntegral (R := F) x)
1206
1208
refine ⟨L', inferInstance, by_contra fun h ↦ ?_⟩
1207
1209
have h1 : L = L' := eq_of_le_of_finrank_le le_sup_left ((not_lt.1 h).trans hn)
1208
1210
have h2 : F⟮x⟯ ≤ L' := le_sup_right
@@ -1224,12 +1226,13 @@ theorem _root_.minpoly.degree_le (x : L) [FiniteDimensional K L] :
1224
1226
theorem isAlgebraic_iSup {ι : Type *} {t : ι → IntermediateField K L}
1225
1227
(h : ∀ i, Algebra.IsAlgebraic K (t i)) :
1226
1228
Algebra.IsAlgebraic K (⨆ i, t i : IntermediateField K L) := by
1229
+ constructor
1227
1230
rintro ⟨x, hx⟩
1228
1231
obtain ⟨s, hx⟩ := exists_finset_of_mem_supr' hx
1229
1232
rw [isAlgebraic_iff, Subtype.coe_mk, ← Subtype.coe_mk (p := (· ∈ _)) x hx, ← isAlgebraic_iff]
1230
1233
haveI : ∀ i : Σ i, t i, FiniteDimensional K K⟮(i.2 : L)⟯ := fun ⟨i, x⟩ ↦
1231
- adjoin.finiteDimensional (isIntegral_iff.1 (h i x).isIntegral )
1232
- apply Algebra. IsAlgebraic.of_finite
1234
+ adjoin.finiteDimensional (isIntegral_iff.1 (Algebra.IsIntegral.isIntegral x) )
1235
+ apply IsAlgebraic.of_finite
1233
1236
#align intermediate_field.is_algebraic_supr IntermediateField.isAlgebraic_iSup
1234
1237
1235
1238
theorem isAlgebraic_adjoin {S : Set L} (hS : ∀ x ∈ S, IsIntegral K x) :
0 commit comments