Theorem: IntermediateField.isSplittingField_iSup
File: Mathlib/FieldTheory/Adjoin.lean

Proof steps:
state_before: F : Type u_1
inst✝⁵ : Field F
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
h : ∀ i ∈ s, IsSplittingField K (↥(t i)) (p i)
⊢ IsSplittingField K (↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i)
state_after: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
h : ∀ i ∈ s, IsSplittingField K (↥(t i)) (p i)
F : IntermediateField K L := ⨆ i ∈ s, t i
⊢ IsSplittingField K (↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i)
tactic: let F : IntermediateField K L := ⨆ i ∈ s, t i
state_before: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
h : ∀ i ∈ s, IsSplittingField K (↥(t i)) (p i)
F : IntermediateField K L := ⨆ i ∈ s, t i
⊢ IsSplittingField K (↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i)
state_after: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
h : ∀ i ∈ s, IsSplittingField K (↥(t i)) (p i)
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
⊢ IsSplittingField K (↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i)
tactic: have hF : ∀ i ∈ s, t i ≤ F := fun i hi ↦ le_iSup_of_le i (le_iSup (fun _ ↦ t i) hi)
state_before: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
h : ∀ i ∈ s, IsSplittingField K (↥(t i)) (p i)
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
⊢ IsSplittingField K (↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i)
state_after: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ Splits (algebraMap K ↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i) ∧ ⨆ i ∈ s, t i = adjoin K ((∏ i ∈ s, p i).rootSet L)
tactic: simp only [isSplittingField_iff] at h ⊢
state_before: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ Splits (algebraMap K ↥(⨆ i ∈ s, t i)) (∏ i ∈ s, p i) ∧ ⨆ i ∈ s, t i = adjoin K ((∏ i ∈ s, p i).rootSet L)
state_after: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ ⨆ i ∈ s, t i = adjoin K ((∏ i ∈ s, p i).rootSet L)
tactic: refine
    ⟨splits_prod (algebraMap K F) fun i hi ↦
        splits_comp_of_splits (algebraMap K (t i)) (inclusion (hF i hi)).toRingHom
          (h i hi).1,
      ?_⟩
state_before: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ ⨆ i ∈ s, t i = adjoin K ((∏ i ∈ s, p i).rootSet L)
state_after: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ ⨆ i ∈ s, t i = ⨆ i ∈ s, adjoin K ((p i).rootSet L)
tactic: simp only [rootSet_prod p s h0, ← Set.iSup_eq_iUnion, (@gc K _ L _ _).l_iSup₂]
state_before: F✝ : Type u_1
inst✝⁵ : Field F✝
E : Type u_2
inst✝⁴ : Field E
inst✝³ : Algebra F✝ E
S : Set E
α : E
K : Type u_3
L : Type u_4
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
E1 E2 : IntermediateField K L
ι : Type u_5
t : ι → IntermediateField K L
p : ι → K[X]
s : Finset ι
h0 : ∏ i ∈ s, p i ≠ 0
F : IntermediateField K L := ⨆ i ∈ s, t i
hF : ∀ i ∈ s, t i ≤ F
h : ∀ i ∈ s, Splits (algebraMap K ↥(t i)) (p i) ∧ t i = adjoin K ((p i).rootSet L)
⊢ ⨆ i ∈ s, t i = ⨆ i ∈ s, adjoin K ((p i).rootSet L)
state_after: no goals
tactic: exact iSup_congr fun i ↦ iSup_congr fun hi ↦ (h i hi).2