FeynCalc manual (development version)

 

Loops

See also

Overview.

Propagators

Propagators (and products thereof) are represented via FeynAmpDenominator

FeynAmpDenominator[PropagatorDenominator[Momentum[q, D], m]]

1q2m2\frac{1}{q^2-m^2}

Again, for the external input we always use a shortcut

FAD[{q, m}]

1q2m2\frac{1}{q^2-m^2}

FAD[{q, m0}, {q + p1, m1}, {q + p2, m1}]

1(q2m02).((p1+q)2m12).((p2+q)2m12)\frac{1}{\left(q^2-\text{m0}^2\right).\left((\text{p1}+q)^2-\text{m1}^2\right).\left((\text{p2}+q)^2-\text{m1}^2\right)}

The presence of FeynAmpDenominator in an expression does not automatically mean that it is a loop amplitude. FeynAmpDenominator can equally appear in tree level amplitudes, where it stands for the usual 4-dimensional propagator.

In FeynCalc there is no explicit way to distinguish between loop amplitudes and tree-level amplitudes. When you use functions that manipulate loop integrals, you need to tell them explicitly what is your loop momentum.

Manipulations of FeynAmpDenominators

There are several functions, that are useful both for tree- and loop-level amplitudes, depending on what we want to do

For example, one can split one FeynAmpDenominator into many

FAD[{k1 - k2}, {k1 - p2, m}, {k2 + p2, m}]
FeynAmpDenominatorSplit[%]
% // FCE // StandardForm

1(k1k2)2.((k1p2)2m2).((k2+p2)2m2)\frac{1}{(\text{k1}-\text{k2})^2.\left((\text{k1}-\text{p2})^2-m^2\right).\left((\text{k2}+\text{p2})^2-m^2\right)}

1(k1k2)2((k1p2)2m2)((k2+p2)2m2)\frac{1}{(\text{k1}-\text{k2})^2 \left((\text{k1}-\text{p2})^2-m^2\right) \left((\text{k2}+\text{p2})^2-m^2\right)}

(*FAD[k1 - k2] FAD[{k1 - p2, m}] FAD[{k2 + p2, m}]*)

or combine several into one

FeynAmpDenominatorCombine[FAD[k1 - k2] FAD[{k1 - p2, m}] FAD[{k2 + p2, m}]]
% // FCE // StandardForm

1((k2+p2)2m2).(k1k2)2.((k1p2)2m2)\frac{1}{\left((\text{k2}+\text{p2})^2-m^2\right).(\text{k1}-\text{k2})^2.\left((\text{k1}-\text{p2})^2-m^2\right)}

(*FAD[{k2 + p2, m}, k1 - k2, {k1 - p2, m}]*)

At the tree-level we often do not need the FeynAmpDenominators but rather want to express everything in terms of explicit scalar products, in order to exploit kinematic simplifications. This is handled by FeynAmpDenominatorExplicit

FeynAmpDenominatorExplicit[FAD[{k2 + p2, m}, k1 - k2, {k1 - p2, m}]]

1(2(k1  k2)+k12+k22)(2(k1  p2)+k12m2+p22)(2(k2  p2)+k22m2+p22)\frac{1}{\left(-2 (\text{k1}\cdot \;\text{k2})+\text{k1}^2+\text{k2}^2\right) \left(-2 (\text{k1}\cdot \;\text{p2})+\text{k1}^2-m^2+\text{p2}^2\right) \left(2 (\text{k2}\cdot \;\text{p2})+\text{k2}^2-m^2+\text{p2}^2\right)}

One-loop tensor reduction

1-loop tensor reduction using Passarino-Veltman method is handled by TID

FVD[q, \[Mu]] FVD[q, \[Nu]] FAD[{q, m}]
TID[%, q]

qμqνq2m2\frac{q^{\mu } q^{\nu }}{q^2-m^2}

m2gμνD(q2m2)\frac{m^2 g^{\mu \nu }}{D \left(q^2-m^2\right)}

int = FVD[q, \[Mu]] SPD[q, p] FAD[{q, m0}, {q + p, m1}]
TID[%, q]

qμ(pq)(q2m02).((p+q)2m12)\frac{q^{\mu } (p\cdot q)}{\left(q^2-\text{m0}^2\right).\left((p+q)^2-\text{m1}^2\right)}

pμ(m02m12+p2)24p2(q2m02).((qp)2m12)pμ(m02m12+p2)4p2(q2m02)+pμ(m02m12+3p2)4p2(q2m12)\frac{p^{\mu } \left(\text{m0}^2-\text{m1}^2+p^2\right)^2}{4 p^2 \left(q^2-\text{m0}^2\right).\left((q-p)^2-\text{m1}^2\right)}-\frac{p^{\mu } \left(\text{m0}^2-\text{m1}^2+p^2\right)}{4 p^2 \left(q^2-\text{m0}^2\right)}+\frac{p^{\mu } \left(\text{m0}^2-\text{m1}^2+3 p^2\right)}{4 p^2 \left(q^2-\text{m1}^2\right)}

By default, TID tries to reduce everything to scalar integrals with unit denominators. However, if it encounters zero Gram determinants, it automatically switches to the coefficient functions

FCClearScalarProducts[]
SPD[p, p] = 0;
TID[int, q]

pμ2(q2m12)12iπ2(m02m12)pμ  B1(0,m02,m12)\frac{p^{\mu }}{2 \left(q^2-\text{m1}^2\right)}-\frac{1}{2} i \pi ^2 \left(\text{m0}^2-\text{m1}^2\right) p^{\mu } \;\text{B}_1\left(0,\text{m0}^2,\text{m1}^2\right)

If we want the result to be express entirely in terms of Passarino-Veltman function, i. e. without FADs, we can use ToPaVe

TID[int, q, ToPaVe -> True]

12iπ2pμ  A0(m12)12iπ2(m02m12)pμ  B1(0,m02,m12)\frac{1}{2} i \pi ^2 p^{\mu } \;\text{A}_0\left(\text{m1}^2\right)-\frac{1}{2} i \pi ^2 \left(\text{m0}^2-\text{m1}^2\right) p^{\mu } \;\text{B}_1\left(0,\text{m0}^2,\text{m1}^2\right)

ToPaVe is actually also a standalone function, so it can be used independently of TID

FCClearScalarProducts[]
FAD[q, {q + p1}, {q + p2}]
ToPaVe[%, q]

1q2.(p1+q)2.(p2+q)2\frac{1}{q^2.(\text{p1}+q)^2.(\text{p2}+q)^2}

iπ2  C0(p12,p22,p122(p1  p2)+p22,0,0,0)i \pi ^2 \;\text{C}_0\left(\text{p1}^2,\text{p2}^2,\text{p1}^2-2 (\text{p1}\cdot \;\text{p2})+\text{p2}^2,0,0,0\right)

Even if there are no Gram determinants, for some tensor integrals the full result in terms of scalar integrals is just too large

int = FVD[q, \[Mu]] FVD[q, \[Nu]] FAD[q, {q + p1}, {q + p2}]
res = TID[int, q];

qμqνq2.(p1+q)2.(p2+q)2\frac{q^{\mu } q^{\nu }}{q^2.(\text{p1}+q)^2.(\text{p2}+q)^2}

res // Short

14(2D)11211(121)211+144+14312-\frac{\langle\langle 1\rangle\rangle }{4 (2-D)\langle\langle 1\rangle\rangle \langle\langle 1\rangle\rangle ^2\langle\langle 1\rangle\rangle \langle\langle 1\rangle\rangle \left(\langle\langle 1\rangle\rangle ^2-\langle\langle 1\rangle\rangle \right)^2}-\frac{\langle\langle 1\rangle\rangle }{\langle\langle 1\rangle\rangle }+\langle\langle 1\rangle\rangle -\frac{\langle\langle 44\rangle\rangle +\langle\langle 1\rangle\rangle }{4 \langle\langle 3\rangle\rangle \langle\langle 1\rangle\rangle ^2}

Of course we collect with respect to FAD and isolate the prefactors, but the full result still remains messy

Collect2[res, FeynAmpDenominator, IsolateNames -> KK]

KK(864)4q2.(p1+p2+q)2+KK(868)4q2.(qp2)2.(qp1)2KK(866)4q2.(qp1)2+KK(861)4q2.(qp2)2-\frac{\text{KK}(864)}{4 q^2.(-\text{p1}+\text{p2}+q)^2}+\frac{\text{KK}(868)}{4 q^2.(q-\text{p2})^2.(q-\text{p1})^2}-\frac{\text{KK}(866)}{4 q^2.(q-\text{p1})^2}+-\frac{\text{KK}(861)}{4 q^2.(q-\text{p2})^2}

In such cases, we can get a much more compact results , if we stick to coefficient functions and do not demand the full reduction to scalars. To do so, use the option UsePaVeBasis

res = TID[int, q, UsePaVeBasis -> True]

iπ2gμν  C00(p12,p22,2(p1  p2)+p12+p22,0,0,0)+iπ2  p1μ  p1ν  C11(p12,2(p1  p2)+p12+p22,p22,0,0,0)+iπ2  p2μ  p2ν  C11(p22,2(p1  p2)+p12+p22,p12,0,0,0)+iπ2(p1ν  p2μ+p1μ  p2ν)  C12(p12,2(p1  p2)+p12+p22,p22,0,0,0)i \pi ^2 g^{\mu \nu } \;\text{C}_{00}\left(\text{p1}^2,\text{p2}^2,-2 (\text{p1}\cdot \;\text{p2})+\text{p1}^2+\text{p2}^2,0,0,0\right)+i \pi ^2 \;\text{p1}^{\mu } \;\text{p1}^{\nu } \;\text{C}_{11}\left(\text{p1}^2,-2 (\text{p1}\cdot \;\text{p2})+\text{p1}^2+\text{p2}^2,\text{p2}^2,0,0,0\right)+i \pi ^2 \;\text{p2}^{\mu } \;\text{p2}^{\nu } \;\text{C}_{11}\left(\text{p2}^2,-2 (\text{p1}\cdot \;\text{p2})+\text{p1}^2+\text{p2}^2,\text{p1}^2,0,0,0\right)+i \pi ^2 \left(\text{p1}^{\nu } \;\text{p2}^{\mu }+\text{p1}^{\mu } \;\text{p2}^{\nu }\right) \;\text{C}_{12}\left(\text{p1}^2,-2 (\text{p1}\cdot \;\text{p2})+\text{p1}^2+\text{p2}^2,\text{p2}^2,0,0,0\right)

The resulting coefficient functions can be further reduced with PaVeReduce

pvRes = PaVeReduce[res];
pvRes // Short

5+i111(1)4(2D)12\langle\langle 5\rangle\rangle +\frac{i \langle\langle 1\rangle\rangle \langle\langle 1\rangle\rangle \langle\langle 1\rangle\rangle (\langle\langle 1\rangle\rangle )}{4 (2-D) \langle\langle 1\rangle\rangle ^2}

Multi-loop tensor reduction

In the case of multi-loop integrals (but also 1-loop integrals with linear propagators) one should use FCMultiLoopTID

FVD[q, \[Mu]] FVD[q, \[Nu]] SFAD[{q, m^2}, {{0, 2 l . q}}]
FCMultiLoopTID[%, {q}]

qμqν(q2m2+iη).(2(lq)+iη)\frac{q^{\mu } q^{\nu }}{(q^2-m^2+i \eta ).(2 (l\cdot q)+i \eta )}

m2(lμlνl2gμν)(1D)l2(q2m2+iη).(2(lq)+iη)\frac{m^2 \left(l^{\mu } l^{\nu }-l^2 g^{\mu \nu }\right)}{(1-D) l^2 (q^2-m^2+i \eta ).(2 (l\cdot q)+i \eta )}

Working with GLI and FCTopology symbols

Integral families are encoded in form of FCTopology[id, {props}, {lmoms}, {extmoms}, kinematics, reserved] symbols

topos = {
   FCTopology["topoBox1L", {FAD[{q, m0}], FAD[{q + p1, m1}], FAD[{q + p2, m2}], FAD[{q + p2, m3}]}, 
    {q}, {p1, p2, p3}, {}, {}], 
   FCTopology["topoTad2L", {FAD[{q1, m1}], FAD[{q2, m2}], FAD[{q1 - q2, 0}]}, {q1, q2}, {}, {}, {}]}

{FCTopology(topoBox1L,{1q2m02,1(p1+q)2m12,1(p2+q)2m22,1(p2+q)2m32},{q},{p1,p2,p3},{},{}),FCTopology(topoTad2L,{1q12m12,1q22m22,1(q1q2)2},{q1,q2},{},{},{})}\left\{\text{FCTopology}\left(\text{topoBox1L},\left\{\frac{1}{q^2-\text{m0}^2},\frac{1}{(\text{p1}+q)^2-\text{m1}^2},\frac{1}{(\text{p2}+q)^2-\text{m2}^2},\frac{1}{(\text{p2}+q)^2-\text{m3}^2}\right\},\{q\},\{\text{p1},\text{p2},\text{p3}\},\{\},\{\}\right),\text{FCTopology}\left(\text{topoTad2L},\left\{\frac{1}{\text{q1}^2-\text{m1}^2},\frac{1}{\text{q2}^2-\text{m2}^2},\frac{1}{(\text{q1}-\text{q2})^2}\right\},\{\text{q1},\text{q2}\},\{\},\{\},\{\}\right)\right\}

The loop integrals belonging to these topologies are written as GLI[id, {powers}] symbols

exp = a1 GLI["topoBox1L", {1, 1, 1, 1}] + a2 GLI["topoTad2L", {1, 2, 2}]

a1GtopoBox1L(1,1,1,1)+a2GtopoTad2L(1,2,2)\text{a1} G^{\text{topoBox1L}}(1,1,1,1)+\text{a2} G^{\text{topoTad2L}}(1,2,2)

Using FCLoopFromGLI we can convert GLIs into explicit propagator notation

FCLoopFromGLI[exp, topos]

a1(q2m02)((p1+q)2m12)((p2+q)2m22)((p2+q)2m32)+a2(q12m12)(q22m22)2(q1q2)4\frac{\text{a1}}{\left(q^2-\text{m0}^2\right) \left((\text{p1}+q)^2-\text{m1}^2\right) \left((\text{p2}+q)^2-\text{m2}^2\right) \left((\text{p2}+q)^2-\text{m3}^2\right)}+\frac{\text{a2}}{\left(\text{q1}^2-\text{m1}^2\right) \left(\text{q2}^2-\text{m2}^2\right)^2 (\text{q1}-\text{q2})^4}

Topology identification

The very first step is usually to identify the occurring topologies in the amplitude (without attempting to minimize their number)

Find topologies occurring in the 2-loop ghost self-energy amplitude

amp = Get[FileNameJoin[{$FeynCalcDirectory, "Documentation", "Examples", 
      "Amplitudes", "Gh-Gh-2L.m"}]];
res = FCLoopFindTopologies[amp, {q1, q2}];

FCLoopFindTopologies: Number of the initial candidate topologies: 3\text{FCLoopFindTopologies: Number of the initial candidate topologies: }3

FCLoopFindTopologies: Number of the identified unique topologies: 3\text{FCLoopFindTopologies: Number of the identified unique topologies: }3

FCLoopFindTopologies: Number of the preferred topologies among the unique topologies: 0\text{FCLoopFindTopologies: Number of the preferred topologies among the unique topologies: }0

FCLoopFindTopologies: Number of the identified subtopologies: 0\text{FCLoopFindTopologies: Number of the identified subtopologies: }0

FCLoopFindTopologies:   Your topologies depend on the follwing kinematic invariants that are not all entirely lowercase: {Pair[Momentum[p, D], Momentum[p, D]]}\text{FCLoopFindTopologies: }\;\text{Your topologies depend on the follwing kinematic invariants that are not all entirely lowercase: }\{\text{Pair[Momentum[p, D], Momentum[p, D]]}\}

FCLoopFindTopologies:   This may lead to issues if these topologies are meant to be processed using tools such as FIRE, KIRA or Fermat.\text{FCLoopFindTopologies: }\;\text{This may lead to issues if these topologies are meant to be processed using tools such as FIRE, KIRA or Fermat.}

res // Last

{FCTopology(fctopology1,{1(q22+iη),1(q12+iη),1((q1+q2)2+iη),1((p+q1)2+iη),1((pq2)2+iη)},{q1,q2},{p},{},{}),FCTopology(fctopology2,{1(q22+iη),1(q12+iη),1((p+q2)2+iη),1((pq1)2+iη)},{q1,q2},{p},{},{}),FCTopology(fctopology3,{1(q22+iη),1(q12+iη),1((pq1)2+iη),1((pq1+q2)2+iη)},{q1,q2},{p},{},{})}\left\{\text{FCTopology}\left(\text{fctopology1},\left\{\frac{1}{(\text{q2}^2+i \eta )},\frac{1}{(\text{q1}^2+i \eta )},\frac{1}{((\text{q1}+\text{q2})^2+i \eta )},\frac{1}{((p+\text{q1})^2+i \eta )},\frac{1}{((p-\text{q2})^2+i \eta )}\right\},\{\text{q1},\text{q2}\},\{p\},\{\},\{\}\right),\text{FCTopology}\left(\text{fctopology2},\left\{\frac{1}{(\text{q2}^2+i \eta )},\frac{1}{(\text{q1}^2+i \eta )},\frac{1}{((p+\text{q2})^2+i \eta )},\frac{1}{((p-\text{q1})^2+i \eta )}\right\},\{\text{q1},\text{q2}\},\{p\},\{\},\{\}\right),\text{FCTopology}\left(\text{fctopology3},\left\{\frac{1}{(\text{q2}^2+i \eta )},\frac{1}{(\text{q1}^2+i \eta )},\frac{1}{((p-\text{q1})^2+i \eta )},\frac{1}{((p-\text{q1}+\text{q2})^2+i \eta )}\right\},\{\text{q1},\text{q2}\},\{p\},\{\},\{\}\right)\right\}

The amplitude is the written as a linear combination of special products, where numerators with explicit loop momenta are multiplied by denominators written as GLIs

res[[1]][[1 ;; 5]]

FCGV(GLIProduct)(ξgs4  q2Lor1pLor2  q2Lor2  q1Lor4gLor3  Lor4(q1+q2)Lor1(q2p)Lor3fGlu1  Glu3  Glu6fGlu2  Glu4  Glu7fGlu3  Glu4  Glu5fGlu5  Glu6  Glu7,Gfctopology1(2,1,1,1,1))+FCGV(GLIProduct)(ξgs4  q1Lor1pLor2pLor3  q2Lor4gLor3  Lor4(q1p)Lor1(pq1)Lor2fGlu1  Glu6  Glu7fGlu2  Glu4  Glu5fGlu3  Glu4  Glu5fGlu3  Glu6  Glu7p2,Gfctopology2(1,1,1,2))+FCGV(GLIProduct)(ξgs4  q1Lor1pLor2pLor3  q2Lor4gLor1  Lor2(p+q2)Lor3(pq2)Lor4fGlu1  Glu6  Glu7fGlu2  Glu4  Glu5fGlu3  Glu4  Glu5fGlu3  Glu6  Glu7p2,Gfctopology2(1,1,2,1))+FCGV(GLIProduct)(ξ2gs4  q1Lor1pLor2pLor3  q2Lor4(q1p)Lor1(pq1)Lor2(p+q2)Lor3(pq2)Lor4fGlu1  Glu6  Glu7fGlu2  Glu4  Glu5fGlu3  Glu4  Glu5fGlu3  Glu6  Glu7p2,Gfctopology2(1,1,2,2))+FCGV(GLIProduct)(gs4  q1Lor1pLor2pLor3  q2Lor4gLor1  Lor2gLor3  Lor4fGlu1  Glu6  Glu7fGlu2  Glu4  Glu5fGlu3  Glu4  Glu5fGlu3  Glu6  Glu7p2,Gfctopology2(1,1,1,1))\text{FCGV}(\text{GLIProduct})\left(\xi g_s^4 \;\text{q2}^{\text{Lor1}} p^{\text{Lor2}} \;\text{q2}^{\text{Lor2}} \;\text{q1}^{\text{Lor4}} g^{\text{Lor3}\;\text{Lor4}} (\text{q1}+\text{q2})^{\text{Lor1}} (\text{q2}-p)^{\text{Lor3}} f^{\text{Glu1}\;\text{Glu3}\;\text{Glu6}} f^{\text{Glu2}\;\text{Glu4}\;\text{Glu7}} f^{\text{Glu3}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu5}\;\text{Glu6}\;\text{Glu7}},G^{\text{fctopology1}}(2,1,1,1,1)\right)+\text{FCGV}(\text{GLIProduct})\left(-\frac{\xi g_s^4 \;\text{q1}^{\text{Lor1}} p^{\text{Lor2}} p^{\text{Lor3}} \;\text{q2}^{\text{Lor4}} g^{\text{Lor3}\;\text{Lor4}} (\text{q1}-p)^{\text{Lor1}} (p-\text{q1})^{\text{Lor2}} f^{\text{Glu1}\;\text{Glu6}\;\text{Glu7}} f^{\text{Glu2}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu6}\;\text{Glu7}}}{p^2},G^{\text{fctopology2}}(1,1,1,2)\right)+\text{FCGV}(\text{GLIProduct})\left(-\frac{\xi g_s^4 \;\text{q1}^{\text{Lor1}} p^{\text{Lor2}} p^{\text{Lor3}} \;\text{q2}^{\text{Lor4}} g^{\text{Lor1}\;\text{Lor2}} (p+\text{q2})^{\text{Lor3}} (-p-\text{q2})^{\text{Lor4}} f^{\text{Glu1}\;\text{Glu6}\;\text{Glu7}} f^{\text{Glu2}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu6}\;\text{Glu7}}}{p^2},G^{\text{fctopology2}}(1,1,2,1)\right)+\text{FCGV}(\text{GLIProduct})\left(-\frac{\xi ^2 g_s^4 \;\text{q1}^{\text{Lor1}} p^{\text{Lor2}} p^{\text{Lor3}} \;\text{q2}^{\text{Lor4}} (\text{q1}-p)^{\text{Lor1}} (p-\text{q1})^{\text{Lor2}} (p+\text{q2})^{\text{Lor3}} (-p-\text{q2})^{\text{Lor4}} f^{\text{Glu1}\;\text{Glu6}\;\text{Glu7}} f^{\text{Glu2}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu6}\;\text{Glu7}}}{p^2},G^{\text{fctopology2}}(1,1,2,2)\right)+\text{FCGV}(\text{GLIProduct})\left(-\frac{g_s^4 \;\text{q1}^{\text{Lor1}} p^{\text{Lor2}} p^{\text{Lor3}} \;\text{q2}^{\text{Lor4}} g^{\text{Lor1}\;\text{Lor2}} g^{\text{Lor3}\;\text{Lor4}} f^{\text{Glu1}\;\text{Glu6}\;\text{Glu7}} f^{\text{Glu2}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu4}\;\text{Glu5}} f^{\text{Glu3}\;\text{Glu6}\;\text{Glu7}}}{p^2},G^{\text{fctopology2}}(1,1,1,1)\right)

Finding topology mappings

Here we have a set of 5 topologies

topos1 = {
    FCTopology[fctopology1, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], 
      SFAD[{{p1, 0}, {0, 1}, 1}], SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 - Q, 0}, {0, 1}, 1}], SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}], 
    FCTopology[fctopology2, {SFAD[{{p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, {0, 1}, 1}], SFAD[{{p2 + p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}], 
    FCTopology[fctopology3, {SFAD[{{p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, {0, 1}, 1}], 
      SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p1 + p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, 
     {p1, p2, p3}, {Q}, {}, {}], 
    FCTopology[fctopology4, {SFAD[{{p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, {0, 1}, 1}], 
      SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p1 + p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, 
     {p1, p2, p3}, {Q}, {}, {}], 
    FCTopology[fctopology5, {SFAD[{{p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}],
      SFAD[{{p1 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, 
     {p1, p2, p3}, {Q}, {}, {}]};

where 3 of them can be mapped to the other 2

mappings1 = FCLoopFindTopologyMappings[topos1];

FCLoopFindTopologyMappings:   Found 3 mapping relations \text{FCLoopFindTopologyMappings: }\;\text{Found }3\text{ mapping relations }

FCLoopFindTopologyMappings:   Final number of independent topologies: 2\text{FCLoopFindTopologyMappings: }\;\text{Final number of independent topologies: }2

mappings1[[1]]

(  FCTopology(fctopology3,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p2+p3Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1p1p3+Q,p2p2p3+Q,p3  p3}Gfctopology3(n1_,n7_,n8_,n5_,n6_,n4_,n2_,n3_,n9_):Gfctopology1(n1,n2,n3,n4,n5,n6,n7,n8,n9)  FCTopology(fctopology4,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1Qp2,p2Qp1,p3p3}Gfctopology4(n1_,n6_,n5_,n8_,n7_,n3_,n2_,n4_,n9_):Gfctopology1(n1,n2,n3,n4,n5,n6,n7,n8,n9)  FCTopology(fctopology5,{1(p32+iη),1(p22+iη),1(p12+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1  p2,p2  p1,p3  p3}Gfctopology5(n1_,n3_,n2_,n4_,n6_,n5_,n7_,n8_,n9_):Gfctopology2(n1,n2,n3,n4,n5,n6,n7,n8,n9))\left( \begin{array}{ccc} \;\text{FCTopology}\left(\text{fctopology3},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to -\text{p1}-\text{p3}+Q,\text{p2}\to -\text{p2}-\text{p3}+Q,\text{p3}\to \;\text{p3}\} & G^{\text{fctopology3}}(\text{n1$\_$},\text{n7$\_$},\text{n8$\_$},\text{n5$\_$},\text{n6$\_$},\text{n4$\_$},\text{n2$\_$},\text{n3$\_$},\text{n9$\_$}):\to G^{\text{fctopology1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \;\text{FCTopology}\left(\text{fctopology4},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to Q-\text{p2},\text{p2}\to Q-\text{p1},\text{p3}\to -\text{p3}\} & G^{\text{fctopology4}}(\text{n1$\_$},\text{n6$\_$},\text{n5$\_$},\text{n8$\_$},\text{n7$\_$},\text{n3$\_$},\text{n2$\_$},\text{n4$\_$},\text{n9$\_$}):\to G^{\text{fctopology1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \;\text{FCTopology}\left(\text{fctopology5},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to \;\text{p2},\text{p2}\to \;\text{p1},\text{p3}\to \;\text{p3}\} & G^{\text{fctopology5}}(\text{n1$\_$},\text{n3$\_$},\text{n2$\_$},\text{n4$\_$},\text{n6$\_$},\text{n5$\_$},\text{n7$\_$},\text{n8$\_$},\text{n9$\_$}):\to G^{\text{fctopology2}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \end{array} \right)

And these are the final topologies

mappings1[[2]]

{FCTopology(fctopology1,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p2+p3Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}),FCTopology(fctopology2,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p2+p3Q)2+iη),1((p1+p2Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{})}\left\{\text{FCTopology}\left(\text{fctopology1},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right),\text{FCTopology}\left(\text{fctopology2},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right)\right\}

Tensor reductions

Tensor reduction for topologies that have already been processed with FCLoopFindTopologies can be done using FCLoopTensorReduce

topo2 = FCTopology[prop1l, {SFAD[{q, m^2}, {q - p, m^2}]}, {q}, {p}, {}, {}]

FCTopology(prop1l,{1(q2m2+iη).((qp)2m2+iη)},{q},{p},{},{})\text{FCTopology}\left(\text{prop1l},\left\{\frac{1}{(q^2-m^2+i \eta ).((q-p)^2-m^2+i \eta )}\right\},\{q\},\{p\},\{\},\{\}\right)

amp2 = gliProduct[GSD[q] . GAD[\[Mu]] . GSD[q], GLI[prop1l, {1, 2}]]

gliProduct((γq).γμ.(γq),Gprop1l(1,2))\text{gliProduct}\left((\gamma \cdot q).\gamma ^{\mu }.(\gamma \cdot q),G^{\text{prop1l}}(1,2)\right)

amp2Red = FCLoopTensorReduce[amp2, {topo2}, Head -> gliProduct]

gliProduct(2Dpμγp(pq)22p2γμ(pq)2Dp4q2γμ+3p4q2γμ2p2q2pμγp(1D)p4,Gprop1l(1,2))\text{gliProduct}\left(-\frac{2 D p^{\mu } \gamma \cdot p (p\cdot q)^2-2 p^2 \gamma ^{\mu } (p\cdot q)^2-D p^4 q^2 \gamma ^{\mu }+3 p^4 q^2 \gamma ^{\mu }-2 p^2 q^2 p^{\mu } \gamma \cdot p}{(1-D) p^4},G^{\text{prop1l}}(1,2)\right)

Applying topology mappings

This is a trial expression representing some loop amplitude that has already been processed using FCFindTopologies

ex = gliProduct[cc6*SPD[p1, p1], GLI[fctopology1, {1, 1, 2, 1, 1, 1, 1, 1, 1}]] + 
   gliProduct[cc2*SPD[p1, p2], GLI[fctopology2, {1, 1, 1, 1, 1, 1, 1, 1, 1}]] + 
   gliProduct[cc4*SPD[p1, p2], GLI[fctopology4, {1, 1, 1, 1, 1, 1, 1, 1, 1}]] + 
   gliProduct[cc1*SPD[p1, Q], GLI[fctopology1, {1, 1, 1, 1, 1, 1, 1, 1, 1}]] + 
   gliProduct[cc3*SPD[p2, p2], GLI[fctopology3, {1, 1, 1, 1, 1, 1, 1, 1, 1}]] + 
   gliProduct[cc5*SPD[p2, Q], GLI[fctopology5, {1, 1, 1, 1, 1, 1, 1, 1, 1}]]

gliProduct(cc1(p1Q),Gfctopology1(1,1,1,1,1,1,1,1,1))+gliProduct(cc2(p1  p2),Gfctopology2(1,1,1,1,1,1,1,1,1))+gliProduct(cc3  p22,Gfctopology3(1,1,1,1,1,1,1,1,1))+gliProduct(cc4(p1  p2),Gfctopology4(1,1,1,1,1,1,1,1,1))+gliProduct(cc5(p2Q),Gfctopology5(1,1,1,1,1,1,1,1,1))+gliProduct(cc6  p12,Gfctopology1(1,1,2,1,1,1,1,1,1))\text{gliProduct}\left(\text{cc1} (\text{p1}\cdot Q),G^{\text{fctopology1}}(1,1,1,1,1,1,1,1,1)\right)+\text{gliProduct}\left(\text{cc2} (\text{p1}\cdot \;\text{p2}),G^{\text{fctopology2}}(1,1,1,1,1,1,1,1,1)\right)+\text{gliProduct}\left(\text{cc3} \;\text{p2}^2,G^{\text{fctopology3}}(1,1,1,1,1,1,1,1,1)\right)+\text{gliProduct}\left(\text{cc4} (\text{p1}\cdot \;\text{p2}),G^{\text{fctopology4}}(1,1,1,1,1,1,1,1,1)\right)+\text{gliProduct}\left(\text{cc5} (\text{p2}\cdot Q),G^{\text{fctopology5}}(1,1,1,1,1,1,1,1,1)\right)+\text{gliProduct}\left(\text{cc6} \;\text{p1}^2,G^{\text{fctopology1}}(1,1,2,1,1,1,1,1,1)\right)

These mapping rules describe how the 3 topologies “fctopology3”, “fctopology4” and “fctopology5” are mapped to the topologies “fctopology1” and “fctopology2”

mappings = {
   {FCTopology[fctopology3, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], 
      SFAD[{{p1, 0}, {0, 1}, 1}], SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p1 + p3, 0}, {0, 1}, 1}], 
      SFAD[{{p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}], {p1 -> -p1 - p3 + Q, p2 -> 
      -p2 - p3 + Q, p3 -> p3}, 
    GLI[fctopology3, {n1_, n7_, n8_, n5_, n6_, n4_, n2_, n3_, n9_}] :>
     GLI[fctopology1, {n1, n2, n3, n4, n5, n6, n7, n8, n9}]}, 
   
   {FCTopology[fctopology4, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, 
        {0, 1}, 1}], 
      SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p1 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}], 
    {p1 -> -p2 + Q, p2 -> -p1 + Q, p3 -> -p3}, 
    GLI[fctopology4, {n1_, n6_, n5_, n8_, n7_, n3_, n2_, n4_, n9_}] :>
     GLI[fctopology1, {n1, n2, n3, n4, n5, n6, n7, n8, n9}]}, 
   
   {FCTopology[fctopology5, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], SFAD[{{p1, 0}, 
        {0, 1}, 1}], 
      SFAD[{{p1 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}],SFAD[{{p1 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], 
      SFAD[{{p1 + p2 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {},
     {}], {p1 -> p2, p2 -> p1, p3 -> p3}, 
    GLI[fctopology5, {n1_, n3_, n2_, n4_, n6_, n5_, n7_, n8_, n9_}] :>
     GLI[fctopology2, {n1, n2, n3, n4, n5, n6, n7, n8, n9}]}}

(  FCTopology(fctopology3,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p2+p3Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1p1p3+Q,p2p2p3+Q,p3  p3}Gfctopology3(n1_,n7_,n8_,n5_,n6_,n4_,n2_,n3_,n9_):Gfctopology1(n1,n2,n3,n4,n5,n6,n7,n8,n9)  FCTopology(fctopology4,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1Qp2,p2Qp1,p3p3}Gfctopology4(n1_,n6_,n5_,n8_,n7_,n3_,n2_,n4_,n9_):Gfctopology1(n1,n2,n3,n4,n5,n6,n7,n8,n9)  FCTopology(fctopology5,{1(p32+iη),1(p22+iη),1(p12+iη),1((p1+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}){p1  p2,p2  p1,p3  p3}Gfctopology5(n1_,n3_,n2_,n4_,n6_,n5_,n7_,n8_,n9_):Gfctopology2(n1,n2,n3,n4,n5,n6,n7,n8,n9))\left( \begin{array}{ccc} \;\text{FCTopology}\left(\text{fctopology3},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to -\text{p1}-\text{p3}+Q,\text{p2}\to -\text{p2}-\text{p3}+Q,\text{p3}\to \;\text{p3}\} & G^{\text{fctopology3}}(\text{n1$\_$},\text{n7$\_$},\text{n8$\_$},\text{n5$\_$},\text{n6$\_$},\text{n4$\_$},\text{n2$\_$},\text{n3$\_$},\text{n9$\_$}):\to G^{\text{fctopology1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \;\text{FCTopology}\left(\text{fctopology4},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to Q-\text{p2},\text{p2}\to Q-\text{p1},\text{p3}\to -\text{p3}\} & G^{\text{fctopology4}}(\text{n1$\_$},\text{n6$\_$},\text{n5$\_$},\text{n8$\_$},\text{n7$\_$},\text{n3$\_$},\text{n2$\_$},\text{n4$\_$},\text{n9$\_$}):\to G^{\text{fctopology1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \;\text{FCTopology}\left(\text{fctopology5},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p1}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to \;\text{p2},\text{p2}\to \;\text{p1},\text{p3}\to \;\text{p3}\} & G^{\text{fctopology5}}(\text{n1$\_$},\text{n3$\_$},\text{n2$\_$},\text{n4$\_$},\text{n6$\_$},\text{n5$\_$},\text{n7$\_$},\text{n8$\_$},\text{n9$\_$}):\to G^{\text{fctopology2}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ \end{array} \right)

These are the two topologies onto which everything is mapped

finalTopos = {
   FCTopology[fctopology1, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], 
     SFAD[{{p1, 0}, {0, 1}, 1}], SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}], 
     SFAD[{{p1 - Q, 0}, {0, 1}, 1}], SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p3 - Q, 0}, {0, 1}, 1}], 
     SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}], 
   FCTopology[fctopology2, {SFAD[{{p3, 0}, {0, 1}, 1}], SFAD[{{p2, 0}, {0, 1}, 1}], 
     SFAD[{{p1, 0}, {0, 1}, 1}], SFAD[{{p2 + p3, 0}, {0, 1}, 1}], SFAD[{{p2 - Q, 0}, {0, 1}, 1}], 
     SFAD[{{p1 - Q, 0}, {0, 1}, 1}], SFAD[{{p2 + p3 - Q, 0}, {0, 1}, 1}], SFAD[{{p1 + p2 - Q, 0}, {0, 1}, 1}], 
     SFAD[{{p1 + p2 + p3 - Q, 0}, {0, 1}, 1}]}, {p1, p2, p3}, {Q}, {}, {}]}

{FCTopology(fctopology1,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p2+p3Q)2+iη),1((p1+p3Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{}),FCTopology(fctopology2,{1(p32+iη),1(p22+iη),1(p12+iη),1((p2+p3)2+iη),1((p2Q)2+iη),1((p1Q)2+iη),1((p2+p3Q)2+iη),1((p1+p2Q)2+iη),1((p1+p2+p3Q)2+iη)},{p1,p2,p3},{Q},{},{})}\left\{\text{FCTopology}\left(\text{fctopology1},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right),\text{FCTopology}\left(\text{fctopology2},\left\{\frac{1}{(\text{p3}^2+i \eta )},\frac{1}{(\text{p2}^2+i \eta )},\frac{1}{(\text{p1}^2+i \eta )},\frac{1}{((\text{p2}+\text{p3})^2+i \eta )},\frac{1}{((\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}-Q)^2+i \eta )},\frac{1}{((\text{p2}+\text{p3}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right)\right\}

FCLoopApplyTopologyMappings applies the given mappings to the expression creating an output that is ready to be processed further

FCLoopApplyTopologyMappings[ex, {mappings, finalTopos}, Head -> gliProduct]

12Gfctopology1(1,1,1,1,1,1,1,1,1)(cc1Q2+cc4Q2+2  cc6)+12(cc1cc4)Gfctopology1(1,1,0,1,1,1,1,1,1)12(cc1cc4)Gfctopology1(1,1,1,1,1,0,1,1,1)+12Q2(cc2+cc5)Gfctopology2(1,1,1,1,1,1,1,1,1)12(cc2+cc5)Gfctopology2(1,1,1,1,1,0,1,1,1)12  cc2Gfctopology2(1,1,1,1,0,1,1,1,1)+12  cc2Gfctopology2(1,1,1,1,1,1,1,0,1)+cc3Gfctopology1(1,1,1,1,1,1,0,1,1)+12  cc4Gfctopology1(0,1,1,1,1,1,1,1,1)12  cc4Gfctopology1(1,1,1,0,1,1,1,1,1)12  cc4Gfctopology1(1,1,1,1,1,1,1,0,1)+12  cc4Gfctopology1(1,1,1,1,1,1,1,1,0)+12  cc5Gfctopology2(1,1,0,1,1,1,1,1,1)\frac{1}{2} G^{\text{fctopology1}}(1,1,1,1,1,1,1,1,1) \left(\text{cc1} Q^2+\text{cc4} Q^2+2 \;\text{cc6}\right)+\frac{1}{2} (\text{cc1}-\text{cc4}) G^{\text{fctopology1}}(1,1,0,1,1,1,1,1,1)-\frac{1}{2} (\text{cc1}-\text{cc4}) G^{\text{fctopology1}}(1,1,1,1,1,0,1,1,1)+\frac{1}{2} Q^2 (\text{cc2}+\text{cc5}) G^{\text{fctopology2}}(1,1,1,1,1,1,1,1,1)-\frac{1}{2} (\text{cc2}+\text{cc5}) G^{\text{fctopology2}}(1,1,1,1,1,0,1,1,1)-\frac{1}{2} \;\text{cc2} G^{\text{fctopology2}}(1,1,1,1,0,1,1,1,1)+\frac{1}{2} \;\text{cc2} G^{\text{fctopology2}}(1,1,1,1,1,1,1,0,1)+\text{cc3} G^{\text{fctopology1}}(1,1,1,1,1,1,0,1,1)+\frac{1}{2} \;\text{cc4} G^{\text{fctopology1}}(0,1,1,1,1,1,1,1,1)-\frac{1}{2} \;\text{cc4} G^{\text{fctopology1}}(1,1,1,0,1,1,1,1,1)-\frac{1}{2} \;\text{cc4} G^{\text{fctopology1}}(1,1,1,1,1,1,1,0,1)+\frac{1}{2} \;\text{cc4} G^{\text{fctopology1}}(1,1,1,1,1,1,1,1,0)+\frac{1}{2} \;\text{cc5} G^{\text{fctopology2}}(1,1,0,1,1,1,1,1,1)

The resulting GLIs in the expression are loop integrals that can be IBP-reduced

Mappings between integrals

To find one-to-one mappings between loop integrals use FCLoopFindIntegralMappings

FCClearScalarProducts[]
ClearAll[topo1, topo2]
topos = {FCTopology[topo1, {SFAD[{p1, m^2}], SFAD[{p2, m^2}]}, {p1, p2}, {}, {}, {}], 
   FCTopology[topo2, {SFAD[{p3, m^2}], SFAD[{p4, m^2}]}, {p3, p4}, {}, {}, {}]}

{FCTopology(topo1,{1(p12m2+iη),1(p22m2+iη)},{p1,p2},{},{},{}),FCTopology(topo2,{1(p32m2+iη),1(p42m2+iη)},{p3,p4},{},{},{})}\left\{\text{FCTopology}\left(\text{topo1},\left\{\frac{1}{(\text{p1}^2-m^2+i \eta )},\frac{1}{(\text{p2}^2-m^2+i \eta )}\right\},\{\text{p1},\text{p2}\},\{\},\{\},\{\}\right),\text{FCTopology}\left(\text{topo2},\left\{\frac{1}{(\text{p3}^2-m^2+i \eta )},\frac{1}{(\text{p4}^2-m^2+i \eta )}\right\},\{\text{p3},\text{p4}\},\{\},\{\},\{\}\right)\right\}

glis = {GLI[topo1, {1, 1}], GLI[topo1, {1, 2}], GLI[topo1, {2, 1}], 
   GLI[topo2, {1, 1}], GLI[topo2, {2, 2}]}

{Gtopo1(1,1),Gtopo1(1,2),Gtopo1(2,1),Gtopo2(1,1),Gtopo2(2,2)}\left\{G^{\text{topo1}}(1,1),G^{\text{topo1}}(1,2),G^{\text{topo1}}(2,1),G^{\text{topo2}}(1,1),G^{\text{topo2}}(2,2)\right\}

mappings = FCLoopFindIntegralMappings[glis, topos]

{{Gtopo2(1,1)Gtopo1(1,1),Gtopo1(2,1)Gtopo1(1,2)},{Gtopo1(1,1),Gtopo1(1,2),Gtopo2(2,2)}}\left\{\left\{G^{\text{topo2}}(1,1)\to G^{\text{topo1}}(1,1),G^{\text{topo1}}(2,1)\to G^{\text{topo1}}(1,2)\right\},\left\{G^{\text{topo1}}(1,1),G^{\text{topo1}}(1,2),G^{\text{topo2}}(2,2)\right\}\right\}