Theorem: Pell.xn_modEq_x2n_add_lem
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: have h1 : d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j =
    (d a1 * yn a1 n * yn a1 n + 1) * xn a1 j := by
  simp [add_mul, mul_assoc]
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j
state_after: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j

tactic: have h2 : d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n := by
  zify at *
  apply add_eq_of_eq_sub' (Eq.symm (pell_eqz a1 n))
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j
state_after: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j

tactic: rw [h2] at h1
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j
state_after: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = xn a1 n * xn a1 n * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j

tactic: rw [h1, mul_assoc]
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = xn a1 n * xn a1 n * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j
state_after: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = xn a1 n * xn a1 n * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ xn a1 n * (xn a1 n * xn a1 j)

tactic: exact dvd_mul_right _ _
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = xn a1 n * xn a1 n * xn a1 j
h2 : Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
⊢ xn a1 n ∣ xn a1 n * (xn a1 n * xn a1 j)
state_after: no goals

tactic: simp [add_mul, mul_assoc]
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
⊢ Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
state_after: no goals

tactic: zify at *
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 : Pell.d a1 * yn a1 n * (yn a1 n * xn a1 j) + xn a1 j = (Pell.d a1 * yn a1 n * yn a1 n + 1) * xn a1 j
⊢ Pell.d a1 * yn a1 n * yn a1 n + 1 = xn a1 n * xn a1 n
state_after: a : ℕ
a1 : 1 < a
n j : ℕ
h1 :
  ↑(Pell.d a1) * ↑(yn a1 n) * (↑(yn a1 n) * ↑(xn a1 j)) + ↑(xn a1 j) =
    (↑(Pell.d a1) * ↑(yn a1 n) * ↑(yn a1 n) + 1) * ↑(xn a1 j)
⊢ ↑(Pell.d a1) * ↑(yn a1 n) * ↑(yn a1 n) + 1 = ↑(xn a1 n) * ↑(xn a1 n)

tactic: apply add_eq_of_eq_sub' (Eq.symm (pell_eqz a1 n))
state_before: a : ℕ
a1 : 1 < a
n j : ℕ
h1 :
  ↑(Pell.d a1) * ↑(yn a1 n) * (↑(yn a1 n) * ↑(xn a1 j)) + ↑(xn a1 j) =
    (↑(Pell.d a1) * ↑(yn a1 n) * ↑(yn a1 n) + 1) * ↑(xn a1 j)
⊢ ↑(Pell.d a1) * ↑(yn a1 n) * ↑(yn a1 n) + 1 = ↑(xn a1 n) * ↑(xn a1 n)
state_after: no goals