"""How the sealed rule behaves under assumed truths, before any chain is followed.

10,000 samples of 500 Bernoulli articles per assumed share of articles that
reach Philosophy. Output: branches.txt.
"""

import numpy as np

import rule

rng = np.random.default_rng(20260915)
TRUTHS = [0.97, 0.94, 0.90, 0.85, 0.50, 0.12, 0.10, 0.05, 0.01]
lines = ["truth    A: survived killed inconcl   B: survived killed inconcl"]
for p in TRUTHS:
    ks = rng.binomial(rule.N, p, 10_000)
    va = [rule.verdicts(int(k)) for k in ks]
    fa = {v: sum(x["A"] == v for x in va) / len(va) for v in ("survived", "killed", "inconclusive")}
    fb = {v: sum(x["B"] == v for x in va) / len(va) for v in ("survived", "killed", "inconclusive")}
    lines.append(f"{p:5.2f}      {fa['survived']:7.3f} {fa['killed']:6.3f} {fa['inconclusive']:7.3f}"
                 f"      {fb['survived']:7.3f} {fb['killed']:6.3f} {fb['inconclusive']:7.3f}")
open("branches.txt", "w").write("\n".join(lines) + "\n")
print("\n".join(lines))
