R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hn : Even n
hy : Odd y
⊢ multiplicity 2 (x ^ n - y ^ n) + 1 = multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑n
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hn : Even n
⊢ multiplicity 2 (x ^ n - y ^ n) + 1 = multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑n
have hy : Odd y := by
  rw [← even_iff_two_dvd, ← Int.odd_iff_not_even] at hx
  replace hxy := (@even_neg _ _ (x - y)).mpr (even_iff_two_dvd.mpr hxy)
  convert Even.add_odd hxy hx
  abel
case intro
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hd : n = d + d
⊢ multiplicity 2 (x ^ n - y ^ n) + 1 = multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑n
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hn : Even n
hy : Odd y
⊢ multiplicity 2 (x ^ n - y ^ n) + 1 = multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑n
cases' hn with d hd
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ multiplicity 2 (x ^ (d + d) - y ^ (d + d)) + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑(d + d)
case intro
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hd : n = d + d
⊢ multiplicity 2 (x ^ n - y ^ n) + 1 = multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑n
subst hd
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ multiplicity 2 ((x ^ 2) ^ d - (y ^ 2) ^ d) + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑(2 * d)
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ multiplicity 2 (x ^ (d + d) - y ^ (d + d)) + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑(d + d)
simp only [← two_mul, pow_mul]
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑d + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + (multiplicity 2 ↑2 + multiplicity 2 ↑d)

R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬2 ∣ x ^ 2
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 ((x ^ 2) ^ d - (y ^ 2) ^ d) + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑(2 * d)
rw [Int.two_pow_sub_pow' d hxy4 _, sq_sub_sq, ← Int.ofNat_mul_out, multiplicity.mul Int.prime_two,
  multiplicity.mul Int.prime_two]
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 ↑2 = 1

R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬2 ∣ x ^ 2
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑d + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + (multiplicity 2 ↑2 + multiplicity 2 ↑d)

R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬2 ∣ x ^ 2
suffices multiplicity (2 : ℤ) ↑(2 : ℕ) = 1 by rw [this, add_comm (1 : PartENat), ← add_assoc]
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : Odd x
hn : Even n
⊢ Odd y
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hn : Even n
⊢ Odd y
rw [← even_iff_two_dvd, ← Int.odd_iff_not_even] at hx
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hx : Odd x
hn : Even n
hxy : Even (-(x - y))
⊢ Odd y
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hxy : 2 ∣ x - y
hx : Odd x
hn : Even n
⊢ Odd y
replace hxy := (@even_neg _ _ (x - y)).mpr (even_iff_two_dvd.mpr hxy)
case h.e'_3
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hx : Odd x
hn : Even n
hxy : Even (-(x - y))
⊢ y = -(x - y) + x
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hx : Odd x
hn : Even n
hxy : Even (-(x - y))
⊢ Odd y
convert Even.add_odd hxy hx
no goals
case h.e'_3
R : Type ?u.865616
n✝ : ℕ
x y : ℤ
n : ℕ
hx : Odd x
hn : Even n
hxy : Even (-(x - y))
⊢ y = -(x - y) + x
abel
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ (1 - 1) % 4 = 0

R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ Odd x
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ 4 ∣ x ^ 2 - y ^ 2
rw [Int.dvd_iff_emod_eq_zero, Int.sub_emod, Int.sq_mod_four_eq_one_of_odd _,
  Int.sq_mod_four_eq_one_of_odd hy]
no goals
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ (1 - 1) % 4 = 0
norm_num
no goals
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
⊢ Odd x
simp only [Int.odd_iff_not_even, even_iff_two_dvd, hx, not_false_iff]
no goals
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
this : multiplicity 2 ↑2 = 1
⊢ multiplicity 2 (x + y) + multiplicity 2 (x - y) + multiplicity 2 ↑d + 1 =
    multiplicity 2 (x + y) + multiplicity 2 (x - y) + (multiplicity 2 ↑2 + multiplicity 2 ↑d)
rw [this, add_comm (1 : PartENat), ← add_assoc]
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 2 = 1
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 ↑2 = 1
norm_cast
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬IsUnit 2

R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ 2 ≠ 0
case intro
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ multiplicity 2 2 = 1
rw [multiplicity.multiplicity_self _ _]
case hp
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Prime 2
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬IsUnit 2
apply Prime.not_unit
no goals
case hp
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Prime 2
simp only [← Nat.prime_iff, Nat.prime_two]
no goals
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ 2 ≠ 0
exact two_ne_zero
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Odd (x ^ 2)
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ ¬2 ∣ x ^ 2
rw [← even_iff_two_dvd, ← Int.odd_iff_not_even]
case hm
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Odd x
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Odd (x ^ 2)
apply Odd.pow
no goals
case hm
R : Type ?u.865616
n : ℕ
x y : ℤ
hxy : 2 ∣ x - y
hx : ¬2 ∣ x
hy : Odd y
d : ℕ
hxy4 : 4 ∣ x ^ 2 - y ^ 2
⊢ Odd x
simp only [Int.odd_iff_not_even, even_iff_two_dvd, hx, not_false_iff]