IMO 2024 P2
Determine all pairs (a, b)
of positive integers for which there exist positive integers g
and N
such that
\operatorname{gcd}(a^n + b, b^n + a) = g
holds for all integers n \ge N
.
(Note that \operatorname{gcd}(x, y)
denotes the greatest common divisor of integers x
and y
.)
Solution: a = 1
and b = 1
open scoped Nat
theorem imo_2024_p2 :
{(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, Nat.gcd (a ^ n + b) (b ^ n + a) = g}
= {(1, 1)} := ⊢ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
zero
⊢ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}succ
n✝ : ℕ a✝ : {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
⊢ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
zero
⊢ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)} zero.refine_1
⊢ (1, 1) ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g}zero.refine_2
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
⊢ False
zero.refine_1
⊢ (1, 1) ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} -- (1, 1) satisfies the condition with g = 2, N = 3.
exact⟨⊢ 0 < 1 All goals completed! 🐙,⊢ 0 < 1 All goals completed! 🐙,2,3,⊢ 0 < 2 ∧ 0 < 3 ∧ ∀ n ≥ 3, (1 ^ n + 1).gcd (1 ^ n + 1) = 2 All goals completed! 🐙⟩
-- We claim that this is the only solution.
-- The agent wastes the next 16 lines proving then discarding a lemma.
zero.refine_2.refine_2
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ Y
⊢ Falsezero.refine_2.refine_1
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
⊢ b.1 + b.2 ∣ Y
zero.refine_2.refine_2
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ Y
⊢ False zero.refine_2.refine_2
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 = b.2
⊢ Falsethis
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ Y
⊢ b.1 = b.2
zero.refine_2.refine_2
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 = b.2
⊢ False zero.refine_2.refine_2
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → b.2 ^ n + b.2 = g S : (0 < b.2 ^ L ∨ 0 < b.2) ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → b.2 ^ n = b.2 ^ L i : ¬b.2 = 1 D : (0 < b.2 ^ L ∨ 0 < b.2) ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → b.2 ^ n = b.2 ^ L this✝ : b.2 + b.2 ∣ b.2 ^ L + b.2 this : True
⊢ False
use(pow_lt_pow (g.1.nat_succ_le.lt_of_ne' i) (b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → b.2 ^ n + b.2 = g S : (0 < b.2 ^ L ∨ 0 < b.2) ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → b.2 ^ n = b.2 ^ L i : ¬b.2 = 1 D : (0 < b.2 ^ L ∨ 0 < b.2) ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → b.2 ^ n = b.2 ^ L this✝ : b.2 + b.2 ∣ b.2 ^ L + b.2 this : True
⊢ L < L.succ All goals completed! 🐙)).ne' (D.2.2 _ L.le_succ)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ b.1 = b.2this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ Y
⊢ b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ b.1 = b.2 this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝¹ : b.1 + b.2 ∣ Y this✝ : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1 this : b.1 ^ 2 % (b.1 + b.2) = b.2 ^ 2 % (b.1 + b.2)
⊢ b.1 = b.2this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ b.1 ^ 2 % (b.1 + b.2) = b.2 ^ 2 % (b.1 + b.2)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝¹ : b.1 + b.2 ∣ Y this✝ : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1 this : b.1 ^ 2 % (b.1 + b.2) = b.2 ^ 2 % (b.1 + b.2)
⊢ b.1 = b.2 this
b : ℕ × ℕ Y : ℕ i : ¬b = (1, 1) L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : 0 < Y ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝¹ : Y % (b.1 + b.2) = 0 this✝ : (((b.2 % (b.1 + b.2) % (b.1 + b.2)) ^ 2 % (b.1 + b.2) % (b.1 + b.2)) ^ L % (b.1 + b.2) % (b.1 + b.2) +
b.2 % (b.1 + b.2) % (b.1 + b.2)) %
(b.1 + b.2) =
0 ∧
(((b.2 % (b.1 + b.2) % (b.1 + b.2)) ^ 2 % (b.1 + b.2) % (b.1 + b.2)) ^ L % (b.1 + b.2) % (b.1 + b.2) +
b.1 % (b.1 + b.2) % (b.1 + b.2)) %
(b.1 + b.2) =
0 this : True
⊢ b.1 = b.2
this
b : ℕ × ℕ Y : ℕ L : ℕ i : b.1 = 1 → ¬b.2 = 1 g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g S : 0 < Y ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y this✝¹ : b.1 + b.2 ∣ Y this✝ : b.1 + b.2 ∣ b.2 + (b.2 * b.2) ^ L ∧ b.1 + b.2 ∣ b.1 + (b.2 * b.2) ^ L this : True
⊢ b.1 = b.2
this
b : ℕ × ℕ Y : ℕ L : ℕ this✝¹ : True i : ↑b.1 = 1 → ¬↑b.2 = 1 g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y this✝ : ↑b.1 + ↑b.2 ∣ ↑Y this : ↑b.1 + ↑b.2 ∣ ↑b.2 + (↑b.2 * ↑b.2) ^ L ∧ ↑b.1 + ↑b.2 ∣ ↑b.1 + (↑b.2 * ↑b.2) ^ L
⊢ ↑b.1 = ↑b.2
cases this.1.sub this.2with|_ Zthis.intro
b : ℕ × ℕ Y : ℕ L : ℕ this✝¹ : True i : ↑b.1 = 1 → ¬↑b.2 = 1 g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y this✝ : ↑b.1 + ↑b.2 ∣ ↑Y this : ↑b.1 + ↑b.2 ∣ ↑b.2 + (↑b.2 * ↑b.2) ^ L ∧ ↑b.1 + ↑b.2 ∣ ↑b.1 + (↑b.2 * ↑b.2) ^ L Z : ℤ h✝ : ↑b.2 + (↑b.2 * ↑b.2) ^ L - (↑b.1 + (↑b.2 * ↑b.2) ^ L) = (↑b.1 + ↑b.2) * Z
⊢ ↑b.1 = ↑b.2 nlinarith [ (b : ℕ × ℕ Y : ℕ L : ℕ this✝¹ : True i : ↑b.1 = 1 → ¬↑b.2 = 1 g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y this✝ : ↑b.1 + ↑b.2 ∣ ↑Y this : ↑b.1 + ↑b.2 ∣ ↑b.2 + (↑b.2 * ↑b.2) ^ L ∧ ↑b.1 + ↑b.2 ∣ ↑b.1 + (↑b.2 * ↑b.2) ^ L Z : ℤ h✝ : ↑b.2 + (↑b.2 * ↑b.2) ^ L - (↑b.1 + (↑b.2 * ↑b.2) ^ L) = (↑b.1 + ↑b.2) * Z
⊢ Z = 0 (All goals completed! 🐙): Z=0 )]
this.a
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ ↑(b.1 + b.2) ∣ ↑(b.2 ^ 2) - ↑(b.1 ^ 2)
use(b.snd)-b.fst , (b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ ↑b.2 ^ 2 - ↑b.1 ^ 2 = (↑b.1 + ↑b.2) * (↑b.2 - ↑b.1)b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 + b.2 ∣ Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ ↑b.2 ^ 2 - ↑b.1 ^ 2 = (↑b.1 + ↑b.2) * (↑b.2 - ↑b.1)All goals completed! 🐙: ( (b.snd) : ℤ)^2-b.fst^2=(b.fst+(b).2) * _)
All goals completed! 🐙
zero.refine_2.refine_1
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ b.1 + b.2 ∣ Ythis
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
⊢ b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
zero.refine_2.refine_1
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ b.1 + b.2 ∣ Y exact D.2.2 (2 *(L )) (le_mul_of_one_le_left' (b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 + b.2 ∣ b.1 ^ (2 * L) + b.2 ∧ b.1 + b.2 ∣ b.2 ^ (2 * L) + b.1
⊢ 1 ≤ 2 All goals completed! 🐙 ) )▸dvd_gcd (this.left) (this).2
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
⊢ False
-- First, assume ab + 1 | g.
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 * b.2 + 1 ∣ Y
⊢ Falsethis
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
⊢ b.1 * b.2 + 1 ∣ Y
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 * b.2 + 1 ∣ Y
⊢ False this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ Falsethis
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 * b.2 + 1 ∣ Y
⊢ b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ False /- Then ab + 1 | a ^ (Nφ(ab + 1)) + b and
ab + 1 | b ^ (Nφ(ab + 1)) + a. -/
absurd D.2.2 (φ (b.1*b.2+1)*L) (b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ φ (b.1 * b.2 + 1) * L ≥ L All goals completed! 🐙)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ ¬(Y ∣ b.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2 ∧ Y ∣ b.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) H : Y ∣ b.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2 ∧ Y ∣ b.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1 v : b.1 * b.2 + 1 ∣ b.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2
⊢ ¬b.1 * b.2 + 1 ∣ b.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) H : Y ∣ b.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2 ∧ Y ∣ b.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1 i : b.1 = 1 → ¬b.2 = 1 v : (1 % (b.1 * b.2 + 1) + b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) % (b.1 * b.2 + 1) = 0
⊢ ¬(1 % (b.1 * b.2 + 1) + b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) % (b.1 * b.2 + 1) = 0
/- By Euler's Theorem, a ^ (Nφ(ab + 1)) ≡ 1 (mod ab + 1),
so ab + 1 | b + 1 and ab + 1 | a + 1. -/
this
b : ℕ × ℕ Y : ℕ L : ℕ this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) i : b.1 = 1 → ¬b.2 = 1 g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g S : 0 < Y ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y H : Y ∣ b.2 + (b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ Y ∣ b.1 + (b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : b.1 * b.2 + 1 ∣ b.2 + 1
⊢ ¬b.1 * b.2 + 1 ∣ b.1 + 1
this
b : ℕ × ℕ Y : ℕ L : ℕ this✝ : b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g S : 0 < Y ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y H : Y ∣ b.2 + (b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ Y ∣ b.1 + (b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : b.1 * b.2 + 1 ∣ b.2 + 1 i : b.1 * b.2 + 1 ∣ b.1 + 1
⊢ b.1 = 1 ∧ b.2 = 1
this
b : ℕ × ℕ Y : ℕ L : ℕ this✝ : ↑b.1 * ↑b.2 + 1 ∣ ↑Y this : ↑b.1 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) ∧
↑b.2 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y H : ↑Y ∣ ↑b.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ ↑Y ∣ ↑b.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : ↑b.1 * ↑b.2 + 1 ∣ ↑b.2 + 1 i : ↑b.1 * ↑b.2 + 1 ∣ ↑b.1 + 1
⊢ ↑b.1 = 1 ∧ ↑b.2 = 1
/- Thus ab + 1 ≤ b + 1 and ab + 1 ≤ a + 1 which requires
a = b = 1 as desired. -/
repeat use b : ℕ × ℕ Y : ℕ L : ℕ this✝ : ↑b.1 * ↑b.2 + 1 ∣ ↑Y this : ↑b.1 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) ∧
↑b.2 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y H : ↑Y ∣ ↑b.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ ↑Y ∣ ↑b.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : ↑b.1 * ↑b.2 + 1 ∣ ↑b.2 + 1 i : ↑b.1 * ↑b.2 + 1 ∣ ↑b.1 + 1
⊢ ↑b.2 = 1 nlinarith[Int.le_of_dvd (b : ℕ × ℕ Y : ℕ L : ℕ this✝ : ↑b.1 * ↑b.2 + 1 ∣ ↑Y this : ↑b.1 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) ∧
↑b.2 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y H : ↑Y ∣ ↑b.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ ↑Y ∣ ↑b.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : ↑b.1 * ↑b.2 + 1 ∣ ↑b.2 + 1 i : ↑b.1 * ↑b.2 + 1 ∣ ↑b.1 + 1
⊢ 0 < ↑b.2 + 1 All goals completed! 🐙) v,Int.le_of_dvd (b : ℕ × ℕ Y : ℕ L : ℕ this✝ : ↑b.1 * ↑b.2 + 1 ∣ ↑Y this : ↑b.1 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) ∧
↑b.2 ^ φ (b.1 * b.2 + 1) % (↑b.1 * ↑b.2 + 1) = 1 % (↑b.1 * ↑b.2 + 1) g : 0 < ↑b.1 ∧ 0 < ↑b.2 ∧ ∃ g, 0 < ↑g ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑g S : 0 < ↑Y ∧ ∃ x, 0 < ↑x ∧ ∀ (n : ℕ), ↑x ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y D : 0 < ↑Y ∧ 0 < ↑L ∧ ∀ (n : ℕ), ↑L ≤ ↑n → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = ↑Y H : ↑Y ∣ ↑b.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ L ∧ ↑Y ∣ ↑b.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L v : ↑b.1 * ↑b.2 + 1 ∣ ↑b.2 + 1 i : ↑b.1 * ↑b.2 + 1 ∣ ↑b.1 + 1
⊢ 0 < ↑b.1 + 1 All goals completed! 🐙) i]
repeat use↑(Nat.ModEq.pow_totient (b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y this : b.1 * b.2 + 1 ∣ Y
⊢ b.2.Coprime (b.1 * b.2 + 1) All goals completed! 🐙))
-- Now, we proceed to show that indeed ab + 1 | g.
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ False
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ Falsethis
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
this
b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ False this
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ False
/- It suffices to show that
ab + 1 | a^(φ(ab + 1)(N + 1) - 1) + b and
ab + 1 | b^(φ(ab + 1)(N + 1) - 1) + a. -/
this
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this✝ : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) this : b.1 * b.2 + 1 ∣ b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2 ∧
b.1 * b.2 + 1 ∣ b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
⊢ Falsethis
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ b.1 * b.2 + 1 ∣ b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2 ∧
b.1 * b.2 + 1 ∣ b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
this
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this✝ : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) this : b.1 * b.2 + 1 ∣ b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2 ∧
b.1 * b.2 + 1 ∣ b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
⊢ False use H$ D.2.2 (φ _ *(L+1)-1) (L.le_sub_of_add_le (b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this✝ : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) this : b.1 * b.2 + 1 ∣ b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2 ∧
b.1 * b.2 + 1 ∣ b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
⊢ L + 1 ≤ φ (b.1 * b.2 + 1) * (L + 1) All goals completed! 🐙))▸(((Nat.dvd_gcd) ( this).1)) this.right
cases B:Nat.exists_eq_add_of_lt$ ((b.1*b.2+1).totient_pos).2 (b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y this : b.1 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1) ∧
b.2 ^ φ (b.1 * b.2 + 1) % (b.1 * b.2 + 1) = 1 % (b.1 * b.2 + 1)
⊢ 0 < b.1 * b.2 + 1 All goals completed! 🐙)
this.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 B : ⋯ = ⋯ this : (b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1) *
(b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) =
1 ∧
(b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1) *
(b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) =
1
⊢ (((b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1) *
(b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1)) ^
L %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1) *
((b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1) +
b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) =
0 ∧
(((b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1) *
(b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1)) ^
L %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1) *
((b.2 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) ^ w✝ % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) %
(b.1 * b.2 + 1) +
b.1 % (b.1 * b.2 + 1) % (b.1 * b.2 + 1)) %
(b.1 * b.2 + 1) =
0
this.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1
⊢ ((1 % (b.1 * b.2 + 1)) ^ L * (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) % (b.1 * b.2 + 1) = 0 ∧
((1 % (b.1 * b.2 + 1)) ^ L * (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1) % (b.1 * b.2 + 1) = 0
/- Since a, b are coprime to ab + 1, it suffices to show that
ab + 1 | a(a^(φ(ab + 1)(N + 1) - 1) + b) and
ab + 1 | b(b^(φ(ab + 1)(N + 1) - 1) + a). -/
this.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : b.1 * b.2 + 1 ∣ b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) ∧ b.1 * b.2 + 1 ∣ b.2 * ((b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1)
⊢ ((1 % (b.1 * b.2 + 1)) ^ L * (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) % (b.1 * b.2 + 1) = 0 ∧
((1 % (b.1 * b.2 + 1)) ^ L * (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1) % (b.1 * b.2 + 1) = 0this
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1
⊢ b.1 * b.2 + 1 ∣ b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) ∧ b.1 * b.2 + 1 ∣ b.2 * ((b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1)
this.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : b.1 * b.2 + 1 ∣ b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) ∧ b.1 * b.2 + 1 ∣ b.2 * ((b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1)
⊢ ((1 % (b.1 * b.2 + 1)) ^ L * (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2) % (b.1 * b.2 + 1) = 0 ∧
((1 % (b.1 * b.2 + 1)) ^ L * (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1) % (b.1 * b.2 + 1) = 0 this.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ b.1 * b.2 + 1 ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1
this.intro.refine_1
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2this.intro.refine_2
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1
this.intro.refine_1
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 cases this.1 with|_ Q rthis.intro.refine_1.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1 Q : ℕ r : Q ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ Q * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2All goals completed! 🐙
cases@this.2with|_ F Xthis.intro.refine_2.intro
b : ℕ × ℕ Y : ℕ L : ℕ g : 0 < b.1 ∧ 0 < b.2 ∧ ∃ g, 0 < g ∧ ∃ x, 0 < x ∧ ∀ (n : ℕ), x ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g S : ∃ N, 0 < N ∧ ∀ (n : ℕ), N ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) D : 0 < Y ∧ 0 < L ∧ ∀ (n : ℕ), L ≤ n → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y w✝ : ℕ h✝ : φ (b.1 * b.2 + 1) = 0 + w✝ + 1 this✝ : (b.1 % (b.1 * b.2 + 1)) ^ w✝ * b.1 % (b.1 * b.2 + 1) = 1 ∧ (b.2 % (b.1 * b.2 + 1)) ^ w✝ * b.2 % (b.1 * b.2 + 1) = 1 this : (∃ y, y ∣ b.1 ∧ ∃ x, x ∣ (b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2 ∧ y * x = b.1 * b.2 + 1) ∧
∃ y, y ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ y * x = b.1 * b.2 + 1 F : ℕ X : F ∣ b.2 ∧ ∃ x, x ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1 ∧ F * x = b.1 * b.2 + 1
⊢ b.1 * b.2 + 1 ∣ (b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1All goals completed! 🐙
/- This follows from Euler's Theorem:
a(a^(φ(ab + 1)(N + 1) - 1) + b)
≡ a^(φ(ab + 1)(N + 1)) + ab
≡ 1 + ab
≡ 0 (mod ab + 1)
and similarly for b(b^(φ(ab + 1)(N + 1) - 1) + a). -/
All goals completed! 🐙
repeat use(Nat.ModEq.pow_totient (b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ b.2.Coprime (b.1 * b.2 + 1) b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ b.2.Coprime (b.1 * b.2 + 1) b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ b.2.Coprime (b.1 * b.2 + 1) b : ℕ × ℕ g : b ∈ {(a, b) | 0 < a ∧ 0 < b ∧ ∃ g N, 0 < g ∧ 0 < N ∧ ∀ n ≥ N, (a ^ n + b).gcd (b ^ n + a) = g} Y : ℕ S : ∃ N, 0 < Y ∧ 0 < N ∧ ∀ n ≥ N, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y i : ¬b = (1, 1) L : ℕ D : 0 < Y ∧ 0 < L ∧ ∀ n ≥ L, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y H : ¬b.1 * b.2 + 1 ∣ Y
⊢ b.2.Coprime (b.1 * b.2 + 1)All goals completed! 🐙) )
All goals completed! 🐙
The following command shows which axioms the proof relies upon:
#print axioms imo_2024_p2
'imo_2024_p2' depends on axioms: [propext, Classical.choice, Quot.sound]
These are the standard built in axioms.