Repository navigation
Prepare native loop families directly from typed FeynKit models - #12
Open
huashengshao wants to merge 3 commits into
Open
huashengshao wants to merge 3 commits into
huashengshao wants to merge 3 commits into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The extracted Rust family generator still needs model-derived current and loop tables that were previously produced in Python. Add native
PreparedModel,ModelBlockTable,ModelLoopCatalogueandPreparedFamiliesAPIs 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 canonicalFamilyInputfor 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 commitde858c88(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:
cargo treeconfirms one source revision for all FeynKit, Ninja and Symbolica-family packages; formatting and diff checks pass.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.