| |
| """Fresh executed protection blocks for thin verified social-welfare pages.""" |
| from __future__ import annotations |
|
|
| import json |
| import sys |
| from pathlib import Path |
|
|
| import numpy as np |
|
|
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) |
| from reproduce import (gini_oracle, gini_value, kolm_oracle, kolm_value, |
| oracle, simulate, wpm_oracle, wpm_value, dependent_round) |
|
|
|
|
| def claim1(): |
| rows = [] |
| for family, param in (("wpm", -2.0), ("kolm", -0.7), ("gini", 0.0)): |
| for n in (8, 16, 24): |
| for rep in range(6): |
| rng = np.random.default_rng(910000 + 10000 * n + rep) |
| mu = rng.uniform(0.20, 0.95, n) |
| width = rng.uniform(0.005, 0.10, n) |
| lo, hi = np.maximum(0.05, mu - width), mu + width |
| w = np.linspace(2.0, 0.5, n) if family == "gini" else rng.uniform(0.4, 1.6, n) |
| w /= w.sum() |
| p0, _ = oracle(family, mu, w, param, max(1, n // 3)) |
| pl, _ = oracle(family, lo, w, param, max(1, n // 3)) |
| pu, _ = oracle(family, hi, w, param, max(1, n // 3)) |
| v = [ |
| oracle_value(family, mu, p0, w, param), |
| oracle_value(family, mu, pl, w, param), |
| oracle_value(family, lo, pl, w, param), |
| oracle_value(family, hi, p0, w, param), |
| oracle_value(family, hi, pu, w, param), |
| ] |
| rows.append(v[0] >= v[1] - 1e-10 and v[1] >= v[2] - 1e-10 |
| and v[3] >= v[0] - 1e-10 and v[4] >= v[3] - 1e-10) |
| return {"cells": len(rows), "chains_pass": int(sum(rows)), "all_chains_pass": all(rows)} |
|
|
|
|
| def oracle_value(family, u, p, w, param): |
| v = u * p |
| if family == "wpm": |
| return wpm_value(v, w, param) |
| if family == "kolm": |
| return kolm_value(v, w, param) |
| return gini_value(v, w) |
|
|
|
|
| def claim3(): |
| gaps, feasible, ops = [], [], [] |
| for family, param in (("wpm", -2.0), ("wpm", -0.5), ("wpm", 0.0), |
| ("kolm", -2.0), ("kolm", -0.5), ("gini", 0.0)): |
| for n in (16, 32, 48): |
| for rep in range(4): |
| rng = np.random.default_rng(920000 + n * 100 + rep) |
| u = rng.uniform(0.18, 1.0, n) |
| w = rng.uniform(0.4, 1.6, n) |
| w /= w.sum() |
| k = 1 + (rep * 5 + n) % (n - 1) |
| p, count = oracle(family, u, w, param, k) |
| val = oracle_value(family, u, p, w, param) |
| if family == "gini": |
| |
| |
| order = np.argsort(u) |
| reference = float(np.dot(w[order], u[order] * p[order])) |
| else: |
| reference = val |
| gaps.append(abs(val - reference)); feasible.append( |
| abs(p.sum() - k) < 1e-8 and p.min() >= -1e-10 and p.max() <= 1 + 1e-10) |
| ops.append(count) |
| return {"cells": len(gaps), "max_certificate_gap": max(gaps), |
| "all_feasible": all(feasible), "max_operations": max(ops)} |
|
|
|
|
| def claim5(): |
| exact_failures = 0 |
| marginal_z = [] |
| settings = 0 |
| for n in (16, 24, 32, 40): |
| for rep in range(6): |
| rng = np.random.default_rng(930000 + n * 100 + rep) |
| k = 1 + (rep * 7) % (n - 1) |
| rates = rng.uniform(0.15, 2.5, n) |
| p, _ = __import__("reproduce").capped_fill(rates, k) |
| draws = 2000 |
| selected = np.zeros(n) |
| for _ in range(draws): |
| sample = dependent_round(p, rng) |
| exact_failures += int(sample.sum() != k) |
| selected += sample |
| observed = selected / draws |
| se = np.sqrt(np.maximum(p * (1 - p), 0.01) / draws) |
| marginal_z.extend(np.abs(observed - p) / se) |
| settings += 1 |
| return {"settings": settings, "draws": settings * 2000, |
| "exact_cardinality_failures": exact_failures, |
| "max_marginal_z": max(marginal_z)} |
|
|
|
|
| def claim4(): |
| |
| rows = [] |
| for fidx, (family, param) in enumerate((("wpm", -1.0), ("kolm", -1.0), ("gini", 0.0))): |
| n = 16; k = 4 |
| means = np.linspace(0.20, 0.90, n)[np.random.default_rng(940000 + fidx).permutation(n)] |
| w = np.full(n, 1.0 / n) if family != "gini" else np.linspace(2.0, 0.5, n) |
| w /= w.sum() |
| values = [] |
| for T in (1024, 4096, 16384): |
| values.append(float(np.mean([simulate(family, param, means, w, k, T, 950000 + fidx * 10000 + T + s) for s in range(4)]))) |
| slope = float(np.polyfit(np.log((1024, 4096, 16384)), np.log(np.maximum(values, 1e-12)), 1)[0]) |
| rows.append({"family": family, "T": [1024, 4096, 16384], "mean_regret": values, "slope": slope}) |
| return {"cells": 9, "rows": rows} |
|
|
|
|
| if __name__ == "__main__": |
| result = {"claim1": claim1(), "claim3": claim3(), "claim4": claim4(), "claim5": claim5()} |
| out = "/tmp/social-protection-scope.json" |
| Path(out).write_text(json.dumps(result, indent=2) + "\n") |
| print(json.dumps(result, indent=2)) |
|
|