Skip to content

Prepare native loop families directly from typed FeynKit models - #12

Open
huashengshao wants to merge 3 commits into
codex/native-loop-generatorsfrom
codex/native-model-producer
Open

huashengshao wants to merge 3 commits into
codex/native-loop-generatorsfrom
codex/native-model-producer

Conversation

@huashengshao

@huashengshao huashengshao commented Oct 23, 2026 •

Copy link
Copy Markdown

The extracted Rust family generator still needs model-derived current and loop tables that were previously produced in Python. Add native PreparedModel, ModelBlockTable, ModelLoopCatalogue and PreparedFamilies APIs backed by FeynKit's typed imported or built-in models. They cross outgoing fields, enumerate proper-subset current reachability, preserve distinct coupling-order monomials, derive loop templates and polynomial ranks, and build canonical FamilyInput for fresh processes.

Exact scalar specialization delegates to FeynKit's retained structural-zero proof and override checks. Admission verifies the actual simple vacuum pole q²-m²+i*m*width; different poles, powers, prefactors, nonzero chemical potentials and nonpolynomial momentum numerators fail explicitly. Immutable exact bindings can establish a vacuum specialization, while adjustable defaults alone cannot establish structural masslessness. Closed-loop multiplicities require both conjugate interaction multisets, self-conjugacy and complete oriented propagator signatures; each conjugate pair is grouped atomically.

This PR stacks on native generator PR8. It uses FeynKit 4b8569c0 (PR214, including structural-zero and literal-reality owner fixes) and the tested NinjaRS compatibility commit de858c88 (PR4), including the optional core Ninja pin, to maintain one native type source. Ninja's newer main/OneLOop combination is not adopted here.

Validation with Rust 1.97.1 and at most two build jobs:

  • All 27 focused preparation regressions pass, including model-derived QCD reachability, imported scalar channels, exact small overrides, malformed orders/poles, rational momentum rejection, duplicate interaction rules and conjugate representative fixed points.
  • All nine existing numerical reducer anchors pass, covering binary64, DoubleFloat and arbitrary precision, scalar/explicit-μ² integrals, Laurent poles, rational terms and failure handling.
  • cargo tree confirms one source revision for all FeynKit, Ninja and Symbolica-family packages; formatting and diff checks pass.
cargo test --offline --locked -p rusticol-loop-reduction preparation:: --lib -j2 -- --test-threads=1
cargo test --offline --locked -p rusticol-loop-reduction --test anchors -j2 -- --test-threads=1

The compact representation permits at most 64 external legs and 64 order names; subset enumeration remains exponential. These APIs produce structural families, not numerical tree currents, Lorentz/colour kernels, UV/R2 terms or complete physical amplitudes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants