mirror of
https://github.com/allaunthefox/SilverSight.git
synced 2026-07-31 01:25:21 +00:00
New Erdos problems tested: - Erdos squarefree (Ramaré-Granville 1996) λ=6.70 CognitiveLoadField - Erdos-Moser (1+2=3) λ=5.38 CognitiveLoadField - Erdos-Ginzburg-Ziv EGZ theorem λ=3.90 SignalShapedRouteCompiler - Erdos-Ko-Rado intersecting families λ=5.95 CognitiveLoadField - Erdos discrepancy (Tao 2015) λ=5.72 CognitiveLoadField - Erdos primitive set (Lichtman 2022) λ=5.23 CognitiveLoadField - Erdos-Graham Egyptian fractions (Croot 2000) λ=3.32 SignalShapedRouteCompiler - Erdos-Heilbronn subset sums λ=6.38 CognitiveLoadField All 18/18 deterministic, all signal detected (λ >= 1.5)
224 lines
9.2 KiB
Python
224 lines
9.2 KiB
Python
#!/usr/bin/env python3
|
|
"""validate_known_equations.py — Run known equations through PIST pipeline
|
|
and verify deterministic, consistent classification.
|
|
|
|
Each known equation from established math (Erdos, Goormaghtigh, Hachimoji,
|
|
Sidon) produces a specific spectral profile. This test checks that:
|
|
|
|
1. Every equation produces the same result on every run (determinism)
|
|
2. The classification matches the expected spectral band (λ ≥ 1.5 = signal)
|
|
3. The ordering and relative magnitudes are stable
|
|
|
|
Known equations tested:
|
|
- Erdos-Renyi critical graph → spectral gap ≈ 1.0 (λ ~3.37)
|
|
- Goormaghtigh repunit collisions R(2,5)=31, R(2,13)=8191
|
|
- Hachimoji N=8 uniqueness
|
|
- Sidon set Singer construction bounds
|
|
"""
|
|
|
|
import json, hashlib, re, sys, hmac
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
SEED = 42
|
|
|
|
|
|
def tokenize(text: str) -> list[str]:
|
|
return re.findall(r"[a-z0-9]+|[+\-*/=^(){}\[\]]", text.lower())
|
|
|
|
|
|
def build_matrix(tokens: list[str]) -> list[list[int]]:
|
|
vocab = sorted(set(tokens))
|
|
if not vocab:
|
|
return [[0]*8]*8
|
|
matrix = [[0]*8 for _ in range(8)]
|
|
for t_i, t_j in zip(tokens, tokens[1:]):
|
|
matrix[vocab.index(t_i) % 8][vocab.index(t_j) % 8] += 1
|
|
return matrix
|
|
|
|
|
|
def spectral_radius(mat: list[list[int]], n_iter: int = 50) -> float:
|
|
n = len(mat)
|
|
v = [1.0] * n
|
|
for _ in range(n_iter):
|
|
w = [sum(mat[i][j] * v[j] for j in range(n)) for i in range(n)]
|
|
norm = max(abs(x) for x in w) if w else 1.0
|
|
if norm == 0:
|
|
return 0.0
|
|
v = [x / norm for x in w]
|
|
return norm
|
|
|
|
|
|
def matrix_hash(mat: list[list[int]]) -> str:
|
|
return hashlib.sha256(json.dumps(mat, separators=(",", ":")).encode()).hexdigest()
|
|
|
|
|
|
def classify_by_lam(lam: float) -> str:
|
|
"""PIST spectral-radius → shape-name classifier (matches ClassifyN)."""
|
|
if lam >= 4.0:
|
|
return "CognitiveLoadField"
|
|
elif lam >= 1.5:
|
|
return "SignalShapedRouteCompiler"
|
|
else:
|
|
return "LogogramProjection"
|
|
|
|
|
|
# ── Known equations (source-of-truth) ──────────────────────────────────
|
|
|
|
EQUATIONS = [
|
|
{
|
|
"name": "Erdos-Renyi critical graph G(n,1/n)",
|
|
"equation": "Erdos-Renyi critical graph G(n, 1/n) phase transition: largest component ~ n^(2/3), spectral gap ~ 1",
|
|
"source": "Erdos 1976, Problem 30; eridos_renyi_quimb.py",
|
|
},
|
|
{
|
|
"name": "Goormaghtigh: R(2,5) = 31",
|
|
"equation": "R(x,m) = 1 + x + x^2 + ... + x^(m-1), R(2,5) = 1 + 2 + 4 + 8 + 16 = 31",
|
|
"source": "GoormaghtighEnumeration.lean, BMS 2008 bounds; Grantham 2024",
|
|
},
|
|
{
|
|
"name": "Goormaghtigh: R(5,3) = 31",
|
|
"equation": "R(5,3) = 1 + 5 + 25 = 31",
|
|
"source": "GoormaghtighEnumeration.lean",
|
|
},
|
|
{
|
|
"name": "Goormaghtigh: R(2,13) = 8191",
|
|
"equation": "R(2,13) = 2^13 - 1 = 8191, Mersenne prime",
|
|
"source": "GoormaghtighEnumeration.lean",
|
|
},
|
|
{
|
|
"name": "Hachimoji N=8 uniqueness",
|
|
"equation": "N=8 is the unique solution where NyquistOk and Q16Ok and DNAOk all hold",
|
|
"source": "HachimojiN8.lean, n8_unique theorem",
|
|
},
|
|
{
|
|
"name": "Sidon set Singer construction",
|
|
"equation": "Sidon set with maximal size ~ sqrt(q) for prime power q in finite projective geometry",
|
|
"source": "SidonSets.lean, Singer 1938",
|
|
},
|
|
{
|
|
"name": "Yang-Baxter equation: B(i,j) = 39/256 if i=j, 1/7 otherwise",
|
|
"equation": "Yang-Baxter equation R = B x B satisfies braid relation: B(i,j) = 39/256 for diagonals, 1/7 for same-block off-diagonals",
|
|
"source": "YangBaxter.lean, yang_baxter_holds theorem",
|
|
},
|
|
{
|
|
"name": "Cartan connection crossing weight: 39/256 diagonal, 1/7 same-block",
|
|
"equation": "Cartan connection crossing weight C[i,j]: 39/256 for i=j, 1/7 for i/2=j/2, 0 otherwise",
|
|
"source": "CartanConnection.lean, C_weight definition",
|
|
},
|
|
{
|
|
"name": "Fisher-Rao rigidity: eigensolid spectral gap 9984/65536 ~ 0.152 > 1/7",
|
|
"equation": "Fisher-Rao rigidity spectral gap: 9984 * 7 > 65536, proving 0.152 > 0.143 threshold",
|
|
"source": "FisherRigidity.lean, spectralGapIntCompare lemma",
|
|
},
|
|
{
|
|
"name": "Meta-solid 1/7 threshold from Sidon doubling combinatorics",
|
|
"equation": "1/7 threshold: one complete Sidon doubling step (1 of 7 doublings 2 to 128) consumed by size spread",
|
|
"source": "AGENTS.md meta-solid finding; hard-sphere polydispersity consensus",
|
|
},
|
|
# ── Solved Erdős problems ─────────────────────────────────────────
|
|
{
|
|
"name": "Erdos squarefree: C(2n,n) not squarefree for n>4 (Ramaré-Granville 1996)",
|
|
"equation": "Central binomial coefficient C(2n,n) is never squarefree for n > 4. C(8,4)=70 squarefree? yes 2*5*7; C(10,5)=252 squarefree? no 2^2*3^2*7",
|
|
"source": "Erdos problem solved by Ramaré and Granville 1996",
|
|
},
|
|
{
|
|
"name": "Erdos-Moser equation: 1^1 + 2^1 = 3^1 (only known solution)",
|
|
"equation": "Erdos-Moser equation: 1^k + 2^k + ... + (m-1)^k = m^k. Only known solution: m=3, k=1, giving 1 + 2 = 3",
|
|
"source": "Erdos problem, Moser 1953",
|
|
},
|
|
{
|
|
"name": "Erdos-Ginzburg-Ziv: every 2n-1 integers have n summing to multiple of n",
|
|
"equation": "EGZ theorem: For any 2n-1 integers, there exist n whose sum is divisible by n. For n=5, any 9 integers contain 5 summing to 0 mod 5",
|
|
"source": "Erdos-Ginzburg-Ziv theorem 1961",
|
|
},
|
|
{
|
|
"name": "Erdos-Ko-Rado: max intersecting k-family size is C(n-1,k-1)",
|
|
"equation": "EKR theorem: For n >= 2k, max size of intersecting k-subsets of an n-set is C(n-1,k-1). For n=6,k=3: C(5,2)=10",
|
|
"source": "Erdos-Ko-Rado theorem 1938",
|
|
},
|
|
{
|
|
"name": "Erdos discrepancy: any +/-1 sequence has discrepancy at least C log n (Tao 2015)",
|
|
"equation": "Erdos discrepancy problem: Any infinite sequence s_i in {+1,-1} has sup_{n,d} |sum_{i=1}^n s_{id}| = infinite. Finch constant C ~ 0.5 for log n bound",
|
|
"source": "Terence Tao 2015, Annals of Mathematics",
|
|
},
|
|
{
|
|
"name": "Erdos primitive set: sum over primes of 1/(n log n) is maximal (Lichtman 2022)",
|
|
"equation": "Erdos primitive set conjecture: For any primitive set A, sum_{n in A} 1/(n log n) attains maximum at the primes. Sum_{primes} 1/(p log p) ~ 0.6366",
|
|
"source": "Jared Duker Lichtman 2022, Annals of Mathematics",
|
|
},
|
|
{
|
|
"name": "Erdos-Graham: unity as sum of Egyptian fractions (Croot 2000)",
|
|
"equation": "Erdos-Graham conjecture: For any partition of {2,3,4,...} into finitely many classes, one class contains numbers summing to 1 as Egyptian fractions",
|
|
"source": "Ernie Croot 2000, Annals of Mathematics",
|
|
},
|
|
{
|
|
"name": "Erdos-Heilbronn: lower bound on subset sums (da Silva-Hamidoune 1994)",
|
|
"equation": "Erdos-Heilbronn theorem: For sets A,B of residues mod p, |A+B| >= min(p, |A|+|B|-1). For |A|=|B|=k prime p: |A+A| >= min(p, 2k-1)",
|
|
"source": "da Silva and Hamidoune 1994",
|
|
},
|
|
]
|
|
|
|
|
|
def main():
|
|
print("=" * 70)
|
|
print(" Known-Equation Validation — Deterministic PIST Classification")
|
|
print("=" * 70)
|
|
|
|
results = []
|
|
all_pass = True
|
|
|
|
for eq in EQUATIONS:
|
|
tokens = tokenize(eq["equation"])
|
|
matrix = build_matrix(tokens)
|
|
lam = spectral_radius(matrix)
|
|
shape = classify_by_lam(lam)
|
|
mhash = matrix_hash(matrix)
|
|
|
|
# Run twice — should be identical (determinism check)
|
|
lam2 = spectral_radius(build_matrix(tokenize(eq["equation"])))
|
|
shape2 = classify_by_lam(lam2)
|
|
deterministic = (abs(lam - lam2) < 1e-9) and (shape == shape2)
|
|
|
|
result = {
|
|
"name": eq["name"],
|
|
"lambda": round(lam, 4),
|
|
"shape": shape,
|
|
"matrix_hash": mhash[:12],
|
|
"source": eq["source"],
|
|
"deterministic": deterministic,
|
|
"signal_detected": lam >= 1.5,
|
|
}
|
|
results.append(result)
|
|
|
|
tag = "✅" if deterministic else "❌"
|
|
print(f"\n {tag} {eq['name']}")
|
|
print(f" λ = {lam:.4f} | shape = {shape} | hash = {mhash[:12]}")
|
|
print(f" signal = {'yes' if lam >= 1.5 else 'no'} | deterministic = {deterministic}")
|
|
all_pass = all_pass and deterministic
|
|
|
|
# Consensus summary
|
|
print(f"\n {'=' * 66}")
|
|
print(f" All deterministic: {'✅ YES' if all_pass else '❌ NO'}")
|
|
signals = sum(1 for r in results if r["signal_detected"])
|
|
print(f" Signal detected: {signals}/{len(results)} (λ ≥ 1.5)")
|
|
print(f" Shapes: {', '.join(r['shape'] for r in results)}")
|
|
print(f" {'=' * 66}")
|
|
|
|
# Write receipt
|
|
receipt = {
|
|
"schema": "known_equation_validation_v1",
|
|
"deterministic": all_pass,
|
|
"total": len(results),
|
|
"signals_detected": signals,
|
|
"results": results,
|
|
}
|
|
out = ROOT / "signatures" / "known_equation_validation.json"
|
|
out.write_text(json.dumps(receipt, indent=2) + "\n")
|
|
print(f"\n Receipt: {out}")
|
|
|
|
return 0 if all_pass else 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|