Research source · python
verify-hunt-calibration.py
site/public/evidence/stirling-collinear-amplitudes/verify-hunt-calibration.py
59 lines. Source is displayed for inspection; it is not executed by this page.
File fingerprint
SHA-256: 6a4eddb866b743b320b0e3cb78b3b59bccb6c8c6d12b44f085db6345a8c1c338
#!/usr/bin/env python3
"""Exact arithmetic checks for the Stirling/arrangement hunt calibration."""
from fractions import Fraction
from math import factorial
def stirling_first_kind(n: int) -> list[int]:
row = [0] * (n + 1)
row[0] = 1
for size in range(1, n + 1):
nxt = [0] * (n + 1)
for cycles in range(1, size + 1):
nxt[cycles] = row[cycles - 1] + (size - 1) * row[cycles]
row = nxt
return row
def binomial(n: int, k: int) -> int:
return factorial(n) // (factorial(k) * factorial(n - k))
def unordered_bipartition_degree(hard_labels: int) -> int:
total = 0
for a in range(1, hard_labels):
b = hard_labels - a
total += binomial(hard_labels, a) * factorial(a - 1) * factorial(b - 1)
return total // 2
for m in range(2, 13):
c = stirling_first_kind(m)
assert sum(c) == factorial(m)
assert sum(c[k] for k in range(0, m + 1) if k % 2 == 0) == factorial(m) // 2
assert sum(c[k] for k in range(0, m + 1) if k % 2 == 1) == factorial(m) // 2
# The degree-q braid-arrangement piece has dimension [m, m-q].
reversed_hilbert = [c[m - q] for q in range(m)]
amplitude_blocks = [c[k] for k in range(1, m + 1)]
assert amplitude_blocks == list(reversed(reversed_hilbert))
weighted_stirling_degree = sum(k * c[k] for k in range(m + 1))
harmonic_degree = factorial(m) * sum(Fraction(1, j) for j in range(1, m + 1))
assert harmonic_degree.denominator == 1
assert weighted_stirling_degree == harmonic_degree.numerator
assert weighted_stirling_degree == stirling_first_kind(m + 1)[2]
# Dong--Stieberger's conjectural factors are indexed by unordered
# bipartitions of m+1 hard labels, including singleton sides.
factor_degree = unordered_bipartition_degree(m + 1)
assert factor_degree == weighted_stirling_degree
print(
f"m={m:2d} blocks={amplitude_blocks} "
f"total={factorial(m):9d} half={factorial(m)//2:9d} "
f"det_degree={factor_degree:10d}"
)
print("all exact Stirling, parity, reversed-filtration, and determinant-degree checks passed")