/teal-sea
teal-sea / zeta-labstate of record · compiled 02 Nov 2026 · revision b09fa4dd · source

Library · hunts/weil_propagation/c4_s2/kernel/INTERFACE.md

INTERFACE: kernel/ (gap (a), the archimedean Sonin projection S_∞)

1,540 words · 166 lines · source

For two_adic/ and checker/. Import from the worktree root with sys.path.insert(0, "hunts/weil_propagation/c4_s2/kernel"), then import sonin. Python: PYTHONPATH=$PWD .venv/bin/python. Everything is mpmath; each function takes dps and works internally at dps + sonin.GUARD (25 guard digits), returning values at dps.

1. Conventions (the mission's shared basis)

2. Functions

functionreturnssource
T_inf_matrix(c, N, dps, arch_type=None)T_∞(f) = Tr(ϑ(f) S_∞ ϑ(f)*) = A + ECC Thm 4.7 (eq. 83)
arch_matrix(c, N, dps, parity=0)A = W_∞ (mission normalization, theory §0)CC eq. 53; CCM (3.15)
eps_matrix(c, N, dps, parity=0)E(f) = ∫ g(x) ε(e^{|x|}) dxCC eq. 84, 91
delta_matrix(c, N, dps, parity=0)D(f) = ∫ g(x) δ(e^{|x|}) dxCC eq. 49, 56
pole_matrix(c, N, dps)P(f) = 2∫ g cosh(x/2) (theory §0)= CCM W02
R_inf_matrix(c, N, dps)R_∞ = Q_∞ − T_∞ = P − E
eps(rho, dps, parity=0), delta(rho, dps, parity=0)the scalar kernels, symmetric under ρ → 1/ρ
prolate_data(dps, parity=0)dict: lam, v = λ²/(1−λ²), edge = ξ_n(1), ks, coef (Legendre coefficients of φ̃_n), e (Taylor coefficients of η_n), alpha (of A1), n_max, J, KCC s4
constraint_rows(c, N, which), null_basis(rows, dim), to_real(M, N), real_basis(N)the function class, in the real basis [U_0, C_1..C_N, S_1..S_N]CC Thm 6.11
calibrate.analyze_cell(c, N, dps)spectra and inertias of T_∞ and R_∞ on the full space and the classes

arch_type: None/"R" is the source case (Γ_ℝ(s), even sector, ζ). "R_odd" is the odd sector (Γ_ℝ(s+1), sine transform, odd prolates). "C" is Γ_ℂ(s) = Γ_ℝ(s)Γ_ℝ(s+1) as the sum of the two. The odd trace identity is a derivation by analogy in this session, not in CC (RESULTS §4). The conductor term of a ramified character (log 23 for ζ_{Q(√−23)}) is not archimedean and is not included in any block here.

3. S_∞ as a projection (what two_adic/ composes with)

Two Hilbert spaces, identified by CC's unitary w (eq. 17): L²(ℝ)_ev with ⟨η|ξ⟩ = ∫0^∞ η̄ξ dx (CC eq. 16) and L²(ℝ*+, d*u) with (wξ)(u) = u^{1/2} ξ(u). Fourier: F ξ(y) = ∫ ξ(x) e^{−2πixy} dx (CC eq. 24, = CCM 2310.18423's e_∞ up to conjugation, which is invisible on even functions). Cutoff λ = 1 in both x and frequency (CC's Λ = 1; CCM's S_1(ℝ, e_∞)). Even sector by default (parity 0); parity 1 is the odd sector with the sine transform. Scaling ϑ_m(λ)g(v) = g(v/λ) on L²(ℝ*_+, d*u) (CC eq. 30), equivalently (ϑ(λ)ξ)(v) = λ^{-1/2}ξ(v/λ) on L²(ℝ)_ev (eq. 61).

The projection, in L²(ℝ*_+, d*u):

S_∞ = 1 − Σ_n ( |x_n⟩⟨x_n| + |z_n⟩⟨z_n| ) (CC eq. 81) = M_{1[u ≥ 1]} − Σ_n |z_n⟩⟨z_n| (ran P = Sonin ⊕ span z_n)

x_n(u) = u^{1/2} φ̃n(u) 1{u<1} (CC ξ_n, orthonormal) z_n(u) = u^{1/2} η_n(u) 1_{u≥1} / √(1 − λ_n²) (CC ζ_n, orthonormal)

Mellin transforms of z_n. zeta_mellin_all(s, dps, parity, nvec) returns [M_n(s)] with M_n(s) = ∫_1^∞ ζ_n(v) v^{−1/2−is} dv = ∫ z_n(u) u^{−is} d*u (CC's F_μ, eq. 22), in closed form (Tate's local functional equation for ∫_0^∞ η_n v^{z−1}, z = 1/2 − is, minus λ_n ∫_0^1 φ̃_n v^{z−1}; the moments ∫_0^1 x^a P_k by a two-term recurrence). s may be complex with 0 < Re z < 1. Checked against quadrature and against a direct integral (test_zeta_mellin_closed_form).

How many modes. Two_adic/'s ΔT needs modes across the Mellin band of the window basis (about 2πN/L), not only the weighted ones. prolate_vectors(dps, parity, nvec) takes any nvec: nvec = 150 took about 13 s at dps 40 (one measurement) and the vectors are orthonormal to 10^{−40} (test_many_modes_orthonormal). For n at or beyond prolate_data(dps)["n_max"] (20 at dps 40, 23 at dps 60), λ_n is below 10^{−(dps+25)} and is not resolved. Use η_n (eta_all) and z_n directly, never λ_n φ̃_n. There √(1 − λ_n²) = 1 to working precision.

Use the second form. Σ_n |x_n⟩⟨x_n| = M_{1[u<1]} converges only slowly on window functions (their jump at the window edge), while the z-sum converges super-exponentially on vectors supported in u ≤ X, because |η_n| on [1, X] is tiny once n ≫ πX. Measured at dps 40 (sizes |η_n(X)|):

n1020304050
X = √32.6e−51.0e−209.2e−418.9e−645.5e−89
X = 30.231.2e−103.9e−251.1e−421.7e−62

So for supports inside u ≤ X keep n < K with |η_K(X)|² below your target; nvec = 60 covers X ≤ 3 at dps 40. For vectors with support beyond u = 3 (for example after a Neumann series in ϑ(2)), K must grow like πX; the representation stays exact, only the truncation moves. Checked: for v = 1_{[1, 1.5]}, F(S_∞ v) vanishes on [−1, 1] to 10^{-35} with 40 terms (test_projection_maps_into_sonin_space).

On the CCM basis. S_inf_window_matrix(c, N, dps, u0=None) returns (⟨V_m|S_∞|V_n⟩, K, tail) for V_n(u) = U_n(log(u/u0)) on [u0, u0·c] (default u0 = c^{−1/2}, the CCM placement [λ^{−1}, λ]). S_∞ is not scale invariant, so this compressed matrix depends on u0. The trace term does not: Tr(ϑ(g)S_∞ϑ(g)) = Tr(ϑ(g ∗ g)S_∞) is a function of the autocorrelation.

The trace functional. For every h ∈ C_c^∞(ℝ*_+) (not only autocorrelations, not only even h):

Φ_∞(h) := Tr(ϑ(h) S_∞) = W_∞(h) + ∫ h(ρ) ε(ρ) d*ρ (CC Thm 4.7)

with ε(ρ) = ρ^{1/2}A(ρ) − ρ^{-1/2}A(1/ρ) for ρ ≥ 1, ε(1/ρ) = ε(ρ), A = A0 + A1, A0(y) = 2[Si(2π(1−y))/(2π(1−y)) + Si(2π(1+y))/(2π(1+y))], A1(y) = Σ_n v_n ∫_0^1 η_n(t)η_n(yt) dt (eps(rho, dps)), and ρ^{1/2}A0(ρ) = δ(ρ) (CC eq. 49). For a translated autocorrelation h(x) = g(x − s) the ε part is ∫ g(u) ε(e^{|u+s|}) du; the shifted W_∞ matrix is not built here (ask through the coordinator if needed).

4. The function class (CC Thm 6.11, Thm 1)

constraint_rows(c, N, which) returns real row vectors in the real basis:

C1 = {"minus"}, C2 = {"minus", "zero"}. Restrict with B = null_basis(rows, 2N+1), B.T * to_real(M, N) * B.

5. JSON files

cells_dps40.json and cells_dps60.json (written by run_cells.py --dps D), all numbers as decimal strings at that dps: