Theorem: isPurelyInseparable_of_finSepDegree_eq_one
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: rw [isPurelyInseparable_iff]
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
hdeg : finSepDegree F E = 1
⊢ IsPurelyInseparable F E
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
hdeg : finSepDegree F E = 1
⊢ ∀ (x : E), IsIntegral F x ∧ ((minpoly F x).Separable → x ∈ (algebraMap F E).range)

tactic: refine fun x ↦ ⟨Algebra.IsIntegral.isIntegral x, fun hsep ↦ ?_⟩
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
hdeg : finSepDegree F E = 1
⊢ ∀ (x : E), IsIntegral F x ∧ ((minpoly F x).Separable → x ∈ (algebraMap F 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
⊢ x ∈ (algebraMap F E).range

tactic: have : Algebra.IsAlgebraic F⟮x⟯ E := Algebra.IsAlgebraic.tower_top (K := F) F⟮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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
⊢ x ∈ (algebraMap F 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this : Algebra.IsAlgebraic (↥F⟮x⟯) E
⊢ x ∈ (algebraMap F E).range

tactic: have := finSepDegree_mul_finSepDegree_of_isAlgebraic F F⟮x⟯ 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this : Algebra.IsAlgebraic (↥F⟮x⟯) E
⊢ x ∈ (algebraMap F 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this✝ : Algebra.IsAlgebraic (↥F⟮x⟯) E
this : finSepDegree F ↥F⟮x⟯ * finSepDegree (↥F⟮x⟯) E = finSepDegree F E
⊢ x ∈ (algebraMap F E).range

tactic: rw [hdeg, mul_eq_one, (finSepDegree_adjoin_simple_eq_finrank_iff F E x
    (Algebra.IsAlgebraic.isAlgebraic x)).2 hsep,
  IntermediateField.finrank_eq_one_iff] at this
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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this✝ : Algebra.IsAlgebraic (↥F⟮x⟯) E
this : finSepDegree F ↥F⟮x⟯ * finSepDegree (↥F⟮x⟯) E = finSepDegree F E
⊢ x ∈ (algebraMap F 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this✝ : Algebra.IsAlgebraic (↥F⟮x⟯) E
this : F⟮x⟯ = ⊥ ∧ finSepDegree (↥F⟮x⟯) E = 1
⊢ x ∈ (algebraMap F E).range

tactic: simpa only [this.1] using mem_adjoin_simple_self F 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
hdeg : finSepDegree F E = 1
x : E
hsep : (minpoly F x).Separable
this✝ : Algebra.IsAlgebraic (↥F⟮x⟯) E
this : F⟮x⟯ = ⊥ ∧ finSepDegree (↥F⟮x⟯) E = 1
⊢ x ∈ (algebraMap F E).range
state_after: no goals