back to table · edit · history · where entries came from · files · download
3783 bytes, as of the version from 2026-10-24 20:50 (current). Recorded here, not run.
"""Parse the pinned Maple census as data, never execute it."""
import re, hashlib, json
from pathlib import Path
def split_top(text):
pieces=[]; start=0; depth=0
for i,c in enumerate(text):
if c in '[{(': depth+=1
if c in ']})': depth-=1
if c==',' and depth==0: pieces.append(text[start:i].strip());start=i+1
assert depth>=0
assert depth==0
pieces.append(text[start:].strip())
return pieces
def parse(text):
result={}
text=re.sub(r'#.*','',text)
records=re.findall(r'PeriodNonPhi4\[(\d+),(\d+)\]\s*:=\s*\[(.*?)\]\s*:',text,re.S)
assert len(records)==text.count('PeriodNonPhi4[')
for l,k,body in records:
fields=split_top(body)
assert len(fields)==5
edges=[]
for e in split_top(fields[0][1:-1]):
vertices=[int(x) for x in split_top(e[1:-1])]
assert len(vertices)==2
edges.append({'vertices':vertices,'weight':1 if e[0]=='{' else -1})
result[f'{l},{k}']={'loops':int(l),'index':int(k),'edges':edges,'f_alphabet':fields[1], 'expression':fields[2],'source_decimal':fields[3],'c2':fields[4]}
return result
if __name__=='__main__':
from collections import Counter
p=Path(__file__).parent
raw=p.joinpath('PeriodsNonPhi4').read_text()
data=parse(raw)
p.joinpath('parsed-census.json').write_text(json.dumps(data,indent=2))
print('SHA256',hashlib.sha256(raw.encode()).hexdigest())
print('Total',len(data),'by loop',dict(Counter(r['loops'] for r in data.values())))
print('FAIL',[(k,r['expression'],r['source_decimal']) for k,r in data.items() if 'FAIL' in r['expression']])
print('Distinct known expressions',len({r['expression'] for r in data.values() if 'FAIL' not in r['expression']}))
print('Nested zeta tokens',sorted(set(re.findall(r'zeta\[\[[^\]]+\]',raw))))
print('Other symbols', sorted(set(re.findall('[A-Za-z_]+',' '.join(r['expression'] for r in data.values())))))
def canonical(expression):
"""Exact polynomial in named zeta/MPL constants and pi, over Fraction."""
import ast
from fractions import Fraction
def add(a,b):
c=dict(a)
for k,v in b.items():c[k]=c.get(k,Fraction(0))+v
return {k:v for k,v in c.items() if v}
def mul(a,b):
c={}
for k,u in a.items():
for l,v in b.items():
m=tuple(sorted(k+l)); c[m]=c.get(m,Fraction(0))+u*v
return {k:v for k,v in c.items() if v}
def visit(n):
if isinstance(n,ast.Constant) and type(n.value) is int:return {():Fraction(n.value)}
if isinstance(n,ast.Name) and n.id=='Pi':return {('Pi',):Fraction(1)}
if isinstance(n,ast.Subscript) and isinstance(n.value,ast.Name) and n.value.id=='zeta':
return {(ast.dump(n.slice),):Fraction(1)}
if isinstance(n,ast.UnaryOp):
a=visit(n.operand)
if isinstance(n.op,ast.USub):return {k:-v for k,v in a.items()}
if isinstance(n.op,ast.UAdd):return a
if isinstance(n,ast.BinOp):
a,b=visit(n.left),visit(n.right)
if isinstance(n.op,ast.Add):return add(a,b)
if isinstance(n.op,ast.Sub):return add(a,{k:-v for k,v in b.items()})
if isinstance(n.op,ast.Mult):return mul(a,b)
if isinstance(n.op,ast.Div):
assert list(b)==[()]
return {k:v/b[()] for k,v in a.items()}
if isinstance(n.op,ast.Pow):
assert list(b)==[()] and b[()].denominator==1 and b[()]>=0
c={():Fraction(1)}
for _ in range(int(b[()])):c=mul(c,a)
return c
raise ValueError(ast.dump(n))
return tuple(sorted(visit(ast.parse(expression.replace('^','**'),mode='eval').body).items()))