ppIhZgFCTI / code /claim5_verifier.py
DineshAI's picture
Claim-by-claim theorem-calibrated reproduction
ca74b23 verified
Raw History Blame Contribute Delete
1.86 kB
"""Current Claim 5 verifier; extracted from Git SHA 8a72923 for evaluator use."""
import sys
import numpy as np
def definition_first_hit(m: float, rho: float, delta: float) -> int:
t = 0
envelope = m
while envelope > delta:
envelope *= rho
t += 1
return t
def direct_tv_curve(n_states: int, rho: float, max_steps: int) -> list[float]:
stationary = np.full(n_states, 1.0 / n_states)
distributions = np.eye(n_states)
curve = []
for _ in range(max_steps + 1):
curve.append(float(np.max(0.5 * np.abs(distributions - stationary).sum(axis=1))))
distributions = rho * distributions + (1.0 - rho) * stationary
return curve
def verify() -> bool:
tests = 0
rejections = 0
max_error = 0.0
for n_states in (32, 128, 512):
m = 1.0 - 1.0 / n_states
for rho in (0.5, 0.75, 0.875, 0.9375):
minimum_transition_probability = (1.0 - rho) / n_states
if minimum_transition_probability <= 0.0:
return False
deltas = (0.1, 0.05, 0.01, 0.001, m * rho**7)
max_steps = max(definition_first_hit(m, rho, d) for d in deltas) + 2
curve = direct_tv_curve(n_states, rho, max_steps)
for delta in deltas:
tau = definition_first_hit(m, rho, delta)
direct = next(t for t, tv in enumerate(curve) if tv <= delta + 1e-12)
tests += 1
rejections += int(tau + 1 != direct)
max_error = max(max_error, abs(curve[direct] - m * rho**direct))
if tau != direct:
return False
print({"tests": tests, "off_by_one_rejections": rejections, "max_error": max_error})
return tests == 60 and rejections == 60 and max_error < 1e-12
if __name__ == "__main__":
sys.exit(0 if verify() else 1)