Theorem: autEquivRootsOfUnity_smul
File: Mathlib/FieldTheory/KummerExtension.lean

tactic: have ⟨ζ, hζ'⟩ := hζ
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
σ : L ≃ₐ[K] L
⊢ (autEquivRootsOfUnity hζ hn H L) σ • α = σ α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
σ : L ≃ₐ[K] L
ζ : K
hζ' : ζ ∈ primitiveRoots n K
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α

tactic: rw [mem_primitiveRoots hn] at hζ'
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
σ : L ≃ₐ[K] L
ζ : K
hζ' : ζ ∈ primitiveRoots n K
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α

tactic: rw [← mem_nthRoots hn, (hζ'.map_of_injective (algebraMap K L).injective).nthRoots_eq
  (rootOfSplitsXPowSubC_pow hn a L)] at hα
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
σ : L ≃ₐ[K] L
ζ : K
hα : α ∈ Multiset.map (fun x => (algebraMap K L) ζ ^ x * rootOfSplitsXPowSubC hn a L) (Multiset.range n)
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α

tactic: simp only [Finset.range_val, Multiset.mem_map, Multiset.mem_range] at hα
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
σ : L ≃ₐ[K] L
ζ : K
hα : α ∈ Multiset.map (fun x => (algebraMap K L) ζ ^ x * rootOfSplitsXPowSubC hn a L) (Multiset.range n)
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
hα : ∃ a_1 < n, (algebraMap K L) ζ ^ a_1 * rootOfSplitsXPowSubC hn a L = α
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α

tactic: obtain ⟨i, _, rfl⟩ := hα
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
hα : ∃ a_1 < n, (algebraMap K L) ζ ^ a_1 * rootOfSplitsXPowSubC hn a L = α
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • α = σ α
state_after: case intro.intro
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
i : ℕ
left✝ : i < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • ((algebraMap K L) ζ ^ i * rootOfSplitsXPowSubC hn a L) =
    σ ((algebraMap K L) ζ ^ i * rootOfSplitsXPowSubC hn a L)

tactic: simp only [map_mul, ← map_pow, ← Algebra.smul_def, map_smul,
  autEquivRootsOfUnity_apply_rootOfSplit hζ hn H L]
state_before: case intro.intro
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
i : ℕ
left✝ : i < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • ((algebraMap K L) ζ ^ i * rootOfSplitsXPowSubC hn a L) =
    σ ((algebraMap K L) ζ ^ i * rootOfSplitsXPowSubC hn a L)
state_after: case intro.intro
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
i : ℕ
left✝ : i < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • ζ ^ i • rootOfSplitsXPowSubC hn a L =
    ζ ^ i • (autEquivRootsOfUnity hζ hn H L) σ • rootOfSplitsXPowSubC hn a L

tactic: exact smul_comm _ _ _
state_before: case intro.intro
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
σ : L ≃ₐ[K] L
ζ : K
hζ'✝ : ζ ∈ primitiveRoots n K
hζ' : IsPrimitiveRoot ζ n
i : ℕ
left✝ : i < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) σ • ζ ^ i • rootOfSplitsXPowSubC hn a L =
    ζ ^ i • (autEquivRootsOfUnity hζ hn H L) σ • rootOfSplitsXPowSubC hn a L
state_after: no goals