IntegralMapping

Symbolica documentation for getting started, symbolic expressions, numerical evaluation, pattern matching, and APIs in Python and Rust.

IntegralMapping

class IntegralMapping

A 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_map

momentum_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_rules

Methods

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) -> Expression

Apply 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.