internlm/Lean-Github huggingface dataset:
Theorem: exists_solution'_aux
Proof 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Tactic:
obtain ⟨a, b, e⟩ : IsCoprime ↑p x := isCoprime_of_not_zeta_sub_one_dvd hζ hx
Proof state after:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Tactic:
have : (p : 𝓞 K) ∣ b * x - 1 := by use -a ; rw [← e]; ring
Proof state after:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this : ↑↑p ∣ b * x - 1
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this : ↑↑p ∣ b * x - 1
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Tactic:
have := (this.trans (sub_one_dvd_pow_sub_one _ p)).trans (dvd_mul_left _ ↑(ε₁ / ε₂))
Proof state after:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
⊢ ∃ a, ↑↑p ∣ ↑(ε₁ / ε₂) - a ^ ↑p
Tactic:
use - y * b
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Tactic:
replace h := (h.trans (dvd_mul_right _ (b ^ (p : ℕ)))).trans (dvd_mul_left _ ↑(ε₂⁻¹))
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑ε₂⁻¹ * ((↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p) * b ^ ↑p)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑ε₂⁻¹ * ((↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p) * b ^ ↑p)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Tactic:
rw [add_mul, mul_assoc, mul_assoc, ← mul_pow, ← mul_pow, mul_add] at h
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑ε₂⁻¹ * (↑ε₁ * (x * b) ^ ↑p) + ↑ε₂⁻¹ * (↑ε₂ * (y * b) ^ ↑p)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑ε₂⁻¹ * (↑ε₁ * (x * b) ^ ↑p) + ↑ε₂⁻¹ * (↑ε₂ * (y * b) ^ ↑p)
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Tactic:
simp_rw [← mul_assoc, ← Units.val_mul] at h
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₂⁻¹ * ε₁) * (x * b) ^ ↑p + ↑(ε₂⁻¹ * ε₂) * (y * b) ^ ↑p
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₂⁻¹ * ε₁) * (x * b) ^ ↑p + ↑(ε₂⁻¹ * ε₂) * (y * b) ^ ↑p
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Tactic:
rw [← mul_comm ε₁, ← div_eq_mul_inv, inv_mul_self, Units.val_one, one_mul] at h
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p
⊢ ↑↑p ∣ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p
Tactic:
convert dvd_sub h this using 1
Proof state after:
case h.e'_4
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p
⊢ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p = ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p - ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
Theorem: exists_solution'_aux
Proof state before:
case h.e'_4
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
this✝¹ : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
this✝ : ↑↑p ∣ b * x - 1
this : ↑↑p ∣ ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
h : ↑↑p ∣ ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p
⊢ ↑(ε₁ / ε₂) - (-y * b) ^ ↑p = ↑(ε₁ / ε₂) * (x * b) ^ ↑p + (y * b) ^ ↑p - ↑(ε₁ / ε₂) * ((b * x) ^ ↑p - 1)
Tactic:
rw [neg_mul, (Nat.Prime.odd_of_ne_two hpri.out (PNat.coe_injective.ne hp)).neg_pow,
  sub_neg_eq_add, mul_sub, mul_one, mul_comm x b, add_sub_sub_cancel, add_comm]
Proof state after:
no goals
Theorem: exists_solution'_aux
Proof 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ ↑↑p ∣ b * x - 1
Tactic:
use -a
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ b * x - 1 = ↑↑p * -a
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ b * x - 1 = ↑↑p * -a
Tactic:
rw [← e]
Proof state after:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ b * x - (a * ↑↑p + b * x) = ↑↑p * -a
Theorem: exists_solution'_aux
Proof state before:
case h
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e✝ : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
ε₁ ε₂ : (𝓞 K)ˣ
hx : ¬π ∣ x
h : ↑↑p ∣ ↑ε₁ * x ^ ↑p + ↑ε₂ * y ^ ↑p
this : Fact (↑p).Prime := hpri
a b : 𝓞 K
e : a * ↑↑p + b * x = 1
⊢ b * x - (a * ↑↑p + b * x) = ↑↑p * -a
Tactic:
ring
Proof state after:
no goals
Theorem: exists_solution'
Proof 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
⊢ ∃ x' y' z' ε₃, ¬π ∣ y' ∧ ¬π ∣ z' ∧ x' ^ ↑p + y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
Tactic:
obtain ⟨x', y', z', ε₁, ε₂, ε₃, hx', hy', hz', e'⟩ := exists_solution hp hreg hζ e hy hz
Proof state after:
case intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
⊢ ∃ x' y' z' ε₃, ¬π ∣ y' ∧ ¬π ∣ z' ∧ x' ^ ↑p + y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
Theorem: exists_solution'
Proof state before:
case intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
⊢ ∃ x' y' z' ε₃, ¬π ∣ y' ∧ ¬π ∣ z' ∧ x' ^ ↑p + y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
Tactic:
obtain ⟨ε', hε'⟩ : ∃ ε', ε₁ / ε₂ = ε' ^ (p : ℕ) := by
  apply eq_pow_prime_of_unit_of_congruent hp hreg
  have : p - 1 ≤ m * p := (Nat.sub_le _ _).trans
    ((le_of_eq (one_mul _).symm).trans (Nat.mul_le_mul_right p (one_le_m hp hζ e hy hz)))
  obtain ⟨u, hu⟩ := (associated_zeta_sub_one_pow_prime hζ).symm
  rw [mul_pow, ← pow_mul, mul_comm (ε₃ : 𝓞 K), mul_assoc, ← Nat.sub_add_cancel this,
    add_comm _ (p - 1 : ℕ), pow_add, mul_assoc] at e'
  apply_fun Ideal.Quotient.mk (Ideal.span <| singleton (p : 𝓞 K)) at e'
  rw [map_mul, (Ideal.Quotient.eq_zero_iff_dvd _ _).mpr
    (associated_zeta_sub_one_pow_prime hζ).symm.dvd, zero_mul, Ideal.Quotient.eq_zero_iff_dvd] at e'
  obtain ⟨a, ha⟩ := exists_solution'_aux hp hζ hx' e'
  obtain ⟨b, hb⟩ := exists_dvd_pow_sub_Int_pow hp a
  have := dvd_add ha hb
  rw [sub_add_sub_cancel, ← Int.cast_pow] at this
  exact ⟨b ^ (p : ℕ), this⟩
Proof state after:
case intro.intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
ε' : (𝓞 K)ˣ
hε' : ε₁ / ε₂ = ε' ^ ↑p
⊢ ∃ x' y' z' ε₃, ¬π ∣ y' ∧ ¬π ∣ z' ∧ x' ^ ↑p + y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
Theorem: exists_solution'
Proof state before:
case intro.intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
ε' : (𝓞 K)ˣ
hε' : ε₁ / ε₂ = ε' ^ ↑p
⊢ ∃ x' y' z' ε₃, ¬π ∣ y' ∧ ¬π ∣ z' ∧ x' ^ ↑p + y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
Tactic:
refine ⟨ε' * x', y', z', ε₃ / ε₂, hy', hz', ?_⟩
Proof state after:
case intro.intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
ε' : (𝓞 K)ˣ
hε' : ε₁ / ε₂ = ε' ^ ↑p
⊢ (↑ε' * x') ^ ↑p + y' ^ ↑p = ↑(ε₃ / ε₂) * (π ^ m * z') ^ ↑p
Theorem: exists_solution'
Proof state before:
case intro.intro.intro.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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
ε' : (𝓞 K)ˣ
hε' : ε₁ / ε₂ = ε' ^ ↑p
⊢ (↑ε' * x') ^ ↑p + y' ^ ↑p = ↑(ε₃ / ε₂) * (π ^ m * z') ^ ↑p
Tactic:
rwa [mul_pow, ← Units.val_pow_eq_pow_val, ← hε', ← mul_right_inj' ε₂.isUnit.ne_zero,
  mul_add, ← mul_assoc, ← Units.val_mul, mul_div_cancel,
  ← mul_assoc, ← Units.val_mul, mul_div_cancel]
Proof state after:
no goals
Theorem: exists_solution'
Proof 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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
⊢ ∃ ε', ε₁ / ε₂ = ε' ^ ↑p
Tactic:
apply eq_pow_prime_of_unit_of_congruent hp hreg
Proof state after:
case hcong
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
x y z : 𝓞 K
ε : (𝓞 K)ˣ
m : ℕ
e : x ^ ↑p + y ^ ↑p = ↑ε * (π ^ (m + 1) * z) ^ ↑p
hy : ¬π ∣ y
hz : ¬π ∣ z
η : { x // x ∈ nthRootsFinset (↑p) (𝓞 K) }
x' y' z' : 𝓞 K
ε₁ ε₂ ε₃ : (𝓞 K)ˣ
hx' : ¬π ∣ x'
hy' : ¬π ∣ y'
hz' : ¬π ∣ z'
e' : ↑ε₁ * x' ^ ↑p + ↑ε₂ * y' ^ ↑p = ↑ε₃ * (π ^ m * z') ^ ↑p
⊢ ∃ n, ↑↑p ∣ ↑(ε₁ / ε₂) - ↑n