import json,itertools from fractions import Fraction SLUG='gradual-typing-boundaries' EDGES=[(0,1,10),(1,2,100),(2,3,10)] def cut(s):return sum(w for a,b,w in EDGES if (a in s)!=(b in s)) def run(): configurations=[{i for i,b in enumerate(bits) if b} for bits in itertools.product([0,1],repeat=4)] minimum=[min(cut(s) for s in configurations if len(s)==k) for k in range(5)] maximum=[max(cut(s) for s in configurations if len(s)==k) for k in range(5)] prefix=[cut(set(range(k))) for k in range(5)] expectations=[] for p in map(Fraction,['0','0.25','0.5','0.75','1']): exact=sum(p**len(s)*(1-p)**(4-len(s))*cut(s) for s in configurations) expectations.append(exact==2*p*(1-p)*120) checks=[dict(name='Complement symmetry of every graph cut',passed=all(cut(s)==cut(set(range(4))-s) for s in configurations),cases=16,detail='Exhaustive four-vertex assignments.'),dict(name='Expected cut matches independent Bernoulli enumeration',passed=all(expectations),cases=5,detail='Exact Fraction probabilities, including p=0 and p=1.'),dict(name='Migration is nonmonotonic and envelopes contain trajectory',passed=prefix==[0,10,100,10,0] and minimum==[0,10,20,10,0] and maximum==[0,110,120,110,0],cases=5,detail='All configurations at each typed-module count enumerated.'),dict(name='Wrapper formula agrees with explicit step summation',passed=all(sum(range(1,m+1))==m*(m+1)//2 for m in range(101)),cases=101,detail='Includes zero; counts visits, not runtime timings.')] def normalized(v):return [1+2*x/1000 for x in v] return dict(slug=SLUG,checks=checks,figures=[dict(id='migration-cut',title='Boundary cost across annotation configurations',x_label='Number of typed modules',y_label='Constructed work / baseline',series=[dict(name='Minimum over configurations',x=list(range(5)),y=normalized(minimum)),dict(name='Maximum over configurations',x=list(range(5)),y=normalized(maximum)),dict(name='Contiguous-prefix migration',x=list(range(5)),y=normalized(prefix))],caption='A four-module path has weights 10, 100, 10; baseline 1000 and cost 2 per mixed interaction.',assumptions=['Undirected interactions','Identical successful workload','No typed-internal optimization'],kind='Constructed analytical model; not a measured benchmark'),dict(id='wrapper-history',title='Retained wrapper history versus one normalized check',x_label='Crossing-and-call steps',y_label='Cumulative wrapper visits',series=[dict(name='Naive retained chain',x=list(range(21)),y=[m*(m+1)//2 for m in range(21)]),dict(name='Hypothetical single check',x=list(range(21)),y=list(range(21)))],caption='At 20 steps the operation counts are 210 and 20. No cited implementation is assumed to use this naive representation.',assumptions=['One wrapper added per crossing','Call traverses every retained wrapper','Normalization is hypothetical and requires semantic validation'],kind='Constructed analytical model; not a measured benchmark')],result_summary=dict(prefix_cut_weights=prefix,prefix_normalized_cost=normalized(prefix),minimum_cut=minimum,maximum_cut=maximum,wrapper_visits_at_20=[210,20])) if __name__=='__main__':print(json.dumps(run(),indent=2))