Theorem: AlgebraicClosureAux.exists_root
File: Mathlib/FieldTheory/IsAlgClosed/AlgebraicClosure.lean

tactic: have : ∃ n p, Polynomial.map (ofStep k n) p = f := by
  convert Ring.DirectLimit.Polynomial.exists_of f
state_before: k : Type u
inst✝ : Field k
f : (AlgebraicClosureAux k)[X]
hfm : f.Monic
hfi : Irreducible f
⊢ ∃ x, eval x f = 0
state_after: k : Type u
inst✝ : Field k
f : (AlgebraicClosureAux k)[X]
hfm : f.Monic
hfi : Irreducible f
this : ∃ n p, map (ofStep k n) p = f
⊢ ∃ x, eval x f = 0

tactic: obtain ⟨n, p, rfl⟩ := this
state_before: k : Type u
inst✝ : Field k
f : (AlgebraicClosureAux k)[X]
hfm : f.Monic
hfi : Irreducible f
this : ∃ n p, map (ofStep k n) p = f
⊢ ∃ x, eval x f = 0
state_after: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : (map (ofStep k n) p).Monic
hfi : Irreducible (map (ofStep k n) p)
⊢ ∃ x, eval x (map (ofStep k n) p) = 0

tactic: rw [monic_map_iff] at hfm
state_before: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : (map (ofStep k n) p).Monic
hfi : Irreducible (map (ofStep k n) p)
⊢ ∃ x, eval x (map (ofStep k n) p) = 0
state_after: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
⊢ ∃ x, eval x (map (ofStep k n) p) = 0

tactic: have := hfm.irreducible_of_irreducible_map (ofStep k n) p hfi
state_before: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
⊢ ∃ x, eval x (map (ofStep k n) p) = 0
state_after: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
⊢ ∃ x, eval x (map (ofStep k n) p) = 0

tactic: obtain ⟨x, hx⟩ := toStepSucc.exists_root k hfm this
state_before: case intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
⊢ ∃ x, eval x (map (ofStep k n) p) = 0
state_after: case intro.intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
x : Step k (n + 1)
hx : eval₂ (toStepSucc k n) x p = 0
⊢ ∃ x, eval x (map (ofStep k n) p) = 0

tactic: refine ⟨ofStep k (n + 1) x, ?_⟩
state_before: case intro.intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
x : Step k (n + 1)
hx : eval₂ (toStepSucc k n) x p = 0
⊢ ∃ x, eval x (map (ofStep k n) p) = 0
state_after: case intro.intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
x : Step k (n + 1)
hx : eval₂ (toStepSucc k n) x p = 0
⊢ eval ((ofStep k (n + 1)) x) (map (ofStep k n) p) = 0

tactic: rw [← ofStep_succ k n, eval_map, ← hom_eval₂, hx, RingHom.map_zero]
state_before: case intro.intro.intro
k : Type u
inst✝ : Field k
n : ℕ
p : (Step k n)[X]
hfm : p.Monic
hfi : Irreducible (map (ofStep k n) p)
this : Irreducible p
x : Step k (n + 1)
hx : eval₂ (toStepSucc k n) x p = 0
⊢ eval ((ofStep k (n + 1)) x) (map (ofStep k n) p) = 0
state_after: no goals

tactic: convert Ring.DirectLimit.Polynomial.exists_of f
state_before: k : Type u
inst✝ : Field k
f : (AlgebraicClosureAux k)[X]
hfm : f.Monic
hfi : Irreducible f
⊢ ∃ n p, map (ofStep k n) p = f
state_after: no goals