28fb8adf

By: ValentinHirschi <valentin.hirschi@gmail.com>

accept loop-independent invariants and reverse-unitarity cuts in the IBP bridge

The FeynKit bridge now treats loop-independent calls declared Scalar, such as
the tensor invariant dot(q, q), as opaque parameters and maps them back
exactly. Family momenta are matched by head and label, FeynKit's routed edge
momenta are rejected, and built-ins, non-integer exponents and factors left
inside linear functions get specific errors. The index-collision guard now
looks inside invariants.

IBPFamily(family, cut=[...]) declares reverse-unitarity cut denominators. The
runtime bridge takes the existing CutConstraint, counts sectors excluded by it
as zero in the census, and gives targets outside the cut zero rules without a
search. The uncut integral order is kept, so a cut reduction equals the uncut
one with every integral outside the cut removed. Python reduce/apply drop
integrals outside the cut. Cuts with power shifts are rejected, as in the
solver's own cut preparation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Time to Start Worker time Duration Time to finish Idle
Config - - - - 422h59m46s
Eval - - - - -
Build - - - - -
Suite - - - - 422h59m46s