Computational verification of key components in the operator-Fredholm approach to BSD conjecture.
This repo is demo pack for "Birch–Swinnerton–Dyer via an Operator–Fredholm Method" research by miruka.
Main document loccated at https://zenodo.org/records/17201882
- Windows with WSL (Windows Subsystem for Linux)
- SageMath 9.5 or later installed in WSL
- Python 3.8+ in WSL
- NumPy
# Open WSL (from PowerShell or CMD):
wsl -d Ubuntu-22.04 # or your WSL distribution name
# Navigate to project directory
cd /mnt/'your dir' # adjust path as needed
# Make scripts executable
chmod +x run_all.sh
# Optional: Create Python virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt# Open WSL and navigate to project
wsl -d Ubuntu-22.04
cd /mnt/'your dir'
# Run all demos for curve 37a1 (rank 1)
./run_all.sh 37a1
# Run for curve 11a1 (rank 0)
./run_all.sh 11a1
# Run with custom log directory
./run_all.sh 37a1 my_logs# Run directly from Windows PowerShell
wsl -d Ubuntu-22.04 -e bash -c "cd /mnt/'your dir'
&& ./run_all.sh 37a1"sage src/01_curve_data.sage <curve_label> [B=5000]
# Examples:
sage src/01_curve_data.sage 37a1 # Default B=5000
sage src/01_curve_data.sage 11a1 10000 # Compute a_p for p < 10000Output: data/a_ell_<curve>_B<B>.csv
sage src/02_principal_part_demo.sage <curve> [eps=1e-3] [B=30000] [eta=1.2]
# Examples:
sage src/02_principal_part_demo.sage 37a1 # All defaults
sage src/02_principal_part_demo.sage 37a1 1e-4 # Smaller eps
sage src/02_principal_part_demo.sage 37a1 1e-3 50000 1.5 # Higher precisionOutput: data/principal_part_<curve>_<timestamp>.json
sage src/03_gap_poly_demo.sage <curve> [Lmax=29] [Mmax=2]
# Examples:
sage src/03_gap_poly_demo.sage 37a1 # Default parameters
sage src/03_gap_poly_demo.sage 37a1 37 3 # More featuresOutput: data/gap_poly_<curve>_<timestamp>.json
python3 src/04_renorm_matrix_demo.py <conductor>
# Examples:
python3 src/04_renorm_matrix_demo.py 37 # For curve 37a1
python3 src/04_renorm_matrix_demo.py 11 # For curve 11a1Output: data/renorm_matrix_<timestamp>.npz
sage src/05_kappa_leading_coeff.sage <curve>
# Examples:
sage src/05_kappa_leading_coeff.sage 37a1
sage src/05_kappa_leading_coeff.sage 11a1Output: data/bsd_components_<curve>_<timestamp>.json
# In WSL
python3 src/view_results.py 37a1
# View results for default curve (37a1)
python3 src/view_results.py
# Save summary to file
python3 src/view_results.py 37a1 > results_summary.txtThe view_results.py script:
- Finds the latest saved data files for a curve
- Displays all computed values in a readable format
- Shows results from all 5 scripts in one place
- Does NOT save anything - only reads and displays
The project creates two types of output:
Structured data files with all numerical results:
- JSON files: Human-readable, contains all computed values, parameters, and results
- NPZ files: NumPy format for matrices and arrays
- CSV files: Simple tabular data (Fourier coefficients)
Text files capturing console output from each script run:
- Shows what each script prints during execution
- Useful for debugging and documentation
- Created by
run_all.shusingteecommand
Example:
data/principal_part_37a1_20250924_201201.json- Actual computation resultslogs/02_principal_part_37a1.txt- Console output from running the script
See OUTPUT_FORMAT.md for detailed description of data file formats.
- 11a1: conductor 11, rank 0, L(E,1) ≠ 0
- 14a1: conductor 14, rank 0
- 15a1: conductor 15, rank 0
- 37a1: conductor 37, rank 1, minimal example
- 43a1: conductor 43, rank 1
- 53a1: conductor 53, rank 1
- 389a1: conductor 389, rank 2
- 5077a1: conductor 5077, rank 3
- Demos are illustrative; they validate the shape of the method
- Computation time increases with conductor and rank
- For production use, increase parameters B, X, Lmax for better precision
- All timestamps are in local time
- Fourier coefficients a_p for p < B not dividing N
- Tamagawa numbers at bad primes
- Torsion subgroup structure
- Rank (via Sage's built-in methods)
- Windowed Hecke operator t_X(s) with C^1 cutoff
- Principal part matching: log det_fin(I - A_X(s)) vs log L(E,s)
- Slope verification for rank
- Individual term contributions
- Hecke separator polynomial P(T) with P(f)=1
- Feature vectors for all newforms at level N
- Spectral gap δ = 1 - max|P(g)| for g≠f
- Polynomial coefficients via constrained least squares
- R×R Vandermonde-style matrix (R = 1 + #multiplicative primes)
- Matrix conditioning and determinant
- Eigenvalue computation
- Handles archimedean and multiplicative normalization
- Complete BSD formula components
- L^(r)(E,1)/r! via Dokchitser's algorithm
- Regulator, periods, Tamagawa numbers
- Generator points and heights (when available)
Install WSL from PowerShell (as Administrator):
wsl --install -d Ubuntu-22.04Install SageMath in WSL:
sudo apt update
sudo apt install sagemathMake scripts executable:
chmod +x run_all.shActivate the virtual environment in WSL:
source .venv/bin/activateFor large conductors, reduce parameters:
- Lower B in script 02
- Lower Lmax in script 03