IntegralMapping
IntegralMapping
class IntegralMappingA verified real loop-momentum shift and propagator embedding.
Obtain a mapping from IntegralFamily.find_mapping or mapping_to. The loop determinant has absolute value one, so the loop integration measure is unchanged. Numerator substitutions use the same scalar-product rules that verified the propagator identities.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
D, k, p, s = S("D", "k", "p", "s")
d1, d2, x1, x2 = S("d1", "d2", "x1", "x2")
kin = hep.Kinematics(D, momenta=[k, p]).with_scalar_product(p, p, s)
denominators = [kin.scalar_product(k, k), kin.scalar_product(k-p, k-p)]
family = hep.IntegralFamily([k], [p], denominators, kinematics=kin)
m2 = S("m2")
denominators = [denominators[0] - m2, denominators[1]]
source = hep.IntegralFamily([k], [p], denominators, kinematics=kin)
target = hep.IntegralFamily([k], [p], list(reversed(denominators)), kinematics=kin)
mapping = source.find_mapping(target)
assert mapping is not None
target_powers = mapping.map_powers([1, 2])
assert target_powers == [2, 1]Attributes
| Name | Description |
|---|---|
denominator_map |
Zero-based target denominator index for each source denominator. |
momentum_rules |
Source loop momentum names paired with their target-coordinate images. |
denominator_map
IntegralMapping.denominator_map: builtins.list[builtins.int]Zero-based target denominator index for each source denominator.
Examples
Using the setup in the IntegralMapping class example:
mapped_powers = mapping.map_powers([1, 2])
slot_map = mapping.denominator_mapmomentum_rules
IntegralMapping.momentum_rules: builtins.list[tuple[Expression, Expression]]Source loop momentum names paired with their target-coordinate images.
Examples
Using the setup in the IntegralMapping class example:
loop_substitutions = mapping.momentum_rulesMethods
| Name | Description |
|---|---|
apply |
Apply the verified scalar-product substitutions simultaneously. |
map_powers |
Reorder signed powers and insert zeros for unused target propagators. |
apply
IntegralMapping.apply(expression: Expression) -> ExpressionApply the verified scalar-product substitutions simultaneously.
Examples
Using the setup in IntegralMapping:
transformed = mapping.apply(kin.scalar_product(k, p))Parameters
expression(Expression) Scalar expression in compact Spenso dot notation; contract tensors first.
map_powers
IntegralMapping.map_powers(powers: typing.Sequence[builtins.int]) -> builtins.list[builtins.int]Reorder signed powers and insert zeros for unused target propagators.
Examples
Using the setup in the IntegralMapping class example:
powers = mapping.map_powers([1, 2])Parameters
powers(list[int]) One signed power per source denominator, in source order.