Theorem: separableClosure.isPurelyInseparable
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: set L := separableClosure F E
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
⊢ IsIntegral (↥(separableClosure F E)) x ∧
    ((minpoly (↥(separableClosure F E)) x).Separable → x ∈ (algebraMap (↥(separableClosure F E)) E).range)
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
⊢ IsIntegral (↥L) x ∧ ((minpoly (↥L) x).Separable → x ∈ (algebraMap (↥L) E).range)

tactic: refine ⟨(IsAlgebraic.tower_top L (Algebra.IsAlgebraic.isAlgebraic (R := F) x)).isIntegral,
  fun h ↦ ?_⟩
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
⊢ IsIntegral (↥L) x ∧ ((minpoly (↥L) x).Separable → x ∈ (algebraMap (↥L) E).range)
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
⊢ x ∈ (algebraMap (↥L) E).range

tactic: haveI := (isSeparable_adjoin_simple_iff_separable L E).2 h
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
⊢ x ∈ (algebraMap (↥L) E).range
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this : IsSeparable ↥L ↥(↥L)⟮x⟯
⊢ x ∈ (algebraMap (↥L) E).range

tactic: haveI : IsSeparable F (restrictScalars F L⟮x⟯) := IsSeparable.trans F L L⟮x⟯
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this : IsSeparable ↥L ↥(↥L)⟮x⟯
⊢ x ∈ (algebraMap (↥L) E).range
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this✝ : IsSeparable ↥L ↥(↥L)⟮x⟯
this : IsSeparable F ↥(restrictScalars F (↥L)⟮x⟯)
⊢ x ∈ (algebraMap (↥L) E).range

tactic: have hx : x ∈ restrictScalars F L⟮x⟯ := mem_adjoin_simple_self _ x
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this✝ : IsSeparable ↥L ↥(↥L)⟮x⟯
this : IsSeparable F ↥(restrictScalars F (↥L)⟮x⟯)
⊢ x ∈ (algebraMap (↥L) E).range
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this✝ : IsSeparable ↥L ↥(↥L)⟮x⟯
this : IsSeparable F ↥(restrictScalars F (↥L)⟮x⟯)
hx : x ∈ restrictScalars F (↥L)⟮x⟯
⊢ x ∈ (algebraMap (↥L) E).range

tactic: exact ⟨⟨x, mem_separableClosure_iff.2 <| separable_of_mem_isSeparable F E hx⟩, rfl⟩
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : Algebra.IsAlgebraic F E
x : E
L : IntermediateField F E := separableClosure F E
h : (minpoly (↥L) x).Separable
this✝ : IsSeparable ↥L ↥(↥L)⟮x⟯
this : IsSeparable F ↥(restrictScalars F (↥L)⟮x⟯)
hx : x ∈ restrictScalars F (↥L)⟮x⟯
⊢ x ∈ (algebraMap (↥L) E).range
state_after: no goals