Theorem: IsAlgClosed.isCyclotomicExtension
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

tactic: refine ⟨@fun a ha => ?_, Algebra.eq_top_iff.mp <| Subsingleton.elim _ _⟩
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
⊢ IsCyclotomicExtension S K K
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
⊢ ∃ r, IsPrimitiveRoot r ↑a

tactic: obtain ⟨r, hr⟩ := IsAlgClosed.exists_aeval_eq_zero K _ (degree_cyclotomic_pos a K a.pos).ne'
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
⊢ ∃ r, IsPrimitiveRoot r ↑a
state_after: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
⊢ ∃ r, IsPrimitiveRoot r ↑a

tactic: refine ⟨r, ?_⟩
state_before: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
⊢ ∃ r, IsPrimitiveRoot r ↑a
state_after: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
⊢ IsPrimitiveRoot r ↑a

tactic: haveI := h a ha
state_before: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
⊢ IsPrimitiveRoot r ↑a
state_after: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
this : NeZero ↑↑a
⊢ IsPrimitiveRoot r ↑a

tactic: rwa [coe_aeval_eq_eval, ← IsRoot.def, isRoot_cyclotomic_iff] at hr
state_before: case intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsAlgClosed K
h : ∀ a ∈ S, NeZero ↑↑a
a : ℕ+
ha : a ∈ S
r : K
hr : (aeval r) (cyclotomic (↑a) K) = 0
this : NeZero ↑↑a
⊢ IsPrimitiveRoot r ↑a
state_after: no goals