verify_stored.py

back to table · edit · history · where entries came from · files · download

2121 bytes, as of the version from 2026-11-10 22:01 (current). Recorded here, not run.

"""Check stored T706 decimals against saved independently computed enclosures.

Run sage -python verify_stored.py with stored.json, numerical-evidence.json,
generate.py and integral_kernel.py beside it. No website write is performed.
Also confirms generator source hashes before consuming saved numerical results.
"""
import json,hashlib
from pathlib import Path
import numberdb.sage as numberdb
from sage.rings.rational_field import QQ
import generate
import integral_kernel as ik
p=Path(__file__).parent;ev=json.loads((p/'numerical-evidence.json').read_text())
for name in ['generate.py','checks.py','integral_kernel.py','skill-manifest.json']:
 assert hashlib.sha256((p/name).read_bytes()).hexdigest()==ev['hashes'][name]
doc=json.loads((p/'stored.json').read_text());data=doc['Numbers'];assert list(map(int,data))==list(range(1,31))
R=ik.R;vals={};checks=[]
for row in ev['rows']:
 n=row['N'];s=data[str(n)];s=s['number'] if isinstance(s,dict) else s
 lo,hi=ik.decimal_interval(s);vals[n]=(lo,hi)
 for kind in ['generator_endpoints','integral_endpoints']:
  a,b=map(QQ,row[kind]);assert lo<a<=b<hi and b-a<QQ(1)/10**110
 v=generate.UntaperedErrors().value({'N':str(n)},100);assert v>lo and v<hi
 minimum_a,minimum_b=map(QQ,row['minimum_endpoints']);assert lo>minimum_b
 assert lo>QQ(row['exterior_tail_exact'])
 checks.append({'N':n,'decimal':s,'enclosures_strictly_inside':True})
for n in ev['repeated_nonsquarefree_endpoints']:assert data[str(n)]==data[str(n-1)]
for n,v in [(1,3+(2*R.pi()).log()-3*R.euler_constant()),(2,2-R.euler_constant()-R(2).log()/2)]:
 lo,hi=vals[n];assert v>lo and v<hi
# A shifted stored interval must fail, including at a nontrivial endpoint.
lo,hi=vals[30];a,b=map(QQ,ev['rows'][-1]['integral_endpoints']);assert not (lo+1<a<=b<hi+1)
print(json.dumps({'table':'T706','checked_entries':30,'total_entries':30,'failures':[],
 'known_answer_control':True,'negative_control_rejected':True,'rows':checks,
 'stored_document_sha256':hashlib.sha256((p/'stored.json').read_bytes()).hexdigest(),
 'evidence_sha256':hashlib.sha256((p/'numerical-evidence.json').read_bytes()).hexdigest()},indent=2))