Theorem: minpoly.exists_algEquiv_of_root
File: Mathlib/FieldTheory/Normal.lean

Proof steps:
state_before: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
⊢ ∃ σ, σ x = y
state_after: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
⊢ ∃ σ, σ x = y
tactic: have hx : IsAlgebraic K x := ⟨minpoly K y, ne_zero hy.isIntegral, h_ev⟩
state_before: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
⊢ ∃ σ, σ x = y
state_after: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
f : ↥K⟮x⟯ ≃ₐ[K] ↥K⟮y⟯ := algEquiv hx ⋯
⊢ ∃ σ, σ x = y
tactic: set f : K⟮x⟯ ≃ₐ[K] K⟮y⟯ := algEquiv hx (eq_of_root hy h_ev)
state_before: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
f : ↥K⟮x⟯ ≃ₐ[K] ↥K⟮y⟯ := algEquiv hx ⋯
⊢ ∃ σ, σ x = y
state_after: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
f : ↥K⟮x⟯ ≃ₐ[K] ↥K⟮y⟯ := algEquiv hx ⋯
hxy : (f.liftNormal L) ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)) = y
⊢ ∃ σ, σ x = y
tactic: have hxy : (liftNormal f L) ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)) = y := by
    rw [liftNormal_commutes f L, algEquiv_apply, AdjoinSimple.algebraMap_gen K y]
state_before: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
hx : IsAlgebraic K x
f : ↥K⟮x⟯ ≃ₐ[K] ↥K⟮y⟯ := algEquiv hx ⋯
hxy : (f.liftNormal L) ((algebraMap (↥K⟮x⟯) L) (AdjoinSimple.gen K x)) = y
⊢ ∃ σ, σ x = y
state_after: no goals
tactic: exact ⟨(liftNormal f L), hxy⟩