internlm/Lean-Github huggingface dataset:
Theorem: descent_gcd1
Proof state before:
case hb
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
⊢ u - 3 * v ≠ 0
Tactic:
rw [sub_ne_zero]
Proof state after:
case hb
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
⊢ u ≠ 3 * v
Theorem: descent_gcd1
Proof state before:
case hb
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
⊢ u ≠ 3 * v
Tactic:
rintro rfl
Proof state after:
case hb
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
v : ℤ
this✝¹ : ¬Even 3
hddd : ¬3 ∣ p
s : ℤ
hs : 2 * p = s ^ 3
hpfactor : p = 3 * v * (3 * v - 3 * v) * (3 * v + 3 * v)
hq : q = 3 * v * (3 * v - v) * (3 * v + v)
huvcoprime : IsCoprime (3 * v) v
huvodd : Even (3 * v) ↔ ¬Even v
u_ne_zero : 3 * v ≠ 0
haaa : 2 * p = 2 * (3 * v) * (3 * v - 3 * v) * (3 * v + 3 * v)
this✝ : ¬Even (3 * v - 3 * v)
this : ¬Even (3 * v + 3 * v)
notdvd_2_2 : ¬2 ∣ 3 * v - 3 * v
not_3_dvd_2 : ¬3 ∣ 3 * v - 3 * v
notdvd_3_3 : ¬3 ∣ 3 * v + 3 * v
⊢ False
Theorem: descent_gcd1
Proof state before:
case hb
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
v : ℤ
this✝¹ : ¬Even 3
hddd : ¬3 ∣ p
s : ℤ
hs : 2 * p = s ^ 3
hpfactor : p = 3 * v * (3 * v - 3 * v) * (3 * v + 3 * v)
hq : q = 3 * v * (3 * v - v) * (3 * v + v)
huvcoprime : IsCoprime (3 * v) v
huvodd : Even (3 * v) ↔ ¬Even v
u_ne_zero : 3 * v ≠ 0
haaa : 2 * p = 2 * (3 * v) * (3 * v - 3 * v) * (3 * v + 3 * v)
this✝ : ¬Even (3 * v - 3 * v)
this : ¬Even (3 * v + 3 * v)
notdvd_2_2 : ¬2 ∣ 3 * v - 3 * v
not_3_dvd_2 : ¬3 ∣ 3 * v - 3 * v
notdvd_3_3 : ¬3 ∣ 3 * v + 3 * v
⊢ False
Tactic:
simp only [‹¬ Even (3 : ℤ)›, false_or_iff, iff_not_self, parity_simps] at huvodd
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case hc
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
⊢ u + 3 * v ≠ 0
Tactic:
intro H
Proof state after:
case hc
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
H : u + 3 * v = 0
⊢ False
Theorem: descent_gcd1
Proof state before:
case hc
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
H : u + 3 * v = 0
⊢ False
Tactic:
rw [add_eq_zero_iff_eq_neg] at H
Proof state after:
case hc
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
H : u = -(3 * v)
⊢ False
Theorem: descent_gcd1
Proof state before:
case hc
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
H : u = -(3 * v)
⊢ False
Tactic:
simp [‹¬ Even (3 : ℤ)›, H, parity_simps] at huvodd
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case hcoprimeab
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
⊢ IsCoprime (2 * u) (u - 3 * v)
Tactic:
apply Int.gcd1_coprime12 u v <;> assumption
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case hcoprimeac
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
⊢ IsCoprime (2 * u) (u + 3 * v)
Tactic:
apply Int.gcd1_coprime13 u v <;> assumption
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case hcoprimebc
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
⊢ IsCoprime (u - 3 * v) (u + 3 * v)
Tactic:
apply Int.gcd1_coprime23 u v <;> assumption
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case hs
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
⊢ 2 * u * (u - 3 * v) * (u + 3 * v) = s ^ 3
Tactic:
rw [← haaa]
Proof state after:
case hs
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
⊢ 2 * p = s ^ 3
Theorem: descent_gcd1
Proof state before:
case hs
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
⊢ 2 * p = s ^ 3
Tactic:
exact hs
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
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
C A B : ℤ
HCpos : C ≠ 0
HApos : A ≠ 0
HBpos : B ≠ 0
HC : 2 * u = C ^ 3
HA : u - 3 * v = A ^ 3
HB : u + 3 * v = B ^ 3
⊢ (A ^ 3 * B ^ 3 * C ^ 3).natAbs ≤ (2 * p).natAbs
Tactic:
rw [mul_comm, ← mul_assoc (C ^ 3), ← HA, ← HB, ← HC, ← haaa]
Proof state after:
no goals
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
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
C A B : ℤ
HCpos : C ≠ 0
HApos : A ≠ 0
HBpos : B ≠ 0
HC : 2 * u = C ^ 3
HA : u - 3 * v = A ^ 3
HB : u + 3 * v = B ^ 3
⊢ A ^ 3 + B ^ 3 = C ^ 3
Tactic:
rw [← HA, ← HB, ← HC]
Proof state after:
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
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
C A B : ℤ
HCpos : C ≠ 0
HApos : A ≠ 0
HBpos : B ≠ 0
HC : 2 * u = C ^ 3
HA : u - 3 * v = A ^ 3
HB : u + 3 * v = B ^ 3
⊢ u - 3 * v + (u + 3 * v) = 2 * u
Theorem: descent_gcd1
Proof state before:
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
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
C A B : ℤ
HCpos : C ≠ 0
HApos : A ≠ 0
HBpos : B ≠ 0
HC : 2 * u = C ^ 3
HA : u - 3 * v = A ^ 3
HB : u + 3 * v = B ^ 3
⊢ u - 3 * v + (u + 3 * v) = 2 * u
Tactic:
ring
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
⊢ IsCoprime (2 * v) (u + v) ∧ IsCoprime (2 * v) (u - v) ∧ IsCoprime (u - v) (u + v)
Tactic:
have haddodd : ¬Even (u + v) := by simp [huvodd, parity_simps]
Proof state after:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
⊢ IsCoprime (2 * v) (u + v) ∧ IsCoprime (2 * v) (u - v) ∧ IsCoprime (u - v) (u + v)
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
⊢ IsCoprime (2 * v) (u + v) ∧ IsCoprime (2 * v) (u - v) ∧ IsCoprime (u - v) (u + v)
Tactic:
have hsubodd : ¬Even (u - v) := by simp [huvodd, parity_simps]
Proof state after:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ IsCoprime (2 * v) (u + v) ∧ IsCoprime (2 * v) (u - v) ∧ IsCoprime (u - v) (u + v)
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
haddcoprime : IsCoprime (u + v) (2 * v)
hsubcoprime : IsCoprime (u - v) (2 * v)
haddsubcoprime : IsCoprime (u + v) (u - v)
⊢ IsCoprime (2 * v) (u + v) ∧ IsCoprime (2 * v) (u - v) ∧ IsCoprime (u - v) (u + v)
Tactic:
exact ⟨haddcoprime.symm, hsubcoprime.symm, haddsubcoprime.symm⟩
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
⊢ ¬Even (u + v)
Tactic:
simp [huvodd, parity_simps]
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
⊢ ¬Even (u - v)
Tactic:
simp [huvodd, parity_simps]
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ IsCoprime (u + v) (2 * v)
Tactic:
apply isCoprime_of_prime_dvd
Proof state after:
case nonzero
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ ¬(u + v = 0 ∧ 2 * v = 0)

case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ ∀ (z : ℤ), Prime z → z ∣ u + v → ¬z ∣ 2 * v
Theorem: gcd3_coprime
Proof state before:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ ∀ (z : ℤ), Prime z → z ∣ u + v → ¬z ∣ 2 * v
Tactic:
intro k hkprime hkdvdleft hkdvdright
Proof state after:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ False
Theorem: gcd3_coprime
Proof state before:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ False
Tactic:
apply hkprime.not_unit
Proof state after:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ IsUnit k
Theorem: gcd3_coprime
Proof state before:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ IsUnit k
Tactic:
have hkdvdright' : k ∣ v := by
  rw [even_iff_two_dvd] at haddodd
  exact Int.dvd_mul_cancel_prime' haddodd hkdvdleft Int.prime_two hkdvdright
Proof state after:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
hkdvdright' : k ∣ v
⊢ IsUnit k
Theorem: gcd3_coprime
Proof state before:
case H
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
hkdvdright' : k ∣ v
⊢ IsUnit k
Tactic:
apply huvcoprime.isUnit_of_dvd' _ hkdvdright'
Proof state after:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
hkdvdright' : k ∣ v
⊢ k ∣ u
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
hkdvdright' : k ∣ v
⊢ k ∣ u
Tactic:
simpa using dvd_sub hkdvdleft hkdvdright'
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
case nonzero
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
⊢ ¬(u + v = 0 ∧ 2 * v = 0)
Tactic:
rintro ⟨h1, -⟩
Proof state after:
case nonzero.intro
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
h1 : u + v = 0
⊢ False
Theorem: gcd3_coprime
Proof state before:
case nonzero.intro
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
h1 : u + v = 0
⊢ False
Tactic:
rw [h1] at haddodd
Proof state after:
case nonzero.intro
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even 0
hsubodd : ¬Even (u - v)
h1 : u + v = 0
⊢ False
Theorem: gcd3_coprime
Proof state before:
case nonzero.intro
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even 0
hsubodd : ¬Even (u - v)
h1 : u + v = 0
⊢ False
Tactic:
norm_num at haddodd
Proof state after:
no goals
Theorem: gcd3_coprime
Proof state before:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬Even (u + v)
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ k ∣ v
Tactic:
rw [even_iff_two_dvd] at haddodd
Proof state after:
u v : ℤ
huvcoprime : IsCoprime u v
huvodd : Even u ↔ ¬Even v
haddodd : ¬2 ∣ u + v
hsubodd : ¬Even (u - v)
k : ℤ
hkprime : Prime k
hkdvdleft : k ∣ u + v
hkdvdright : k ∣ 2 * v
⊢ k ∣ v