Theorem: IsPrimitiveRoot.norm_of_cyclotomic_irreducible
File: Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean

tactic: split_ifs with hn
state_before: p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
⊢ (Algebra.norm K) ζ = if n = 2 then -1 else 1
state_after: case pos
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : n = 2
⊢ (Algebra.norm K) ζ = -1

case neg
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : ¬n = 2
⊢ (Algebra.norm K) ζ = 1

tactic: subst hn
state_before: case pos
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : n = 2
⊢ (Algebra.norm K) ζ = -1
state_after: case pos
p : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : CommRing L
ζ : L
inst✝⁴ : Field K
inst✝³ : Algebra K L
inst✝² : IsDomain L
inst✝¹ : IsCyclotomicExtension {2} A B
hζ : IsPrimitiveRoot ζ ↑2
inst✝ : IsCyclotomicExtension {2} K L
hirr : Irreducible (cyclotomic (↑2) K)
⊢ (Algebra.norm K) ζ = -1

tactic: convert norm_eq_neg_one_pow (K := K) hζ
state_before: case pos
p : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : CommRing L
ζ : L
inst✝⁴ : Field K
inst✝³ : Algebra K L
inst✝² : IsDomain L
inst✝¹ : IsCyclotomicExtension {2} A B
hζ : IsPrimitiveRoot ζ ↑2
inst✝ : IsCyclotomicExtension {2} K L
hirr : Irreducible (cyclotomic (↑2) K)
⊢ (Algebra.norm K) ζ = -1
state_after: case h.e'_3
p : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : CommRing L
ζ : L
inst✝⁴ : Field K
inst✝³ : Algebra K L
inst✝² : IsDomain L
inst✝¹ : IsCyclotomicExtension {2} A B
hζ : IsPrimitiveRoot ζ ↑2
inst✝ : IsCyclotomicExtension {2} K L
hirr : Irreducible (cyclotomic (↑2) K)
⊢ -1 = (-1) ^ FiniteDimensional.finrank K L

tactic: erw [IsCyclotomicExtension.finrank _ hirr, totient_two, pow_one]
state_before: case h.e'_3
p : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : CommRing L
ζ : L
inst✝⁴ : Field K
inst✝³ : Algebra K L
inst✝² : IsDomain L
inst✝¹ : IsCyclotomicExtension {2} A B
hζ : IsPrimitiveRoot ζ ↑2
inst✝ : IsCyclotomicExtension {2} K L
hirr : Irreducible (cyclotomic (↑2) K)
⊢ -1 = (-1) ^ FiniteDimensional.finrank K L
state_after: no goals

tactic: exact hζ.norm_eq_one hn hirr
state_before: case neg
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : ¬n = 2
⊢ (Algebra.norm K) ζ = 1
state_after: no goals