#!/usr/bin/env python3 """ PROVENANCE: PROOF Computation 124 -- displacement covariance is PSD; the Lorentzian signature is the tau_null sign cut, not isotropy (the isotropy-forcing relation correction, v28.64) ============================================================================= Backs the clause appended to the isotropy-forcing relation in the Mosco/A6 section at v28.64. Equation the isotropy-forcing relation writes the empirical displacement covariance C^{mu nu} = (1/|D|) sum_a (rho(a)^mu - x^mu)(rho(a)^nu - x^nu) -> (d_0^2/4) g^{mu nu}. But C is a sum of outer products, hence POSITIVE-SEMIDEFINITE, and O(4) isotropy forces it to the Euclidean form (d_0^2/4) delta^{mu nu}. A covariance cannot itself carry the indefinite Lorentzian signature of g^{mu nu}; that signature is supplied SEPARATELY by the directed modal threshold's tau_null sign cut (the signed-tension metric, Computation 2 -- hyperbolic well-posedness of the Goldstone wave equation), and the isotropy-forcing relation is written in that post-signature metric. This script verifies the three factual pillars of the clause: (1) PSD vs INDEFINITE. The empirical displacement covariance has all eigenvalues >= 0 (it is a sum of outer products), whereas the Minkowski g = diag(-1,1,1,1) has a negative eigenvalue. A PSD tensor cannot equal (d_0^2/4) g unless g is Euclidean -- the literal the isotropy-forcing relation reads in the post-signature metric, isotropy alone delivering only the Euclidean magnitude. (2) ISOTROPY => delta. Under O(4)-isotropic displacements the covariance converges to (d_0^2/4) delta (eigenvalues all equal, off-diagonal -> 0): the only O(4)-covariant rank-2 tensor is delta, a positive Euclidean form, with scale d_0^2/4 -- exactly what isotropy fixes, and nothing about the signature. (3) THE SIGNATURE IS THE tau_null CUT. The the signed-tension metric sign sgn(T({a,b})-tau_null) creates timelike (-) directions; the number of them (the signature) is set by tau_null and is INDEPENDENT of the isotropic covariance of (2). As tau_null varies the timelike fraction tracks the cut quantile exactly, while the displacement covariance stays PSD throughout. So the indefiniteness is manufactured by the cut, not by isotropy. A "pass": (1) min eig(C) >= 0 and min eig(Minkowski) < 0; (2) C -> (d_0^2/4)delta (anisotropy and off-diagonal -> 0 as N grows); (3) timelike fraction == tau_null quantile across a sweep, with C PSD throughout. """ from __future__ import annotations import numpy as np def displacement_covariance(N, d0, dim=4, seed=0): """Empirical covariance C = (1/N) sum_a xi_a xi_a^T of N O(dim)-isotropic displacements with population covariance (d_0^2/4) I_dim.""" rng = np.random.default_rng(seed) xi = rng.normal(0.0, d0 / 2.0, size=(N, dim)) # isotropic, cov (d_0^2/4) I return (xi.T @ xi) / N def main(): print("=" * 100) print(" Computation 124 -- displacement covariance is PSD; signature is the tau_null cut") print("=" * 100) print() d0 = 0.1 target = d0 ** 2 / 4.0 # ---- (1) PSD vs indefinite ---------------------------------------------- print(" (1) PSD (covariance) vs INDEFINITE (Lorentzian g)") C = displacement_covariance(2_000_000, d0, dim=4, seed=1) eigC = np.sort(np.linalg.eigvalsh(C)) g = np.diag([-1.0, 1.0, 1.0, 1.0]) # Minkowski inverse metric eigg = np.sort(np.linalg.eigvalsh(g)) print(f" eigenvalues of the empirical covariance C (target (d_0^2/4)={target:.4e}):") print(f" {np.array2string(eigC, precision=4, floatmode='fixed')}") print(f" min eig(C) = {eigC[0]:.4e} (>= 0 => PSD: {eigC[0] >= -1e-12})") print(f" eigenvalues of the Lorentzian g = diag(-1,1,1,1): {eigg.astype(int)}") print(f" min eig(g) = {eigg[0]:+.0f} (< 0 => INDEFINITE: {eigg[0] < 0})") print(" -> a PSD covariance cannot equal (d_0^2/4) g; isotropy gives only the") print(" Euclidean magnitude, the isotropy-forcing relation is read post-signature.") print() # ---- (2) isotropy => delta ---------------------------------------------- print(" (2) ISOTROPY => (d_0^2/4) delta (covariance is Euclidean, isotropic)") print(f" {'N':>10} {'mean diag':>12} {'max|off-diag|':>14} {'eig spread (max/min)':>20}") for N in (10_000, 100_000, 1_000_000, 10_000_000): C = displacement_covariance(N, d0, dim=4, seed=7) diag = np.diag(C).mean() offmax = np.abs(C - np.diag(np.diag(C))).max() ev = np.linalg.eigvalsh(C) print(f" {N:>10d} {diag:>12.4e} {offmax:>14.4e} {ev.max()/ev.min():>20.4f}") print(f" target diagonal (d_0^2/4) = {target:.4e}; off-diagonal -> 0; eig ratio -> 1.") print(" -> the only O(4)-covariant rank-2 tensor is delta: isotropy fixes the") print(" positive Euclidean form and its scale, nothing about signature.") print() # ---- (3) the signature is the tau_null cut ------------------------------ print(" (3) SIGNATURE is the tau_null SIGN CUT (the signed-tension metric), independent of isotropy") rng = np.random.default_rng(20260627) Npts = 600 # a generic pairwise tension field (values irrelevant; only the cut matters) T = rng.uniform(0.0, 1.0, size=(Npts, Npts)); T = np.triu(T, 1); T = T + T.T pairs = T[np.triu_indices(Npts, 1)] print(f" the signed-tension metric g(a,b) = sgn(T-tau_null) |T-tau_null|^(1/2): timelike <=> T < tau_null") print(f" {'tau_null quantile q':>20} {'timelike fraction':>18} {'matches q':>10}") sweep_ok = True for q in (0.1, 0.25, 0.5, 0.75): tau_null = np.quantile(pairs, q) timelike_frac = np.mean(pairs < tau_null) ok = abs(timelike_frac - q) < 0.01 sweep_ok &= ok print(f" {q:>20.2f} {timelike_frac:>18.4f} {str(ok):>10}") # meanwhile the displacement covariance is PSD regardless of any cut Cpsd = displacement_covariance(1_000_000, d0, dim=4, seed=3) psd_throughout = np.linalg.eigvalsh(Cpsd).min() >= -1e-12 print(f" timelike fraction tracks the cut quantile exactly: {sweep_ok}") print(f" the displacement covariance stays PSD throughout : {psd_throughout}") print(" -> the indefinite (Lorentzian) directions are manufactured by tau_null,") print(" NOT by the isotropic covariance: signature = Computation 2 / the cut.") print() # ---- assessment --------------------------------------------------------- print("=" * 100) print(" ASSESSMENT") print("=" * 100) C = displacement_covariance(10_000_000, d0, dim=4, seed=7) ev = np.linalg.eigvalsh(C) p1 = (np.linalg.eigvalsh(displacement_covariance(2_000_000, d0, 4, 1)).min() >= -1e-12) and (eigg[0] < 0) p2 = (ev.max() / ev.min() < 1.01) and (abs(np.diag(C).mean() - target) / target < 0.02) p3 = sweep_ok and psd_throughout print(f" (1) covariance PSD, Lorentzian g indefinite (cannot be equal): {p1}") print(f" (2) isotropy forces the Euclidean (d_0^2/4) delta form : {p2}") print(f" (3) signature set by the tau_null cut, not the covariance : {p3}") print() ok = p1 and p2 and p3 print(f" RESULT: {'CONFIRMS the the isotropy-forcing relation correction (covariance PSD/Euclidean; signature = tau_null cut)' if ok else 'MISMATCH -- revise the clause'}") if __name__ == "__main__": main()