This is the public deposit root for the theory paper. The paper is theory-first (theorems + proofs); the only code is four self-contained scripts that verify the theorems in the paper's own Gaussian model. They need no external data, no GPU, and no cluster - each draws its own targets, fits least squares, and checks a stated prediction. Constants can be matched exactly here precisely because the model IS the theorem's model, which real data structurally cannot do; the real-data corroboration lives in the sibling BT-FNO project (PDEBench), not here.
synthetic_separation.py- the single-layer generalization separation (Theorem 1). Fixed-channel Gaussian model. Verifies (Panel A) excess risk equalssigma^2 * dim / nfor both the CP and block-term classes, with the CP/block-term risk ratio approachingRL / mu_band; and (Panel B) the advantage isL-gated, with an exact collapse to a tie atL = 1under full band overlap. Writesfigures/fig_synthetic.pdf.depth_amplification.py- the conditional depth-amplification result (the depth proposition). A faithful depth-DFourier neural operator toy (spectral band mixing, a full-rank pointwise-local map, atanhnonlinearity that spreads frequency content). Measures the estimation dimensiondim(M_D) = rank Jof each format by analytic autograd, and shows it is exactly linear in depth in the non-saturated regime, then saturates at the predicted boundaryD* ~ C^2 / (RL). Writesfigures/fig_depth.pdf.four_format_ordering.py- the complete variance-ordering theorem (all four formats). Fixed-channel reduction, where each format is a nested linear subspace of the CP frequency-coefficient space. Verifies that the least-squares excess risk of each format equalssigma^2 * dim / nand that the dimensions realize the orderingblock-term (K) <= Tucker/TT (RK) <= CP (RLK), with the measured risk ratios approachingRandRL. Writesfigures/fig_ordering.pdf.proportional_regime.py- the proportional-regime (random-matrix) result. Sweeps the sample sizenacross both formats' interpolation thresholds and checks the exact inverse-Wishart / ridgeless risk formulas, that the CP risk peaks at its thresholdn = d_CPwhile block-term stays smooth (double-descent avoidance), and that the separation ratio diverges nearn = d_CPand recovers the classicalRL/mu_bandat largen. Writesfigures/fig_proportional.pdf.
pip install numpy matplotlib torch
python3 synthetic_separation.py
python3 depth_amplification.py
python3 four_format_ordering.py
python3 proportional_regime.py
Each script prints the measured numbers it verifies and writes its figure into code/figures/ (self-contained; the scripts never write into manuscript/). The manuscript keeps its own committed copies in manuscript/figures/; to refresh them after a run, from the project root:
cp code/figures/*.pdf manuscript/figures/
code/figures/*.pdf are generated output (listed in .depositignore); the scripts themselves are part of the deposit. Expected headline numbers (as reported in the manuscript):
synthetic_separation.py: Panel B full-overlap CP/block-term ratio byL = [1,2,3,4]is[1.0, 1.99, 2.79, 4.34]against theory[1,2,3,4](exact collapse to1.0atL = 1).depth_amplification.py: forD <= 4, CPdim(M_D) = 168, 336, 504, 672and block-term76, 152, 228, 304(each exactlyDtimes the single-layer value, so the gap is92 D); saturation sets in exactly atD* = C^2 / RL = 4.four_format_ordering.py: atK = 12, R = 3, L = 2, the dimensions are block-term12, Tucker/TT36, CP72(that isK,RK,RLK), and the measured risk ratios versus block-term are2.93(theoryR = 3) and5.43(theoryRL = 6), the small undershoot being the finite-sample andO(1/K)correction.proportional_regime.py: atK = 8, R = 3, L = 2(sod_BT = 8,d_CP = 48), the CP-to-block-term risk ratio is about60near the CP interpolation threshold and recovers the classicalRL/mu_band = 6(measured6.42) at largen, and the CP risk peaks atn = 48while block-term stays smooth.
All four scripts seed their generators, so the printed numbers are reproducible run to run. synthetic_separation.py, four_format_ordering.py, and proportional_regime.py are pure NumPy; depth_amplification.py uses PyTorch in float64 on CPU (no GPU needed) for a clean Jacobian-rank threshold.