Theorem: FltRegular.not_exists_Int_solution (FltRegular/CaseII/Statement.lean)

State before:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ : K
hζ : IsPrimitiveRoot ζ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
haveI : Fact (PNat.Prime ⟨p, hpri.out.pos⟩) := hpri
State after:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ : K
hζ : IsPrimitiveRoot ζ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this : Fact (PNat.Prime ⟨p, ⋯⟩)
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ : K
hζ : IsPrimitiveRoot ζ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this : Fact (PNat.Prime ⟨p, ⋯⟩)
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
haveI := CyclotomicField.isCyclotomicExtension ⟨p, hpri.out.pos⟩ ℚ
State after:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ : K
hζ : IsPrimitiveRoot ζ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ : K
hζ : IsPrimitiveRoot ζ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
obtain ⟨ζ, hζ⟩ := IsCyclotomicExtension.exists_prim_root
  ℚ (B := (CyclotomicField ⟨p, hpri.out.pos⟩ ℚ)) (Set.mem_singleton (⟨p, hpri.out.pos⟩ : ℕ+))
State after:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
have hodd' : (⟨p, hpri.out.pos⟩ : ℕ+) ≠ (2 : ℕ+) := by
  rwa [← PNat.coe_injective.ne_iff]
State after:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
have := fun n ↦ zeta_sub_one_dvd_Int_iff (K := CyclotomicField ⟨p, hpri.out.pos⟩ ℚ) hζ (n := n)
State after:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑↑⟨p, ⋯⟩ ∣ n
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑↑⟨p, ⋯⟩ ∣ n
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
simp only [PNat.mk_coe] at this
State after:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
⊢ ¬∃ x y z, ¬↑p ∣ y ∧ ↑p ∣ z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
simp_rw [← this]
State after:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
⊢ ¬∃ x y z, ¬↑hζ.unit' - 1 ∣ ↑y ∧ ↑hζ.unit' - 1 ∣ ↑z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p

State before:
case intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
⊢ ¬∃ x y z, ¬↑hζ.unit' - 1 ∣ ↑y ∧ ↑hζ.unit' - 1 ∣ ↑z ∧ z ≠ 0 ∧ x ^ p + y ^ p = z ^ p
Tactic:
rintro ⟨x, y, z, hy, hz, hz', e⟩
State after:
case intro.intro.intro.intro.intro.intro.intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ False

State before:
case intro.intro.intro.intro.intro.intro.intro
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ False
Tactic:
refine not_exists_solution' (K := CyclotomicField ⟨p, hpri.out.pos⟩ ℚ) hodd' ?_
  hζ ⟨x, y, z, hy, hz, ?_, ?_⟩
State after:
case intro.intro.intro.intro.intro.intro.intro.refine_1
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ (↑⟨p, ⋯⟩).Coprime (Fintype.card (ClassGroup (𝓞 (CyclotomicField ⟨p, ⋯⟩ ℚ))))

case intro.intro.intro.intro.intro.intro.intro.refine_2
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑z ≠ 0

case intro.intro.intro.intro.intro.intro.intro.refine_3
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑x ^ ↑⟨p, ⋯⟩ + ↑y ^ ↑⟨p, ⋯⟩ = ↑z ^ ↑⟨p, ⋯⟩

State before:
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝ : Fact (PNat.Prime ⟨p, ⋯⟩)
this : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
⊢ ⟨p, ⋯⟩ ≠ 2
Tactic:
rwa [← PNat.coe_injective.ne_iff]
State after:
no goals

State before:
case intro.intro.intro.intro.intro.intro.intro.refine_1
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ (↑⟨p, ⋯⟩).Coprime (Fintype.card (ClassGroup (𝓞 (CyclotomicField ⟨p, ⋯⟩ ℚ))))
Tactic:
convert hreg
State after:
no goals

State before:
case intro.intro.intro.intro.intro.intro.intro.refine_2
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑z ≠ 0
Tactic:
rwa [ne_eq, Int.cast_eq_zero]
State after:
no goals

State before:
case intro.intro.intro.intro.intro.intro.intro.refine_3
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑x ^ ↑⟨p, ⋯⟩ + ↑y ^ ↑⟨p, ⋯⟩ = ↑z ^ ↑⟨p, ⋯⟩
Tactic:
dsimp
State after:
case intro.intro.intro.intro.intro.intro.intro.refine_3
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑x ^ p + ↑y ^ p = ↑z ^ p

State before:
case intro.intro.intro.intro.intro.intro.intro.refine_3
K : Type u_1
p✝ : ℕ+
hpri✝ : Fact p✝.Prime
inst✝³ : Field K
inst✝² : NumberField K
inst✝¹ : IsCyclotomicExtension {p✝} ℚ K
hp : p✝ ≠ 2
inst✝ : Fintype (ClassGroup (𝓞 K))
hreg✝ : (↑p✝).Coprime (Fintype.card (ClassGroup (𝓞 K)))
ζ✝ : K
hζ✝ : IsPrimitiveRoot ζ✝ ↑p✝
p : ℕ
hpri : Fact p.Prime
hreg : IsRegularPrime p
hodd : p ≠ 2
this✝¹ : Fact (PNat.Prime ⟨p, ⋯⟩)
this✝ : IsCyclotomicExtension {⟨p, ⋯⟩} ℚ (CyclotomicField ⟨p, ⋯⟩ ℚ)
ζ : CyclotomicField ⟨p, ⋯⟩ ℚ
hζ : IsPrimitiveRoot ζ ↑⟨p, ⋯⟩
hodd' : ⟨p, ⋯⟩ ≠ 2
this : ∀ (n : ℤ), ↑hζ.unit' - 1 ∣ ↑n ↔ ↑p ∣ n
x y z : ℤ
hy : ¬↑hζ.unit' - 1 ∣ ↑y
hz : ↑hζ.unit' - 1 ∣ ↑z
hz' : z ≠ 0
e : x ^ p + y ^ p = z ^ p
⊢ ↑x ^ p + ↑y ^ p = ↑z ^ p
Tactic:
simp_rw [← Int.cast_pow, ← Int.cast_add, e]
State after:
no goals