Reduction
Reduction
class ReductionA symbolic linear combination of scalar one-loop master integrals.
Created by oneloop.reduce; there is no direct constructor. terms contains (coefficient, MasterIntegral) pairs with exact dependence on the family’s symbolic dimension. to_expression assembles a symbolic sum; oneloop.reduction_coefficients expands it about d=4-2*eps for evaluation.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
assert len(reduction) == 1
coefficient, master = reduction.terms[0]
assert master.kind == "bubble"
expression = reduction.to_expression()Attributes
| Name | Description |
|---|---|
dimension |
Symbolic dimension used in the unreduced family and its exact coefficients. |
terms |
Linear-combination terms as (coefficient, MasterIntegral) pairs. |
dimension
Reduction.dimension: ExpressionSymbolic dimension used in the unreduced family and its exact coefficients.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
assert reduction.dimension == dterms
Reduction.terms: builtins.list[tuple[Expression, MasterIntegral]]Linear-combination terms as (coefficient, MasterIntegral) pairs.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
bubbles = [(c, m) for c, m in reduction.terms if m.kind == "bubble"]
assert len(bubbles) == 1Methods
| Name | Description |
|---|---|
__len__ |
Number of terms in this reduction; it can be zero for a vanishing integral. |
__repr__ |
Display the number of retained master-integral terms. |
simplify |
Cancel each rational coefficient to lowest terms and return a new reduction. |
to_expression |
Assemble primitive scalar-master calls with the squared scale last |
__len__
Reduction.__len__() -> builtins.intNumber of terms in this reduction; it can be zero for a vanishing integral.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
assert len(reduction) == len(reduction.terms)__repr__
Reduction.__repr__() -> builtins.strDisplay the number of retained master-integral terms.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
summary = repr(reduction)simplify
Reduction.simplify() -> ReductionCancel each rational coefficient to lowest terms and return a new reduction.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
simplified = reduction.simplify()
assert (simplified.to_expression() - reduction.to_expression()).together() == E("0")to_expression
Reduction.to_expression(mu_squared: typing.Optional[Expression] = None) -> ExpressionAssemble primitive scalar-master calls with the squared scale last.
The default scale is exactly one. This builds a symbolic expression; use master_coefficients or reduction_coefficients to obtain Laurent coefficients with native evaluation hooks.
Examples
from symbolica import S, E
from symbolica.community import hepkit as hep
from symbolica.community.hepkit import oneloop
d, k, p, s = S("d", "k", "p", "s")
kin = hep.Kinematics(d, momenta=[k, p]).with_scalar_product(p, p, s)
family = hep.IntegralFamily([k], [p], [kin.scalar_product(k, k),
kin.scalar_product(k-p, k-p)], kinematics=kin)
reduction = oneloop.reduce(family, [1, 1])
mu2 = S("mu2")
expression = reduction.to_expression(mu2)
assert expression == oneloop.B0(s, 0, 0, mu2)Parameters
mu_squared(Expression or None, optional) Squared renormalization scale; None uses one.