Physics[FeynmanIntegral][TensorReduce] - reduce a tensor Feynman integral to a linear combination of scalar Feynman integrals
Calling Sequence
TensorReduce(expression, outputstep = N)
Parameters
expression
-
any expression, equation, set, list or matrix of them, typically involving Feynman tensor integrals
outputstep = N
optional, the left-hand side is outputstep and the right-hand side N is a number from 1 to 7 indicating the step at which the tensor reduction is interrupted and the intermediate result returned
Description
When computing the scattering matrix S for a particle process (momentum representation, see FeynmanDiagrams) the result, at one or more loops, contains Feynman integrals. Depending on the fields entering the interaction Lagrangian, the numerator of the integrand of such an integral may involve the loop momentum integration variable (one or a product of them) with free spacetime indices. That is the case of a tensor Feynman integral. Generally speaking, tensor integrals are computed by first reducing them to scalar integrals, for which there exist different approaches. In this context, TensorReduce reduces to scalar integrals the tensor integrals found in expression, using the Passarino-Veltman reduction approach.
There are two key observations in the Passarino-Veltman scheme. One is that a 1-loop tensor Feynman integral can always be expressed as a linear combination of tensorial expressions constructed with the external momenta Pnμ and the metric gμ,ν, That is, as a finite sum of the form ∑n=1N⁡Cn⁢tnμ,ν,.... The tnμ,ν,... have the free indices of (possibly a product of) the loop momentum in the numerator of the integrand. These tensorial structures are constructed by taking products of the external momenta Pjμ entering the Feynman integral between themselves and the metric gμ,ν. The Maple command that constructs such a tensor basis of N structures tnμ,ν,... is FeynmanIntegral:-TensorBasis.
The other idea behind this algorithm is that the scalar product of the loop momentum pμ found in the numerator of the integrand with tensor structures constructed with the external momentum Pμ can be expressed as a linear combination of inverse propagators.
Combining both ideas, the coefficients Cn entering ∑n=1N⁡Cn⁢tnμ,ν,... are computed by first, constructing an equation with the Feynman integral on the left-hand side and that expansion with the Cn as unknown coefficients on the right-hand side. Then contracting this equation with the tensorial structures that, on the left-hand side, introduce inverse propagators, a system of equations is constructed and solved for the C[n].
Two relevant computational tools for performing the reduction and other manipulations of Feynman integrals are the commands ToAbstractRepresentation and FromAbstractRepresentation. These commands map, back and forth, a given Feynman integral into and from an abstract representation that contains all the information regarding the propagators present, external momenta and corresponding masses, the loop momentum integration, and the free indices.
The Passarino-Veltman algorithm has several steps, each of which can be of interest on its own, or simply to follow the computation step-by-step. For this purpose, you can use the optional argument outputstep = n, where n is any positive integer up to 7. The result of each step is as follows:
outputstep = 1: an equation, with the Feynman tensor integral in the left-hand side and the linear combination of tensor structures constructed with the external momentum Pμ and the metric on the right-hand side.
outputstep equal to 2, 3 or 4: a Vector of equations, each of which is constructed by contracting the output of step 1 with tensor structures that, when contracted with the loop momentum in the numerator of the integrand, results in inverse propagators. These scalar products are first represented (step 2) then the contractions are expressed in a more convenient form on the right-hand sides (step 3), finally the actual reduction - the core of the process - that happens when performing the contraction on the left-hand sides that results in inverse propagators (step 4). In these three steps, the integrals are represented in abstract form. These results can be manipulated further using ToAbstractRepresentation and FromAbstractRepresentation.
outputstep = 5: an equation with the output of the step 1 and the a set of equations containing the solution for the coefficients Cn
outputstep = 6: an equation with the left-hand side equal to the given Feynman tensor integral and the right hand side already as a linear combination of scalar Feynman integrals written in the abstract representation used in the FeynmanIntegral package (see the commands ToAbstractRepresentation, FromAbstractRepresentation).
outputstep = 7: the same as omitting outputstep = ... entirely, the result is the full reduction of the tensor integral to a linear combination of scalar Feynman integrals.
Examples
with(Physics):
with(FeynmanIntegral);
Evaluate,ExpandDimension,FromAbstractRepresentation,Parametrize,Series,SumLookup,TensorBasis,TensorReduce,ToAbstractRepresentation,ε,ϵ
To remain closer to textbook notation, display the imaginary unit with a lowercase i
interface(imaginaryunit = i):
The simplest case of a massive φ field, the integral containing two propagators and one external momentum P1μ to which corresponds the mass m1.
%FeynmanIntegral(p__1[~mu]/((p__1^2 - m__phi^2 + i * epsilon)*((p__1 - P__1)^2 - m__1^2 + i * epsilon)), p__1);
∫p__1⁢μ⁢μp__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4
The reduction of this tensor integral to a linear combination of scalar Feynman integrals all in one go:
(2) = TensorReduce((2));
∫p__1⁢μ⁢μp__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=−m__12−m__φ2−P__1·P__1⁢∫1p__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4+∫1p__12−m__φ2+ⅈ⁢εⅆp__1 4−∫1p__1−P__12−m__12+ⅈ⁢εⅆp__1 4⁢P__1⁢μ⁢μ2⁢P__1·P__1
Note that, by design, the reduction process does not evaluate the integrals so that one can follow the reduction process clearly. The evaluation can be performed next by passing this result to Evaluate
(2) = Evaluate(rhs((3)));
Note also that Evaluate automatically calls TensorReduce to perform the reduction of tensor integrals when that is the case. So, passing the Feynman integral directly to Evaluate, skipping the interactive TensorReduce step, results in the same
Evaluate((2));
−−ⅈ⁢m__12−m__φ2−P__1·P__1⁢π2−ϵ⁢∑n=0∞⁡∑n__1=0∞⁡−Γ⁡n+n__1+1⁢m__φ−2⁢ϵ−2⁢n−2⁢n__1⁢P__12⁢n__1⁢Γ⁡ϵ+n+n__1⁢−m__12+m__φ2nΓ⁡1+n⁢Γ⁡2⁢n__1+n+2−ⅈ⁢π2−ϵ⁢m__φ2−2⁢ϵ⁢Γ⁡−1+ϵ+ⅈ⁢π2−ϵ⁢m__12−2⁢ϵ⁢Γ⁡−1+ϵ⁢P__1⁢μ⁢μ2⁢P__1·P__1
Back to the reduction process, this is how the integral is processed one step at a time. First, check the abstract representation that will be used in the output step by step:
ToAbstractRepresentation((2));
𝕋⁢μ⁢μ⁡2,0,m__φ2,−P__1,m__12,p__1,0
In this output we see the integral has 2 propagators, the first one has 0 external momentum (i.e. none) and mass mφ2. The second propagator has external momentum −P1 to which corresponds the mass m1. Finally the loop momentum integration variable is p1 and the last operand, in this example equal to 0 means there are no contracted powers of p1, the loop integration variable, in the numerator of the integrand. To retrieve the non-abstract form from the abstract one you can use
FromAbstractRepresentation((6));
The first step of the Passarino-Veltman reduction, the main equation
TensorReduce((2), step = 1);
* Partial match of 'step' against keyword 'outputstep'
∫p__1⁢μ⁢μp__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=C1⁢P__1⁢μ⁢μ
The right-hand side contains only one element. That is so because the tensor basis for this problem, where there is only one free spacetime index in the numerator of the integral and only one external momentum P1 is given by just
TensorBasis([P__1], [~mu]);
P__1⁢μ⁢μ
The second step
TensorReduce((2), step = 2);
P__1μ⁢𝕋⁢μ⁢μ⁡2,0,m__φ2,−P__1,m__12,p__1,0=P__1μ⁢C1⁢P__1⁢μ⁢μ
The third step only represents the scalar products in the right-hand side in a more convenient form
TensorReduce((2), step = 3);
P__1μ⁢𝕋⁢μ⁢μ⁡2,0,m__φ2,−P__1,m__12,p__1,0=C1⁢P__1·P__1
The fourth step is the most important one, where the actual reduction to scalar integrals, represented in abstract form, is performed
TensorReduce((2), step = 4);
−𝕋⁡1,0,m__φ2,p__1,02+𝕋⁡1,−P__1,m__12,p__1,02+P__1·P__1−m__12+m__φ2⁢𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,02=C1⁢P__1·P__1
To see this result in standard representation you can use
FromAbstractRepresentation((12));
−∫1p__12−m__φ2+ⅈ⁢εⅆp__1 42+∫1p__1−P__12−m__12+ⅈ⁢εⅆp__1 42+P__1·P__1−m__12+m__φ2⁢∫1p__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 42=C1⁢P__1·P__1
The fifth step processes this output by solving for the Cn coefficients, expressing them in terms of the scalar integrals of step 4.
TensorReduce((2), step = 5);
∫p__1⁢μ⁢μp__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=C1⁢P__1⁢μ⁢μwhereC1=−𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0⁢m__12+𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0⁢m__φ2+P__1·P__1⁢𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0−𝕋⁡1,0,m__φ2,p__1,0+𝕋⁡1,−P__1,m__12,p__1,02⁢P__1·P__1
The sixth step combines this result inserting, in the output of step 1, the values of the Cn
TensorReduce((2), step = 6);
∫p__1⁢μ⁢μp__12−m__φ2+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=−𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0⁢m__12+𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0⁢m__φ2+P__1·P__1⁢𝕋⁡2,0,m__φ2,−P__1,m__12,p__1,0−𝕋⁡1,0,m__φ2,p__1,0+𝕋⁡1,−P__1,m__12,p__1,0⁢P__1⁢μ⁢μ2⁢P__1·P__1
Finally, either passing step = 7 or omitting the step = ... altogether, the whole reduction is performed as done at the beginning (see equation (3)).
An example with two free indices
%FeynmanIntegral(p__1[~mu]*p__1[~nu]/((p__1^2 - m__1^2 + I*epsilon)*((p__1 - P__1)^2 - m__1^2 + i*epsilon)), p__1);
∫p__1⁢μ⁢μ⁢p__1⁢ν⁢νI⁢ε−m__12+p__12⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4
The reduction of this tensor integral to scalar integrals is given by
(16) = TensorReduce((16));
∫p__1⁢μ⁢μ⁢p__1⁢ν⁢νI⁢ε−m__12+p__12⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=4⁢P__1·P__1⁢g⁢μ,ν⁢μ,ν⁢P__1·P__124+P__1⁢ν⁢ν⁢−2+ϵ⁢P__1⁢μ⁢μ2−m__12⁢g⁢μ,ν⁢μ,ν⁢P__1·P__1+m__12⁢P__1⁢μ⁢μ⁢P__1⁢ν⁢ν⁢∫1p__12−m__12+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4+−2⁢g⁢μ,ν⁢μ,ν⁢P__1·P__12+4⁢P__1⁢ν⁢ν⁢−1+ϵ⁢P__1⁢μ⁢μ−m__12⁢g⁢μ,ν⁢μ,ν⁢P__1·P__1−2⁢m__12⁢P__1⁢μ⁢μ⁢P__1⁢ν⁢ν⁢−2+ϵ⁢∫1p__1−P__12−m__12+ⅈ⁢εⅆp__1 4+2⁢∫1p__12−m__12+ⅈ⁢εⅆp__1 4⁢P__12+m__12−P__1·P__1⁢g⁢μ,ν⁢μ,ν⁢P__1·P__12+P__1⁢ν⁢ν⁢−2+ϵ⁢P__1⁢μ⁢μ−12+8⁢ϵ⁢P__1·P__12
To understand this result, start checking the tensor basis, which in this case involves two objects
TensorBasis([P__1], [~mu, ~nu]);
g⁢μ,ν⁢μ,ν,P__1⁢μ⁢μ⁢P__1⁢ν⁢ν
The key steps are 1, 2 and 4. Step 1 gives the expansion of the integral onto the tensor basis
TensorReduce((16), step = 1);
∫p__1⁢μ⁢μ⁢p__1⁢ν⁢νI⁢ε−m__12+p__12⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 4=C2⁢P__1⁢μ⁢μ⁢P__1⁢ν⁢ν+C1⁢g⁢μ,ν⁢μ,ν
Step 2 shows the system of equations; in each left-hand side, performing the contraction results in an inverse propagator that cancels with an existing one in the given integral
TensorReduce((16), step = 2);
gμ,ν⁢𝕋⁢μ,ν⁢μ,ν⁡2,0,m__12,−P__1,m__12,p__1,0=C1⁢4−2⁢ϵ+C2⁢P__1ν⁢P__1⁢ν⁢νP__1μ⁢P__1ν⁢𝕋⁢μ,ν⁢μ,ν⁡2,0,m__12,−P__1,m__12,p__1,0=P__1μ⁢P__1ν⁢C2⁢P__1⁢μ⁢μ⁢P__1⁢ν⁢ν+C1⁢P__1ν⁢P__1⁢ν⁢ν
Note the occurrence of a factor of the form 4−2⁢ϵ on the right-hand side of the first equation. Such factors arise from the contraction of the metric in dimension d=4−2⁢ϵ where 4 is the value of the dimension currently set, as shown by Setup⁡dimension.
Step 4 performs the contraction resulting in the system of equations for the Cn involving only scalar Feynman integrals
TensorReduce((16), step = 4);
𝕋⁡1,−P__1,m__12,p__1,0+m__12⁢𝕋⁡2,0,m__12,−P__1,m__12,p__1,0=C2⁢P__1·P__1−2⁢C1⁢−2+ϵP__1·P__12⁢𝕋⁡2,0,m__12,−P__1,m__12,p__1,04+−m__12+2⁢P__1·P__1⁢𝕋⁡1,−P__1,m__12,p__1,04+𝕋⁡1,0,m__12,p__1,0⁢P__12+m__12−P__1·P__14=P__1·P__1⁢C2⁢P__1·P__1+C1
To see, for instance, the second equation in standard integral notation you can use
FromAbstractRepresentation((21)[2]);
P__1·P__12⁢∫1p__12−m__12+ⅈ⁢ε⁢p__1−P__12−m__12+ⅈ⁢εⅆp__1 44+−m__12+2⁢P__1·P__1⁢∫1p__1−P__12−m__12+ⅈ⁢εⅆp__1 44+∫1p__12−m__12+ⅈ⁢εⅆp__1 4⁢P__12+m__12−P__1·P__14=P__1·P__1⁢C2⁢P__1·P__1+C1
Naturally, the reduction for more complicated integrals involves larger expressions, mainly in connection with the enlargement of the tensor basis. For example, the basis in the presence of two external momenta P1 and P2 and a product of three loop momentum p1 with spacetime free indices is given by
TensorBasis([P__1, P__2], [~mu, ~nu, ~rho], symmetrize = false);
g⁢μ,ν⁢μ,ν⁢P__1⁢ρ⁢ρ,g⁢μ,ν⁢μ,ν⁢P__2⁢ρ⁢ρ,P__1⁢μ⁢μ⁢P__1⁢ν⁢ν⁢P__1⁢ρ⁢ρ,P__1⁢μ⁢μ⁢P__1⁢ν⁢ν⁢P__2⁢ρ⁢ρ,P__1⁢μ⁢μ⁢P__2⁢ν⁢ν⁢P__2⁢ρ⁢ρ,P__2⁢μ⁢μ⁢P__2⁢ν⁢ν⁢P__2⁢ρ⁢ρ
and has 6 elements instead of the 2 of the previous example
nops((23));
6
See Also
Dgamma, Evaluate, FeynmanDiagrams, FeynmanIntegral[Overview], FromAbstractRepresentation, Parametrize, Physics, Physics conventions, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists, Setup, TensorBasis, ToAbstractRepresentation
References
[1] Smirnov, V.A., Feynman Integral Calculus. Springer, 2006.
[2] Weinberg, S., The Quantum Theory Of Fields. Cambridge University Press, 2005.
[3] Bogoliubov, N.N., and Shirkov, D.V. Quantum Fields. Benjamin Cummings, 1982.
Compatibility
The Physics[FeynmanIntegral][TensorReduce] command was introduced in Maple 2021.
For more information on Maple 2021 changes, see Updates in Maple 2021.
Download Help Document