#!/usr/bin/env python3
"""
Synthetic homogeneous contraction-spectrum crosscheck for CSM_RH Paper 06.

It evaluates products of lambda_k = 1 - c/(log N_k)^a
on geometric scales and compares normalized asymptotic ratios.

This is not evidence for RH.
"""
import math
import csv

q = 2.0
L = math.log(q)
t0 = 20.0
c = 0.20
K = 400

rows = []
for a in [0.0, 0.5, 1.0, 1.5]:
    logY = 0.0
    for k in range(1, K + 1):
        t = t0 + k*L
        if a == 0.0:
            lam = 1.0 - c
        else:
            lam = 1.0 - c/(t**a)
        logY += math.log(lam)

    tK = t0 + K*L
    if a == 0.0:
        predicted = -math.log(1-c)/L
        observed = -logY/tK
        metric = "(-log Y)/log N"
    elif a < 1.0:
        predicted = c/(L*(1-a))
        observed = -logY/(tK**(1-a))
        metric = "(-log Y)/(log N)^(1-a)"
    elif a == 1.0:
        predicted = c/L
        observed = -logY/math.log(tK)
        metric = "(-log Y)/log log N"
    else:
        predicted = 0.0
        observed = math.exp(logY)
        metric = "Y_limit_proxy"

    rows.append([a, K, tK, metric, predicted, observed])

with open("campaign05_contraction_spectrum_crosscheck.csv", "w", encoding="utf-8", newline="") as f:
    w = csv.writer(f)
    w.writerow(["a", "K", "log_N", "metric", "predicted_asymptotic", "observed"])
    w.writerows(rows)

print("PASS")
