import json,itertools,math for lam in [0.,.5,1.,3.]: eta=.1/(1+lam);q=1-eta*(1+lam) for T in [0,1,2,5,10,30]: ct=(1-q**T)/(1+lam);w=0.;m=.4 for _ in range(T):w=q*w+eta*m assert abs(w-ct*m)<1e-12 n=10;m1=.2;m2=m1+2/n assert abs(ct*m2-ct*m1)<=2*ct/n+1e-12 for z in [-1.,-.2,.7,1.]:assert abs(.5*(ct*m2-z)**2-.5*(ct*m1-z)**2)<=4*ct/n+1e-12 # Eligibility control: negative regularization invalidates the bounded-domain argument. def admissible(lam,eta):return lam>=0 and 01 and abs(bad_ct-(-1))>2 n=6;ct=(1-.8**10)/2;gaps=[] for zs in itertools.product([-1.,1.],repeat=n): m=sum(zs)/n;w=ct*m;gaps.append(.5*(w*w+1)-sum(.5*(w-z)**2 for z in zs)/n) assert abs(sum(gaps)/len(gaps)-ct/n)<1e-12 assert abs(1-3*(1+1))>1 ts=[0,1,2,5,10,20];ns=[5,10,20,50,100] figures=[{"id":"time-sensitivity","kind":"analytical_curve","caption":"Author-constructed full-batch quadratic, n=20, lambda=1, eta=.1. Exact parameter bound and conservative loss bound; not measured SGD sensitivity.","x":{"name":"Gradient steps T","values":ts},"series":[{"name":"Parameter bound 2cT/n","values":[2*((1-.8**t)/2)/20 for t in ts]},{"name":"Loss bound 4cT/n","values":[4*((1-.8**t)/2)/20 for t in ts]}]},{"id":"expected-gap","kind":"analytical_curve","caption":"Exact expected generalization gap cT/n in the author-constructed IID Rademacher quadratic problem, lambda=1, eta=.1, T=10. Not a neural training benchmark.","x":{"name":"Sample size n","values":ns},"series":[{"name":"Expected gap","values":[ct/n for n in ns]}]}] print(json.dumps({"status":"PASS","checks":["Recurrence closed form","Replace-one and loss bounds","64-sample exact expected gap","Noncontracting-step and negative-regularization eligibility controls"],"empirical_benchmark":False,"source_proofs_verified":False,"figures":figures}))