feynson

A typical workflow for calculating loop corrections to a physical quantity involves generating Feynman diagrams using tools like Qgraf [1], converting diagrams into integrals through Feynman rules (with custom code), sorting the integrals into IBP families (custom code again), running Laporta-style IBP reduction on them, and then finally inserting the values of master integrals (calculated separately). When sorting the integrals into IBP topologies one wants to obtain the minimal amount of topologies covering all the integrals. To do this it is essential to recognize when a loop momenta substitution exists that makes one family of integrals identical to another family, or a subset of it. IBP programs like Kira and LiteRed do provide tools for this: both can find symmetries between families of integrals, but neither is optimized to handle large number of them: figuring out symmetries between one thousand of 4-loop integral families takes weeks with Kira 1.2. So, a separate tool, Feynson, was developed for this task.

Feynson is a command-line tool that finds symmetries between integral families, helping in the process of mapping integrals into IBP topologies. It does so by figuring out the loop momenta substitutions that make the integrands of different families identical if the families are symmetric, and subsets of each other if there is a subset relation. The intended usage is this: for every integral in the problem calculate the set of denominators; pass this set to Feynson, and it will output a loop momenta map for each set; after this momenta map is applied symmetric integrals will have identical denominator sets, and the remaining unique denominator sets will define the minimal set of IBP topologies covering the integrals.

As a related function, Feynson can also determine which integral families correspond to scaleless integrals, so that these can be removed from further consideration early.

Feynson is designed to handle large amount of integral families, so that there would be no need to preprocess data before passing into it. When possible it performs calculations in parallel, and is generally able to handle thousands of families with no difficulty.

Feynson is written in C++ using GiNaC [2] and Nauty and Traces [3]; it should work on any Unix-like system. You can obtain its sources at hg.tx97.net/feynson.

How to use it?

[This section is under construction]


  1. P. Nogueira. “Automatic Feynman graph generation”. In: J. Comput. Phys. 105 (1993), pp. 279–289. DOI: 10.1006/jcph.1993.1074. URL: http://cfif.ist.utl.pt/~paulo/qgraf.html.

  2. C. W. Bauer, A. Frink, and R. Kreckel. “Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language”. In: J. Symb. Comput. 33.1 (2002), pp. 1–12. DOI: 10.1006/jsco.2001.0494. arXiv: cs/0004015. URL: https://ginac.de.

  3. B. D. McKay and A. Piperno. “Practical graph isomorphism, II”. In: J. Symb. Comput. 60 (2014), pp. 94–112. ISSN: 0747-7171. DOI: 10.1016/j.jsc.2013.09.003. URL: http://pallini.di.uniroma1.it.