back to table · edit · history · where entries came from · files · download
1980 bytes, as of the version from 2026-10-28 22:59 (current). Recorded here, not run.
"""Additional format, program and corpus checks; sage -python extra_checks.py."""
import json
import hashlib
from pathlib import Path
import numberdb.sage as numberdb
from numberdb._polynomial import parse_polynomial
from generate import Umemura, polynomial, monic_quotient, R, x, mu
from program import umemura
from check import measure, exactness, names_its_rings
g = Umemura()
values = {p['n']:g.value(p,100) for p in g.enumerate()}
assert not exactness(values)
assert not names_its_rings(str(Path(__file__).with_name('generate.py')))
rejected = False
try:
monic_quotient(x*x+1, x+1)
except AssertionError:
rejected = True
assert rejected
format_rows=[]
for n,p in values.items():
assert p == umemura(n)
parsed = parse_polynomial(str(p))
renamed = parse_polynomial(str(p).replace('x','z').replace('m','a'))
assert parsed.canonical_hash() == renamed.canonical_hash()
assert R(str(parsed)) == p
assert set(parsed.variables()) <= {'x','m'}
format_rows.append({'n':n,'terms':len(p.dict()),'bytes':len(str(p).encode()),'sha256':hashlib.sha256(str(p).encode()).hexdigest(),'search_hash':parsed.canonical_hash()})
assert polynomial(6) == umemura(6)
bessel = json.loads(Path(__file__).with_name('T116.json').read_text())['Numbers']
if isinstance(bessel,dict):
bessel = [dict(row,params={'n':n}) if isinstance(row,dict) else {'params':{'n':n},'number':row} for n,row in bessel.items()]
bessel = {int(row['params']['n']):R(row['number']) for row in bessel}
for n,p in values.items():
y=bessel[n]
reverse = sum(c*x**(n-int(ex[0])) for ex,c in y.dict().items())
assert p(x,1) == x**(n*(n-1)//2)*reverse
print(json.dumps({'format':format_rows,'program_agreement':list(range(7)), 'corpus_bessel_agreement':list(range(6)), 'exactness':True,'monic_division_rejects_remainder':True,'renaming_invariant_search_format':True,'measure':measure(values),'environment':g.environment(),'values':{str(n):str(p) for n,p in values.items()}},indent=2))