-- Mathlib/NumberTheory/NumberField/Embeddings.lean
theorem nrRealPlaces_eq_zero_of_two_lt (hk : 2 < k) (hζ : IsPrimitiveRoot ζ k) :
    NumberField.InfinitePlace.nrRealPlaces K = 0

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
him : |(f ζ).re| = ‖f ζ‖
⊢ (f ζ).re = 1 ∨ (f ζ).re = -1

Tactic:
have := Complex.norm_eq_one_of_pow_eq_one hζ'.pow_eq_one (by omega)

Result:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
him : |(f ζ).re| = ‖f ζ‖
this : ‖f ζ‖ = 1
⊢ (f ζ).re = 1 ∨ (f ζ).re = -1

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
him : (f ζ).im = 0
hone : (f ζ).re = 1
⊢ 1 < k

Tactic:
omega

Result:
no goals

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
him : (f ζ).im = 0
hre : (f ζ).re = 1 ∨ (f ζ).re = -1
⊢ False

Tactic:
cases hre with
| inl hone =>
  exact hζ'.ne_one (by omega) <| Complex.ext (by simp [hone]) (by simp [him])
| inr hnegone =>
  replace hζ' := hζ'.eq_orderOf
  simp only [show f ζ = -1 from Complex.ext (by simp [hnegone]) (by simp [him]),
    orderOf_neg_one, ringChar.eq_zero, OfNat.zero_ne_ofNat, ↓reduceIte] at hζ'
  omega

Result:
no goals

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
⊢ NumberField.InfinitePlace.nrRealPlaces K = 0

Tactic:
refine (@Fintype.card_eq_zero_iff _ (_)).2 ⟨fun ⟨w, hwreal⟩ ↦ ?_⟩

Result:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : w.IsReal
⊢ False

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
⊢ False

Tactic:
let f := w.embedding

Result:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
⊢ False

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
⊢ (f ζ).im = 0

Tactic:
rw [← Complex.conj_eq_iff_im, ← NumberField.ComplexEmbedding.conjugate_coe_eq]

Result:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
⊢ (NumberField.ComplexEmbedding.conjugate f) ζ = f ζ

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : w.IsReal
⊢ False

Tactic:
rw [NumberField.InfinitePlace.isReal_iff] at hwreal

Result:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
⊢ False

Proof state:
K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
ζ : K
k : ℕ
hk : 2 < k
hζ : IsPrimitiveRoot ζ k
x✝ : { w // w.IsReal }
w : NumberField.InfinitePlace K
hwreal : NumberField.ComplexEmbedding.IsReal w.embedding
f : K →+* ℂ := w.embedding
hζ' : IsPrimitiveRoot (f ζ) k
him : (f ζ).im = 0
hone : (f ζ).re = 1
⊢ (f ζ).im = Complex.im 1

Tactic:
simp [him]

Result:
no goals