internlm/Lean-Github huggingface dataset:
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2
Tactic:
have hpo : Odd (p : ℕ) := hp.odd_of_ne_two (norm_cast_ne_two h)
Proof state after:
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2
Tactic:
haveI : NormedAlgebra ℚ ℂ := normedAlgebraRat
Proof state after:
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2
Tactic:
have :=
  @NumberField.Embeddings.pow_eq_one_of_norm_eq_one K _ _ ℂ _ _ _ (u * (unitGalConj K p u)⁻¹ : K)
    ?_ ?_
Proof state after:
case refine_3
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Tactic:
have H := roots_of_unity_in_cyclo hζ hpo (u * (unitGalConj K p u)⁻¹ : K) this
Proof state after:
case refine_3
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
H :
  ∃ m k,
    (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
      (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ m
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
H :
  ∃ m k,
    (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
      (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ m
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Tactic:
obtain ⟨n, k, hz⟩ := H
Proof state after:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = (hζ.unit' ^ m) ^ 2

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Tactic:
simp_rw [← pow_mul]
Proof state after:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Tactic:
have hk := Nat.even_or_odd k
Proof state after:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Even ↑k ∨ Odd ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Even ↑k ∨ Odd ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Tactic:
cases' hk with hk hk
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Even ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_3.intro.intro.inr
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Odd ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)

case refine_1
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ IsIntegral ℤ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)

case refine_2
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this : NormedAlgebra ℚ ℂ
⊢ ∀ (φ : K →+* ℂ), ‖φ ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹)‖ = 1
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Even ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Tactic:
simp only [hk.neg_one_pow, one_mul] at hz
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ = (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ = (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Tactic:
rw [← map_mul, ← Units.val_mul, ← map_pow, ← Units.val_pow_eq_pow_val] at hz
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : (algebraMap (𝓞 K) K) ↑(u * ((unitGalConj K p) u)⁻¹) = (algebraMap (𝓞 K) K) ↑(hζ.unit' ^ n)
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : (algebraMap (𝓞 K) K) ↑(u * ((unitGalConj K p) u)⁻¹) = (algebraMap (𝓞 K) K) ↑(hζ.unit' ^ n)
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Tactic:
norm_cast at hz
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Tactic:
rw [hz]
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
⊢ ∃ m, hζ.unit' ^ n = hζ.unit' ^ (m * 2)
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
⊢ ∃ m, hζ.unit' ^ n = hζ.unit' ^ (m * 2)
Tactic:
refine' (exists_congr fun a => _).mp (zeta_runity_pow_even hζ hpo n)
Proof state after:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
a : ℕ
⊢ hζ.unit' ^ n = hζ.unit' ^ (2 * a) ↔ hζ.unit' ^ n = hζ.unit' ^ (a * 2)
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inl
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Even ↑k
hz : u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ n
a : ℕ
⊢ hζ.unit' ^ n = hζ.unit' ^ (2 * a) ↔ hζ.unit' ^ n = hζ.unit' ^ (a * 2)
Tactic:
rw [mul_comm]
Proof state after:
no goals
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inr
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Odd ↑k
⊢ ∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
Tactic:
by_contra
Proof state after:
case refine_3.intro.intro.inr
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Odd ↑k
x✝ : ¬∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
⊢ False
Theorem: unit_inv_conj_is_root_of_unity
Proof state before:
case refine_3.intro.intro.inr
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hz :
  (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ =
    (-1) ^ ↑k * (algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
hk : Odd ↑k
x✝ : ¬∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
⊢ False
Tactic:
simp only [hk.neg_one_pow, neg_mul, one_mul] at hz
Proof state after:
case refine_3.intro.intro.inr
p : ℕ+
K : Type u_1
inst✝² : Field K
ζ : K
hζ : IsPrimitiveRoot ζ ↑p
inst✝¹ : NumberField K
inst✝ : IsCyclotomicExtension {p} ℚ K
h : p ≠ 2
hp : (↑p).Prime
u : (𝓞 K)ˣ
hpo : Odd ↑p
this✝ : NormedAlgebra ℚ ℂ
this : ∃ n, ∃ (_ : 0 < n), ((algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹) ^ n = 1
n : ℕ
k : ℕ+
hk : Odd ↑k
x✝ : ¬∃ m, u * ((unitGalConj K p) u)⁻¹ = hζ.unit' ^ (m * 2)
hz : (algebraMap (𝓞 K) K) ↑u * (algebraMap (𝓞 K) K) ↑((unitGalConj K p) u)⁻¹ = -(algebraMap (𝓞 K) K) ↑hζ.unit' ^ n
⊢ False