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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
zero{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
succ
n✝:
a✝:{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
zero{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g} = {(1, 1)}
zero.refine_1(1, 1){(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
zero.refine_2
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
False
zero.refine_1(1, 1){(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (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 < 20 < 3n ≥ 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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2Y
False
zero.refine_2.refine_1
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
b.1 + b.2Y
zero.refine_2.refine_2
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2Y
False
zero.refine_2.refine_2
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 = b.2
False
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2Y
b.1 = b.2
zero.refine_2.refine_2
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 = b.2
False
zero.refine_2.refine_2
b: ×
Y:
L:
g:0 < b.2g, 0 < gx, 0 < x∀ (n : ), xnb.2 ^ n + b.2 = g
S:(0 < b.2 ^ L0 < b.2)x, 0 < x∀ (n : ), xnb.2 ^ n = b.2 ^ L
i:¬b.2 = 1
D:(0 < b.2 ^ L0 < b.2)0 < L∀ (n : ), Lnb.2 ^ n = b.2 ^ L
this✝:b.2 + b.2b.2 ^ L + b.2
this:True
False
use(`pow_lt_pow` has been deprecated, use `pow_lt_pow_right` insteadpow_lt_pow (g.1.nat_succ_le.lt_of_ne' i) (
b: ×
Y:
L:
g:0 < b.2g, 0 < gx, 0 < x∀ (n : ), xnb.2 ^ n + b.2 = g
S:(0 < b.2 ^ L0 < b.2)x, 0 < x∀ (n : ), xnb.2 ^ n = b.2 ^ L
i:¬b.2 = 1
D:(0 < b.2 ^ L0 < b.2)0 < L∀ (n : ), Lnb.2 ^ n = b.2 ^ L
this✝:b.2 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
b.1 = b.2
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2Y
b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
b.1 = b.2
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝¹:b.1 + b.2Y
this✝:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝¹:b.1 + b.2Y
this✝:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:0 < Yx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
D:0 < Y0 < L∀ (n : ), Ln → (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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g
S:0 < Yx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
D:0 < Y0 < L∀ (n : ), Ln → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
this✝¹:b.1 + b.2Y
this✝:b.1 + b.2b.2 + (b.2 * b.2) ^ Lb.1 + b.2b.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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.2 + (↑b.2 * b.2) ^ Lb.1 + b.2b.1 + (↑b.2 * b.2) ^ L
b.1 = b.2
cases this.1.sub this.2with|_ Z
this.intro
b: ×
Y:
L:
this✝¹:True
i:b.1 = 1 → ¬b.2 = 1
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.2 + (↑b.2 * b.2) ^ Lb.1 + b.2b.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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.2 + (↑b.2 * b.2) ^ Lb.1 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 + b.2Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
b.1 + b.2Y
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
zero.refine_2.refine_1
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
b.1 + b.2Y
exact D.2.2 (2 *(L )) (le_mul_of_one_le_left' (
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 + b.2b.1 ^ (2 * L) + b.2b.1 + b.2b.2 ^ (2 * L) + b.1
12
All goals completed! 🐙
) )dvd_gcd (this.left) (this).2
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 * b.2 + 1Y
False
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
b.1 * b.2 + 1Y
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 * b.2 + 1Y
False
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 * b.2 + 1Y
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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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) * LL
All goals completed! 🐙
)
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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)
¬(Yb.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2Yb.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1)
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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:Yb.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2Yb.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1
v:b.1 * b.2 + 1b.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2
¬b.1 * b.2 + 1b.2 ^ (φ (b.1 * b.2 + 1) * L) + b.1
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this✝:b.1 * b.2 + 1Y
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:Yb.1 ^ (φ (b.1 * b.2 + 1) * L) + b.2Yb.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 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g
S:0 < Yx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
D:0 < Y0 < L∀ (n : ), Ln → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
H:Yb.2 + (b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
¬b.1 * b.2 + 1b.1 + 1
this
b: ×
Y:
L:
this✝:b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = g
S:0 < Yx, 0 < x∀ (n : ), xn → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
D:0 < Y0 < L∀ (n : ), Ln → (b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n) = Y
H:Yb.2 + (b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
i:b.1 * b.2 + 1b.1 + 1
b.1 = 1b.2 = 1
this
b: ×
Y:
L:
this✝:b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
H:Yb.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
i:b.1 * b.2 + 1b.1 + 1
b.1 = 1b.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 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
H:Yb.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
i:b.1 * b.2 + 1b.1 + 1
b.2 = 1
nlinarith[Int.le_of_dvd (
b: ×
Y:
L:
this✝:b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
H:Yb.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
i:b.1 * b.2 + 1b.1 + 1
0 < b.2 + 1
All goals completed! 🐙
) v,Int.le_of_dvd (
b: ×
Y:
L:
this✝:b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = g
S:0 < Yx, 0 < x∀ (n : ), ↑xn → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
D:0 < Y0 < L∀ (n : ), ↑Ln → ↑((b.2 + b.1 ^ n).gcd (b.1 + b.2 ^ n)) = Y
H:Yb.2 + (↑b.1 ^ φ (b.1 * b.2 + 1)) ^ LYb.1 + (↑b.2 ^ φ (b.1 * b.2 + 1)) ^ L
v:b.1 * b.2 + 1b.2 + 1
i:b.1 * b.2 + 1b.1 + 1
0 < b.1 + 1
All goals completed! 🐙
) i] repeat use(Nat.ModEq.pow_totient (
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
this:b.1 * b.2 + 1Y
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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
False
this
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2b.1 * b.2 + 1b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
False
this
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2b.1 * b.2 + 1b.2 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.1
this
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2b.1 * b.2 + 1b.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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 ^ (φ (b.1 * b.2 + 1) * (L + 1) - 1) + b.2b.1 * b.2 + 1b.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 unused variable `B` note: this linter can be disabled with `set_option linter.unusedVariables false`B:Nat.exists_eq_add_of_lt$ ((b.1*b.2+1).totient_pos).2 (
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2)b.1 * b.2 + 1b.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
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2)b.1 * b.2 + 1b.2 * ((b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1)
this.intro
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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 + 1b.1 * ((b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2)b.1 * b.2 + 1b.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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * x = b.1 * b.2 + 1
b.1 * b.2 + 1(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2b.1 * b.2 + 1(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1
this.intro.refine_1
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * x = b.1 * b.2 + 1
b.1 * b.2 + 1(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2
this.intro.refine_2
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * 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.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * 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 r
this.intro.refine_1.intro
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * x = b.1 * b.2 + 1
Q:
r:Qb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2Q * x = b.1 * b.2 + 1
b.1 * b.2 + 1(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2
All goals completed! 🐙
cases@this.2with|_ F X
this.intro.refine_2.intro
b: ×
Y:
L:
g:0 < b.10 < b.2g, 0 < gx, 0 < x∀ (n : ), xn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = g
S:N, 0 < N∀ (n : ), Nn → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
D:0 < Y0 < L∀ (n : ), Ln → (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
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, yb.1x, x(b.1 % (b.1 * b.2 + 1)) ^ w✝ + b.2y * x = b.1 * b.2 + 1)y, yb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1y * x = b.1 * b.2 + 1
F:
X:Fb.2x, x(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1F * x = b.1 * b.2 + 1
b.1 * b.2 + 1(b.2 % (b.1 * b.2 + 1)) ^ w✝ + b.1
All 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 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
b.2.Coprime (b.1 * b.2 + 1)
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
b.2.Coprime (b.1 * b.2 + 1)
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
b.2.Coprime (b.1 * b.2 + 1)
b: ×
g:b{(a, b) | 0 < a0 < bg N, 0 < g0 < NnN, (a ^ n + b).gcd (b ^ n + a) = g}
Y:
S:N, 0 < Y0 < NnN, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
i:¬b = (1, 1)
L:
D:0 < Y0 < LnL, (b.1 ^ n + b.2).gcd (b.2 ^ n + b.1) = Y
H:¬b.1 * b.2 + 1Y
b.2.Coprime (b.1 * b.2 + 1)
All goals completed! 🐙
) )
All goals completed! 🐙

The following command shows which axioms the proof relies upon:

'imo_2024_p2' depends on axioms: [propext, Classical.choice, Quot.sound]#print axioms imo_2024_p2
'imo_2024_p2' depends on axioms: [propext, Classical.choice, Quot.sound]

These are the standard built in axioms.