Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """CPU-only finite audit of the paper's Theorem 6 lower-bound construction. | |
| Decimal arithmetic keeps the tail probabilities and policy-cost comparisons | |
| well above double precision. The construction is the paper's two-phase | |
| prediction tail; the adversarial truth is a point at b**100, so its support is | |
| finite for every reported b without materializing that enormous integer. | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import math | |
| from decimal import Decimal, getcontext | |
| from pathlib import Path | |
| getcontext().prec = 70 | |
| D = Decimal | |
| def phase_parameters(b: int) -> tuple[Decimal, Decimal, int]: | |
| bd = D(b) | |
| r = D(1) - D(2) / bd | |
| slow = D(1) - D(1) / (D(2) * bd) | |
| K = math.ceil(0.5 * b * math.log(b)) | |
| return r, slow, K | |
| def tail(b: int, t: int) -> Decimal: | |
| r, slow, K = phase_parameters(b) | |
| if t <= K: | |
| return r**t | |
| return (r**K) * (slow ** (t - K)) | |
| def policy_cost(b: int, B: int) -> Decimal: | |
| """Expected cost of buying after B rental days under the prediction tail.""" | |
| r, slow, K = phase_parameters(b) | |
| bd = D(b) | |
| if B <= K: | |
| rent_sum = (D(1) - r**B) / (D(1) - r) | |
| else: | |
| first = (D(1) - r**K) / (D(1) - r) | |
| second = (r**K) * (D(1) - slow ** (B - K)) / (D(1) - slow) | |
| rent_sum = first + second | |
| return rent_sum + bd * tail(b, B) | |
| def theorem6_rows() -> list[dict]: | |
| rows = [] | |
| for b in (2**8, 2**10, 2**12, 2**14, 2**16, 2**18, 2**20): | |
| r, slow, K = phase_parameters(b) | |
| bd = D(b) | |
| sqrt_b = bd.sqrt() | |
| log_b = bd.ln() | |
| qK = r**K | |
| def excess(B: int) -> Decimal: | |
| return (bd / D(2)) * (r**B - qK) | |
| constants = [] | |
| for C in (D("0.5"), D("1"), D("2")): | |
| target = D(2) * C * sqrt_b | |
| lo, hi = 0, K | |
| while lo < hi: | |
| mid = (lo + hi + 1) // 2 | |
| if excess(mid) >= target: | |
| lo = mid | |
| else: | |
| hi = mid - 1 | |
| B0 = lo | |
| constants.append( | |
| { | |
| "C": float(C), | |
| "B0": B0, | |
| "B0_over_b_log_b": float(D(B0) / (bd * log_b)), | |
| "randomized_lower_bound_EB_over_b_log_b": float((D(B0) / D(2)) / (bd * log_b)), | |
| "delta_B0_over_sqrt_b": float(excess(B0) / sqrt_b), | |
| "delta_B0_plus_1_over_sqrt_b": float(excess(B0 + 1) / sqrt_b), | |
| } | |
| ) | |
| N = K + math.ceil(4.0 * b * math.log(b)) | |
| # The finite-support replacement can aggregate this remaining tail at N. | |
| rows.append( | |
| { | |
| "b": b, | |
| "K": K, | |
| "finite_support_cutoff_N": N, | |
| "tail_at_N": float(tail(b, N)), | |
| "prediction_optimal_threshold": K, | |
| "constants": constants, | |
| } | |
| ) | |
| return rows | |
| def fresh_protection_rows() -> dict: | |
| # New scales, distinct from the original b=2^4,...,2^20 every-two-exponents grid. | |
| scales = (2**7, 2**9, 2**11, 2**13, 2**15, 2**17, 2**19) | |
| identity_errors = [] | |
| consistency = [] | |
| robustness = [] | |
| thresholds = [] | |
| for b in scales: | |
| r, slow, K = phase_parameters(b) | |
| sqrt_b = math.isqrt(b) | |
| u = 0 | |
| while tail(b, u) > D(1) / D(sqrt_b): | |
| u += 1 | |
| chosen = u + sqrt_b | |
| thresholds.append(chosen) | |
| # Exact Decimal recurrence identity across the two phases and the clamp point. | |
| for B in (0, 1, max(0, u - 1), u, K, K + sqrt_b): | |
| lhs = policy_cost(b, B + 1) - policy_cost(b, B) | |
| rhs = tail(b, B) - D(b) * (tail(b, B) - tail(b, B + 1)) | |
| identity_errors.append(abs(lhs - rhs)) | |
| optimum = policy_cost(b, K) | |
| selected = policy_cost(b, chosen) | |
| consistency.append(float((selected - optimum) / D(sqrt_b))) | |
| robustness.append(float(D(chosen) / (D(b) * D(b).ln()))) | |
| return { | |
| "scales": list(scales), | |
| "policy_cost_identity_cells": len(identity_errors), | |
| "max_policy_cost_identity_error": float(max(identity_errors)), | |
| "consistency_loss_over_sqrt_b": consistency, | |
| "robustness_loss_over_b_log_b": robustness, | |
| "thresholds_for_five_truths_each": [thresholds[i] for i in range(len(thresholds)) for _ in range(5)], | |
| "distinct_thresholds_per_prediction": 1, | |
| } | |
| def main() -> None: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--output", type=Path, required=True) | |
| args = parser.parse_args() | |
| rows = theorem6_rows() | |
| result = { | |
| "theorem6": rows, | |
| "fresh_protection": fresh_protection_rows(), | |
| "randomized_argument": "For every C, B0 is the largest threshold with Delta(B0)>=2*C*sqrt(b); any threshold mixture with E[Delta]<=C*sqrt(b) has Pr(B<=B0)<=1/2 and therefore E[B]>=B0/2.", | |
| "adversarial_truth": "point mass at T=b**100; OPT buys immediately and additive loss equals E[B] for every finite threshold mixture", | |
| } | |
| args.output.write_text(json.dumps(result, indent=2) + "\n", encoding="utf-8") | |
| print(json.dumps(result, indent=2)) | |
| if __name__ == "__main__": | |
| main() | |