internlm/Lean-Github huggingface dataset:
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have : ¬ Even (3 : ℤ) := by decide
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this : ¬Even 3
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this : ¬Even 3
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have : ¬Even (u - 3 * v) := by simp [‹¬ Even (3 : ℤ)›, huvodd, parity_simps]
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝¹ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝ : ¬Even 3
this : ¬Even (u - 3 * v)
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝¹ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝ : ¬Even 3
this : ¬Even (u - 3 * v)
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have : ¬Even (u + 3 * v) := by simp [‹¬ Even (3 : ℤ)›, huvodd, parity_simps]
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have notdvd_2_2 : ¬2 ∣ u - 3 * v := by
  rw [← even_iff_two_dvd]
  exact ‹¬Even (u - 3 * v)›
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have not_3_dvd_2 : ¬3 ∣ u - 3 * v := by
  intro hd2
  apply hddd
  rw [hpfactor]
  exact (hd2.mul_left _).mul_right _
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
not_3_dvd_2 : ¬3 ∣ u - 3 * v
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
not_3_dvd_2 : ¬3 ∣ u - 3 * v
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
have notdvd_3_3 : ¬3 ∣ u + 3 * v := by
  intro hd3
  apply hddd
  rw [hpfactor]
  exact hd3.mul_left _
Proof state after:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
not_3_dvd_2 : ¬3 ∣ u - 3 * v
notdvd_3_3 : ¬3 ∣ u + 3 * v
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
not_3_dvd_2 : ¬3 ∣ u - 3 * v
notdvd_3_3 : ¬3 ∣ u + 3 * v
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Tactic:
obtain ⟨s, hs⟩ := hcubeleft
Proof state after:
case intro.intro.intro.intro.intro.intro.intro.intro
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
notdvd_2_2 : ¬2 ∣ u - 3 * v
hddd : ¬3 ∣ p
not_3_dvd_2 : ¬3 ∣ u - 3 * v
notdvd_3_3 : ¬3 ∣ u + 3 * v
s : ℤ
hs : 2 * p = s ^ 3
⊢ ∃ a' b' c', a' ≠ 0 ∧ b' ≠ 0 ∧ c' ≠ 0 ∧ (a' ^ 3 * b' ^ 3 * c' ^ 3).natAbs ≤ (2 * p).natAbs ∧ a' ^ 3 + b' ^ 3 = c' ^ 3
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
⊢ ∃ r, 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
Tactic:
rcases hcube with (hcube | hcube | hcube) <;> [(use a); (use b); (use c)]
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case inl
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3
⊢ ∃ r, 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
Tactic:
use a
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case inr.inl
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3
⊢ ∃ r, 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
Tactic:
use b
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case inr.inr
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
⊢ ∃ r, 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
Tactic:
use c
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
⊢ Odd 3
Tactic:
decide
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
⊢ u ≠ 0
Tactic:
rintro rfl
Proof state after:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
v : ℤ
hpfactor : p = 0 * (0 - 3 * v) * (0 + 3 * v)
hq : q = 3 * v * (0 - v) * (0 + v)
huvcoprime : IsCoprime 0 v
huvodd : Even 0 ↔ ¬Even v
⊢ False
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
v : ℤ
hpfactor : p = 0 * (0 - 3 * v) * (0 + 3 * v)
hq : q = 3 * v * (0 - v) * (0 + v)
huvcoprime : IsCoprime 0 v
huvodd : Even 0 ↔ ¬Even v
⊢ False
Tactic:
rw [MulZeroClass.zero_mul, MulZeroClass.zero_mul] at hpfactor
Proof state after:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
v : ℤ
hpfactor : p = 0
hq : q = 3 * v * (0 - v) * (0 + v)
huvcoprime : IsCoprime 0 v
huvodd : Even 0 ↔ ¬Even v
⊢ False
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
v : ℤ
hpfactor : p = 0
hq : q = 3 * v * (0 - v) * (0 + v)
huvcoprime : IsCoprime 0 v
huvodd : Even 0 ↔ ¬Even v
⊢ False
Tactic:
contradiction
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
⊢ 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
Tactic:
rw [hpfactor]
Proof state after:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
⊢ 2 * (u * (u - 3 * v) * (u + 3 * v)) = 2 * u * (u - 3 * v) * (u + 3 * v)
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
⊢ 2 * (u * (u - 3 * v) * (u + 3 * v)) = 2 * u * (u - 3 * v) * (u + 3 * v)
Tactic:
ring
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
⊢ ¬Even 3
Tactic:
decide
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this : ¬Even 3
⊢ ¬Even (u - 3 * v)
Tactic:
simp [‹¬ Even (3 : ℤ)›, huvodd, parity_simps]
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝¹ : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝ : ¬Even 3
this : ¬Even (u - 3 * v)
⊢ ¬Even (u + 3 * v)
Tactic:
simp [‹¬ Even (3 : ℤ)›, huvodd, parity_simps]
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
⊢ ¬2 ∣ u - 3 * v
Tactic:
rw [← even_iff_two_dvd]
Proof state after:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
⊢ ¬Even (u - 3 * v)
Theorem: descent_gcd1
Proof state before:
a b c p q : ℤ
hp : p ≠ 0
hcoprime : IsCoprime p q
hodd : Even p ↔ ¬Even q
hcube : 2 * p * (p ^ 2 + 3 * q ^ 2) = a ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = b ^ 3 ∨ 2 * p * (p ^ 2 + 3 * q ^ 2) = c ^ 3
hgcd : IsCoprime (2 * p) (p ^ 2 + 3 * q ^ 2)
r : ℤ
hr : 2 * p * (p ^ 2 + 3 * q ^ 2) = r ^ 3
this✝² : Odd 3
hcubeleft : ∃ d, 2 * p = d ^ 3
hcuberight : ∃ e, p ^ 2 + 3 * q ^ 2 = e ^ 3
u v : ℤ
hpfactor : p = u * (u - 3 * v) * (u + 3 * v)
hq : q = 3 * v * (u - v) * (u + v)
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
u_ne_zero : u ≠ 0
haaa : 2 * p = 2 * u * (u - 3 * v) * (u + 3 * v)
this✝¹ : ¬Even 3
this✝ : ¬Even (u - 3 * v)
this : ¬Even (u + 3 * v)
⊢ ¬Even (u - 3 * v)
Tactic:
exact ‹¬Even (u - 3 * v)›
Proof state after:
no goals