# samuelmoulin/pell_norm_forms architecture

> Architecture diagram of the GitHub repository samuelmoulin/pell_norm_forms, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/samuelmoulin/pell_norm_forms
- Repository: https://github.com/samuelmoulin/pell_norm_forms

## Overview

This is a research-computing repository for exploring, sieving, analyzing, and certifying Pell norm forms, organized as independent pipelines for five papers. The main user workflow is to run a paper’s scripts, produce arithmetic classifications or analytical results, and preserve outputs in its corresponding proof-and-log directory. The graph retains the README’s documented density, orbital-mapping, Kummer-model, structural-arithmetic, and generalization branches. Relationships between unsampled components are included only where the README documents them; the tree uses `proof_and_logs/`, despite the README’s differing spelling.

Main entry points: [`proof_and_logs`](https://github.com/samuelmoulin/pell_norm_forms/tree/main/proof_and_logs) (Paper outputs), [`scripts/Paper_01/generateur_diviseurs.c`](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_diviseurs.c) (Divisor candidates), [`scripts/Paper_01/crible_nsw_omp.c`](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/crible_nsw_omp.c) (NSW prime sieve), [`scripts/Paper_01/generateur_certificats.gp`](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_certificats.gp) (ECPP certificates)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_census["Prime census"]
  node_divisor_candidates["Divisor candidates"]
  node_nsw_sieve["NSW prime sieve<br/>[crible_nsw_omp.c]"]
  node_nsw_baseline["Sequential sieve<br/>[crible_nsw.c]"]
  node_ecpp["ECPP certificates"]
  node_class_numbers["Class numbers<br/>[quadclassunit.py]"]
  node_paper1_checks["Pell checks<br/>[pell_lemma.c]"]
end

subgraph group_orbit["Orbit densities"]
  node_orbit_sieve["Orbit density sieve<br/>[pell_orbits_v3.c]"]
  node_density_sieve["Density sieve"]
  node_orbit_mapping["Orbit mapping"]
  node_mapping_variants["Mapping variants"]
  node_csv_engine["CSV engine<br/>[moteur_csv.c]"]
  node_density_analysis["Density analysis<br/>[sum_mats.py]"]
  node_kummer_validation["Kummer validation<br/>[Pell_validation.py]"]
  node_immersion_analysis["Immersion analysis"]
  node_kummer_models["Kummer models"]
  node_paper2_checks["Pell checks<br/>[pell_lemma.c]"]
end

subgraph group_structure["Structural arithmetic"]
  node_structural_checks["Structural checks<br/>[pell_lemma.c]"]
  node_pocklington["Pocklington certificates"]
  node_purity["Purity analysis<br/>[purity_8192.py]"]
  node_structural_analysis["Structural analysis<br/>[modulo.py]"]
end

subgraph group_generalize["Generalization"]
  node_general_validation["Generalized validation<br/>[Pell_validation.py]"]
  node_fibonacci_sieve["Fibonacci-Lucas sieve"]
  node_orbit_dynamics["Orbit dynamics"]
  node_covering_systems["Covering systems"]
  node_general_immersion["Immersion analysis"]
  node_general_checks["Pell checks<br/>[pell_lemma.c]"]
end

subgraph group_synthesis["Monograph synthesis"]
  node_synthesis_candidates["Divisor candidates"]
  node_synthesis_sieve["Parallel prime sieve<br/>[crible_nsw_omp.c]"]
  node_synthesis_certificates["ECPP certificates"]
end

node_researcher(("Researcher"))
node_paper_outputs[("Paper outputs")]

node_researcher -->|"runs census"| node_divisor_candidates
node_researcher -->|"runs sieve"| node_nsw_sieve
node_researcher -->|"runs alternative"| node_nsw_baseline
node_researcher -->|"runs certification"| node_ecpp
node_researcher -->|"runs analysis"| node_class_numbers
node_researcher -->|"runs checks"| node_paper1_checks
node_divisor_candidates -->|"writes candidates"| node_paper_outputs
node_nsw_sieve -->|"writes sieve log"| node_paper_outputs
node_ecpp -->|"writes certificates"| node_paper_outputs
node_class_numbers -->|"writes logs"| node_paper_outputs
node_researcher -->|"runs density jobs"| node_orbit_sieve
node_researcher -->|"runs mapping"| node_orbit_mapping
node_researcher -->|"runs validation"| node_kummer_validation
node_orbit_sieve -->|"records density runs"| node_paper_outputs
node_orbit_mapping -->|"writes mapping data"| node_paper_outputs
node_density_sieve -->|"records density data"| node_paper_outputs
node_mapping_variants -->|"writes mapping data"| node_paper_outputs
node_csv_engine -->|"writes CSV data"| node_paper_outputs
node_density_analysis -->|"records matrices"| node_paper_outputs
node_kummer_validation -->|"records validation"| node_paper_outputs
node_immersion_analysis -->|"records states"| node_paper_outputs
node_kummer_models -->|"records models"| node_paper_outputs
node_researcher -->|"runs certification"| node_pocklington
node_researcher -->|"runs checks"| node_structural_checks
node_pocklington -->|"writes certificates"| node_paper_outputs
node_researcher -->|"runs validation"| node_general_validation
node_researcher -->|"runs sieve"| node_fibonacci_sieve
node_general_validation -->|"records results"| node_paper_outputs
node_fibonacci_sieve -->|"records results"| node_paper_outputs
node_researcher -->|"runs synthesis"| node_synthesis_candidates
node_researcher -->|"runs synthesis"| node_synthesis_sieve
node_researcher -->|"runs synthesis"| node_synthesis_certificates
node_synthesis_candidates -.->|"writes audit data"| node_paper_outputs
node_synthesis_sieve -.->|"writes audit data"| node_paper_outputs
node_synthesis_certificates -.->|"writes certificates"| node_paper_outputs

click node_divisor_candidates "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_diviseurs.c"
click node_nsw_sieve "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/crible_nsw_omp.c"
click node_nsw_baseline "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/crible_nsw.c"
click node_ecpp "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_certificats.gp"
click node_class_numbers "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/quadclassunit.py"
click node_paper1_checks "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/pell_lemma.c"
click node_orbit_sieve "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/pell_orbits_v3.c"
click node_density_sieve "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/crible_densites_10e9.c"
click node_orbit_mapping "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/fast_cartographie_pell.c"
click node_mapping_variants "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/cartographie_pell.c"
click node_csv_engine "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/moteur_csv.c"
click node_density_analysis "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/sum_mats.py"
click node_kummer_validation "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/Pell_validation.py"
click node_immersion_analysis "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/analyser_grille_immersion.c"
click node_kummer_models "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/modeles_kummer_chebotarev.py"
click node_paper2_checks "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/pell_lemma.c"
click node_structural_checks "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/pell_lemma.c"
click node_pocklington "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/certificateur_pocklington.c"
click node_purity "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/purity_8192.py"
click node_structural_analysis "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/modulo.py"
click node_general_validation "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/Pell_validation.py"
click node_fibonacci_sieve "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/crible_fibonacci_lucas.c"
click node_orbit_dynamics "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/dynamique_orbites.py"
click node_covering_systems "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/exploration_systemes_couvrants.py"
click node_general_immersion "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/analyser_immersion.c"
click node_general_checks "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/pell_lemma.c"
click node_synthesis_candidates "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/generateur_diviseurs.c"
click node_synthesis_sieve "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/crible_nsw_omp.c"
click node_synthesis_certificates "https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/generateur_certificats.gp"
click node_paper_outputs "https://github.com/samuelmoulin/pell_norm_forms/tree/main/proof_and_logs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_divisor_candidates,node_nsw_sieve,node_nsw_baseline,node_ecpp,node_class_numbers,node_paper1_checks toneBlue
class node_orbit_sieve,node_density_sieve,node_orbit_mapping,node_mapping_variants,node_csv_engine,node_density_analysis,node_kummer_validation,node_immersion_analysis,node_kummer_models,node_paper2_checks,node_paper_outputs toneAmber
class node_structural_checks,node_pocklington,node_purity,node_structural_analysis toneMint
class node_general_validation,node_fibonacci_sieve,node_orbit_dynamics,node_covering_systems,node_general_immersion,node_general_checks toneRose
class node_synthesis_candidates,node_synthesis_sieve,node_synthesis_certificates,node_researcher toneIndigo
```

## Components

### Prime census

- [Divisor candidates](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_diviseurs.c): `scripts/Paper_01/generateur_diviseurs.c`
- [NSW prime sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/crible_nsw_omp.c): `scripts/Paper_01/crible_nsw_omp.c`
- [Sequential sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/crible_nsw.c): `scripts/Paper_01/crible_nsw.c`
- [ECPP certificates](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/generateur_certificats.gp): `scripts/Paper_01/generateur_certificats.gp`
- [Class numbers](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/quadclassunit.py): `scripts/Paper_01/quadclassunit.py`
- [Pell checks](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_01/pell_lemma.c): `scripts/Paper_01/pell_lemma.c`

### Orbit densities

- [Orbit density sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/pell_orbits_v3.c): `scripts/Paper_02/pell_orbits_v3.c`
- [Density sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/crible_densites_10e9.c): `scripts/Paper_02/crible_densites_10e9.c`
- [Orbit mapping](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/fast_cartographie_pell.c): `scripts/Paper_02/fast_cartographie_pell.c`
- [Mapping variants](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/cartographie_pell.c): `scripts/Paper_02/cartographie_pell.c`
- [CSV engine](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/moteur_csv.c): `scripts/Paper_02/moteur_csv.c`
- [Density analysis](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/sum_mats.py): `scripts/Paper_02/sum_mats.py`
- [Kummer validation](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/Pell_validation.py): `scripts/Paper_02/Pell_validation.py`
- [Immersion analysis](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/analyser_grille_immersion.c): `scripts/Paper_02/analyser_grille_immersion.c`
- [Kummer models](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/modeles_kummer_chebotarev.py): `scripts/Paper_02/modeles_kummer_chebotarev.py`
- [Pell checks](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_02/pell_lemma.c): `scripts/Paper_02/pell_lemma.c`

### Structural arithmetic

- [Structural checks](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/pell_lemma.c): `scripts/Paper_03/pell_lemma.c`
- [Pocklington certificates](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/certificateur_pocklington.c): `scripts/Paper_03/certificateur_pocklington.c`
- [Purity analysis](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/purity_8192.py): `scripts/Paper_03/purity_8192.py`
- [Structural analysis](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_03/modulo.py): `scripts/Paper_03/modulo.py`

### Generalization

- [Generalized validation](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/Pell_validation.py): `scripts/Paper_04/Pell_validation.py`
- [Fibonacci-Lucas sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/crible_fibonacci_lucas.c): `scripts/Paper_04/crible_fibonacci_lucas.c`
- [Orbit dynamics](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/dynamique_orbites.py): `scripts/Paper_04/dynamique_orbites.py`
- [Covering systems](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/exploration_systemes_couvrants.py): `scripts/Paper_04/exploration_systemes_couvrants.py`
- [Immersion analysis](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/analyser_immersion.c): `scripts/Paper_04/analyser_immersion.c`
- [Pell checks](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_04/pell_lemma.c): `scripts/Paper_04/pell_lemma.c`

### Monograph synthesis

- [Divisor candidates](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/generateur_diviseurs.c): `scripts/Paper_05/generateur_diviseurs.c`
- [Parallel prime sieve](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/crible_nsw_omp.c): `scripts/Paper_05/crible_nsw_omp.c`
- [ECPP certificates](https://github.com/samuelmoulin/pell_norm_forms/blob/main/scripts/Paper_05/generateur_certificats.gp): `scripts/Paper_05/generateur_certificats.gp`

### Other components

- **Researcher**
- [Paper outputs](https://github.com/samuelmoulin/pell_norm_forms/tree/main/proof_and_logs): `proof_and_logs`

## Connections

- Researcher → Divisor candidates: runs census (evidence: `README.md`)
- Researcher → NSW prime sieve: runs sieve (evidence: `README.md`)
- Researcher → Sequential sieve: runs alternative (evidence: `README.md`)
- Researcher → ECPP certificates: runs certification (evidence: `README.md`)
- Researcher → Class numbers: runs analysis (evidence: `README.md`)
- Researcher → Pell checks: runs checks (evidence: `README.md`)
- Divisor candidates → Paper outputs: writes candidates (evidence: `README.md`)
- NSW prime sieve → Paper outputs: writes sieve log (evidence: `README.md`)
- ECPP certificates → Paper outputs: writes certificates (evidence: `README.md`)
- Class numbers → Paper outputs: writes logs (evidence: `README.md`)
- Researcher → Orbit density sieve: runs density jobs (evidence: `README.md`)
- Researcher → Orbit mapping: runs mapping (evidence: `README.md`)
- Researcher → Kummer validation: runs validation (evidence: `README.md`)
- Orbit density sieve → Paper outputs: records density runs (evidence: `README.md`)
- Orbit mapping → Paper outputs: writes mapping data (evidence: `README.md`)
- Density sieve → Paper outputs: records density data (evidence: `README.md`)
- Mapping variants → Paper outputs: writes mapping data (evidence: `README.md`)
- CSV engine → Paper outputs: writes CSV data (evidence: `README.md`)
- Density analysis → Paper outputs: records matrices (evidence: `README.md`)
- Kummer validation → Paper outputs: records validation (evidence: `README.md`)
- Immersion analysis → Paper outputs: records states (evidence: `README.md`)
- Kummer models → Paper outputs: records models (evidence: `README.md`)
- Researcher → Pocklington certificates: runs certification (evidence: `README.md`)
- Researcher → Structural checks: runs checks (evidence: `README.md`)
- Pocklington certificates → Paper outputs: writes certificates (evidence: `README.md`)
- Researcher → Generalized validation: runs validation (evidence: `README.md`)
- Researcher → Fibonacci-Lucas sieve: runs sieve (evidence: `README.md`)
- Generalized validation → Paper outputs: records results (evidence: `README.md`)
- Fibonacci-Lucas sieve → Paper outputs: records results (evidence: `README.md`)
- Researcher → Divisor candidates: runs synthesis (evidence: `README.md`)
- Researcher → Parallel prime sieve: runs synthesis (evidence: `README.md`)
- Researcher → ECPP certificates: runs synthesis (evidence: `README.md`)
- Divisor candidates → Paper outputs: writes audit data
- Parallel prime sieve → Paper outputs: writes audit data
- ECPP certificates → Paper outputs: writes certificates
