diff --git a/docs/build/.documenter-siteinfo.json b/docs/build/.documenter-siteinfo.json index 4fdf6b3..38b6d3b 100644 --- a/docs/build/.documenter-siteinfo.json +++ b/docs/build/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2025-02-02T07:15:44","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2025-02-02T07:43:46","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/docs/build/Example.html b/docs/build/Example.html index 7205e56..8acf731 100644 --- a/docs/build/Example.html +++ b/docs/build/Example.html @@ -1,5 +1,5 @@ -Example : Fully massless nonplanar double pentagon · Feynman.jl

Example : Fully massless nonplanar double pentagon

alt text

To provide an example on how to use our package, we calculate the Baikov matrix of the fully massless nonplanar double pentagon.

We define the graph G from the list of vertices and list of edges. The direction of momenta are taken from the direction of edges. All external momenta are taken to be outgoing.

julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);

We then assign polynomial variables $q[i]$, at bounded edges and function field variables $p[i]$ at the unbounded edges over a prime filed of characteristic 0.


+Example : Fully massless nonplanar double pentagon · Feynman.jl

Example : Fully massless nonplanar double pentagon

alt text

To provide an example on how to use our package, we calculate the Baikov matrix of the fully massless nonplanar double pentagon.

We define the graph G from the list of vertices and list of edges. The direction of momenta are taken from the direction of edges. All external momenta are taken to be outgoing.

julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);

We then assign polynomial variables $q[i]$, at bounded edges and function field variables $p[i]$ at the unbounded edges over a prime filed of characteristic 0.


 julia> G=labelGraph(G,0);
 
 
@@ -35,4 +35,4 @@
  1//2*t[2]                 -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]
  1//2*t[3]                 1//2*z[7] - 1//2*z[9]
  1//2*z[3] - 1//2*z[4]     -1//2*z[3] - 1//2*z[7] + 1//2*z[10]
- z[6]                   …  z[7]
+ z[6] … z[7]
diff --git a/docs/build/Installation.html b/docs/build/Installation.html index 7fd6c6b..881e88f 100644 --- a/docs/build/Installation.html +++ b/docs/build/Installation.html @@ -1,2 +1,2 @@ -Installation · Feynman.jl

Installation

We assume that Julia is installed in a recent enough version to run OSCAR. Navigate in a terminal to the folder where you want to install the package and pull the package from Github:

git pull https://github.com/singular-gpispace/Feynman.git

In the same folder execute the following command:

julia --project

This will activate the environment for our package. In Julia install missing packages:

import Pkg; Pkg.instantiate()

and load our package. On the first run this may take some time.

using Feynman  
+Installation · Feynman.jl

Installation

We assume that Julia is installed in a recent enough version to run OSCAR. Navigate in a terminal to the folder where you want to install the package and pull the package from Github:

git pull https://github.com/singular-gpispace/Feynman.git

In the same folder execute the following command:

julia --project

This will activate the environment for our package. In Julia install missing packages:

import Pkg; Pkg.instantiate()

and load our package. On the first run this may take some time.

using Feynman  
diff --git a/docs/build/Overview.html b/docs/build/Overview.html index a04d2fe..e83bc41 100644 --- a/docs/build/Overview.html +++ b/docs/build/Overview.html @@ -1,6 +1,6 @@ -Overview · Feynman.jl

Overview

Feynman.FeynmanModule
Feynman is a package for computing integration-by-part identities (IBPs) of a Feynman Integral associated to Feynman graph using module intesecation method. 
-This package also provides an interface of Oscar to use the packages NeatIBP developed using Singular and GPI-Space.
source
Feynman.ISPMethod

ISP(G::labeledgraph)

USAGE : ISP(G);

ASSUME : G is a labeled graph.

RETURN : idal containing the irreducible scalar products(ISPs), that is, those scalar product which are not linearly dependent on the propagators.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
+Overview · Feynman.jl

Overview

Feynman.FeynmanModule
Feynman is a package for computing integration-by-part identities (IBPs) of a Feynman Integral associated to Feynman graph using module intesecation method. 
+This package also provides an interface of Oscar to use the packages NeatIBP developed using Singular and GPI-Space.
source
Feynman.ISPMethod

ISP(G::labeledgraph)

USAGE : ISP(G);

ASSUME : G is a labeled graph.

RETURN : idal containing the irreducible scalar products(ISPs), that is, those scalar product which are not linearly dependent on the propagators.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
 
 julia> G=labelGraph(G,0);
 
@@ -10,7 +10,7 @@
 Ideal generated by
   p[3]*q[1]
   p[1]*q[2]
-
source
Feynman.balancingIdealMethod

balancingIdeal(G::labeledgraph)

USAGE : balancingIdeal(G);

ASSUME : G is a labeled graph.

RETURN : Ideal of balancing condition of the graph. i.e Ideal generated by the relation of the momentums which are obtained by applying momentum conservation law to external mementa, and at each vertex; This is an ideal of the ring G.over.

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
+
source
Feynman.balancingIdealMethod

balancingIdeal(G::labeledgraph)

USAGE : balancingIdeal(G);

ASSUME : G is a labeled graph.

RETURN : Ideal of balancing condition of the graph. i.e Ideal generated by the relation of the momentums which are obtained by applying momentum conservation law to external mementa, and at each vertex; This is an ideal of the ring G.over.

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
 julia> G=labelGraph(G,0);
 julia> balancingIdeal(G)
 
@@ -20,7 +20,7 @@
 p[2] - q[2] + q[3]
 p[3] - q[1] + q[4]
 p[4] - q[3] - q[4]
-
source
Feynman.computeBaikovMatrixMethod

computeBaikovMatrix(G::simple_graphgraph)

USAGE : computeBaikovMatrix(G);

ASSUME : G is a graph, or G is a labled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.

RETURN : a labeled graph G, where the computed Baikov matrix and the polynomial ring where baikovmatrix is defined are stored in G.baikovmatrix and G.baikovover respectively.

#Examples

julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);
+
source
Feynman.computeBaikovMatrixMethod

computeBaikovMatrix(G::simple_graphgraph)

USAGE : computeBaikovMatrix(G);

ASSUME : G is a graph, or G is a labled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.

RETURN : a labeled graph G, where the computed Baikov matrix and the polynomial ring where baikovmatrix is defined are stored in G.baikovmatrix and G.baikovover respectively.

#Examples

julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);
 
 julia> G=Feynman.labelGraph(G,0);
 
@@ -56,7 +56,7 @@
  1//2*t[2]                 -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]
  1//2*t[3]                 1//2*z[7] - 1//2*z[9]
  1//2*z[3] - 1//2*z[4]     -1//2*z[3] - 1//2*z[7] + 1//2*z[10]
- z[6]                   …  z[7]
source
Feynman.computeIBPMethod

computeIBP(G::labeledgraph,Nu::Vector{Int64},cutDeg::Int)

USAGE : computeIBP(G,ν,d);

ASSUME : G is a labeled graph, d is a positive integer and ν is vector of integers correspond to the parent diagram of the integral.

RETURN : A set of simplified IBP identities without double propagators (without performing trimming) .

source
Feynman.eliminateVariablesMethod

eliminateVariables(G::labeledgraph)

USAGE : eliminateVariables(G);

ASSUME : G is a labeled graph.

RETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition.

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
+ z[6]                   …  z[7]
source
Feynman.computeIBPMethod

computeIBP(G::labeledgraph,Nu::Vector{Int64},cutDeg::Int)

USAGE : computeIBP(G,ν,d);

ASSUME : G is a labeled graph, d is a positive integer and ν is vector of integers correspond to the parent diagram of the integral.

RETURN : A set of simplified IBP identities without double propagators (without performing trimming) .

source
Feynman.eliminateVariablesMethod

eliminateVariables(G::labeledgraph)

USAGE : eliminateVariables(G);

ASSUME : G is a labeled graph.

RETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition.

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
 julia> G=labelGraph(G,0);
 julia> G=eliminateVariables(G);
 julia> printLabeledGraph(G);
@@ -70,7 +70,7 @@
  p[4]
  q[2]
  q[3]
- q[4]
source
Feynman.feynmanDenominatorsMethod

feynmanDenominators(G::labeledgraph)

USAGE : feynmanDenominators(G);

ASSUME : $G$ is a labeled graph with the variables of the bounded edges eliminated according to balancing condition. i.e. $G$ is a labeled graph where the function eliminatedVariables applied.

RETURN : ideal containing the propagators in the Feynman integral

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
+ q[4]
source
Feynman.feynmanDenominatorsMethod

feynmanDenominators(G::labeledgraph)

USAGE : feynmanDenominators(G);

ASSUME : $G$ is a labeled graph with the variables of the bounded edges eliminated according to balancing condition. i.e. $G$ is a labeled graph where the function eliminatedVariables applied.

RETURN : ideal containing the propagators in the Feynman integral

#Examples

julia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
 julia> G=labelGraph(G,0);
 julia> Gelim=eliminateVariables(G);
 julia> feynmanDenominators(Gelim)
@@ -78,12 +78,12 @@
   q[1]^2
   p[1]^2 + 2*p[1]*q[1] + q[1]^2
   p[1]^2 + 2*p[1]*p[2] + 2*p[1]*q[1] + p[2]^2 + 2*p[2]*q[1] + q[1]^2
-  p[3]^2 - 2*p[3]*q[1] + q[1]^2
source
Feynman.labelGraphMethod

labelGraph(G::simple_graph,ch::Int)

USAGE : labelGraph(G,ch);

ASSUME : G is a graph and ch is either zero or prime.

RETURN : labeled graph with polynomialvariables qi at the bounded edges and functin filed variables pi at the unbounded edges over a prime filed of characteristic ch Initially we it sets the fields Baikovmatrix and elimvar empty.

#Examples

julia> G3=Feynman.simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
+  p[3]^2 - 2*p[3]*q[1] + q[1]^2
source
Feynman.labelGraphMethod

labelGraph(G::simple_graph,ch::Int)

USAGE : labelGraph(G,ch);

ASSUME : G is a graph and ch is either zero or prime.

RETURN : labeled graph with polynomialvariables qi at the bounded edges and functin filed variables pi at the unbounded edges over a prime filed of characteristic ch Initially we it sets the fields Baikovmatrix and elimvar empty.

#Examples

julia> G3=Feynman.simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);
 julia> G4=Feynman.labelGraph(G3,0);
 julia> Feynman.printLabeledGraph(G4);
 Graph with 4 vertices and 4 bounded edges 4 unbounded edges
 Edge terms:
-["(1, 3)=>q[1]", "(1, 2)=>q[2]", "(2, 4)=>q[3]", "(3, 4)=>q[4]", "1=>p[1]", "2=>p[2]", "3=>p[3]", "4=>p[4]"]
source
Feynman.makePolyMethod

makePoly(n::Int,m::Int)

USAGE : makePoly(m,n);

ASSUME : m and n are positve integers.

RETURN : A polynomial ring with vatiables t[1],...,t[n],z[1],...,z[m] over QQ.

source
Feynman.printIBPMethod

printIBP(set_IBP::Vector{Vector{}},n::Int64)

USAGE : printIBP(set_IBP,n);

ASSUME : set_IBP is the output of computeIBP

RETURN : It prints first n IBP relations

source
Feynman.printLabeledGraphMethod

printLabeledGraph(G::labeledgraph)

USAGE : printLabeledGraph(G);

ASSUME : G is a labeled graph.

Theory: This is the print function used in julia to print a labeled graph.

#Examples

julia> var=["x","y","z","p","q","r"];
+["(1, 3)=>q[1]", "(1, 2)=>q[2]", "(2, 4)=>q[3]", "(3, 4)=>q[4]", "1=>p[1]", "2=>p[2]", "3=>p[3]", "4=>p[4]"]
source
Feynman.makePolyMethod

makePoly(n::Int,m::Int)

USAGE : makePoly(m,n);

ASSUME : m and n are positve integers.

RETURN : A polynomial ring with vatiables t[1],...,t[n],z[1],...,z[m] over QQ.

source
Feynman.printIBPMethod

printIBP(set_IBP::Vector{Vector{}},n::Int64)

USAGE : printIBP(set_IBP,n);

ASSUME : set_IBP is the output of computeIBP

RETURN : It prints first n IBP relations

source
Feynman.printLabeledGraphMethod

printLabeledGraph(G::labeledgraph)

USAGE : printLabeledGraph(G);

ASSUME : G is a labeled graph.

Theory: This is the print function used in julia to print a labeled graph.

#Examples

julia> var=["x","y","z","p","q","r"];
 julia> R, (x,y,z,p,q,r)=polynomial_ring(QQ,var);
 julia> G=labeledgraph([1,2,3,4],[(1,3),(1,2),(1,2),(2,4),(3,4),(3,4)],R,var,R,[3,4],R,[[y+1,R(2)] [R(3),r+3]]);
 julia> printLabeledGraph(G);
@@ -91,7 +91,7 @@
 Graph with 4 vertices and 6 edges
 Edge terms:
 ["(1, 3)=>x", "(1, 2)=>y", "(1, 2)=>z", "(2, 4)=>p", "(3, 4)=>q", "(3, 4)=>r"]
-
source
Feynman.propagatorsMethod

propagators(G::labeledgraph)

USAGE: propagators(G);

ASSUME: G is a labeld graph.

RETURN: ideal, containing the denominators in the Feynman integral.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
+
source
Feynman.propagatorsMethod

propagators(G::labeledgraph)

USAGE: propagators(G);

ASSUME: G is a labeld graph.

RETURN: ideal, containing the denominators in the Feynman integral.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
 
 julia> G=labelGraph(G,0);
 
@@ -107,7 +107,7 @@
   2*p[1]*q[1] + q[1]^2
   -2*p[2]*q[1] + q[1]^2
   2*p[1]*q[1] - 2*p[1]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2
-  -2*p[2]*q[1] + 2*p[2]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2
source
Feynman.removeElimVarsMethod

removeElimVars(G::labeledgraph)

USAGE : removeElimVars(G);

ASSUME : G is a labled graph.

RETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminatedVariables.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
+  -2*p[2]*q[1] + 2*p[2]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2
source
Feynman.removeElimVarsMethod

removeElimVars(G::labeledgraph)

USAGE : removeElimVars(G);

ASSUME : G is a labled graph.

RETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminatedVariables.

#Examples

julia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);
 
 julia> G=labelGraph(G,0);
 
@@ -116,7 +116,7 @@
 julia> G=removeElimVars(Gelim);
 QQMPolyRingElem[p[1], p[2], p[3], p[4], q[1], q[2]]
 julia> G.elimvar
-Any[]
source
Feynman.removeParameterMethod

removeParameter(P::Ring,l::Vector)

USAGE : removeParameter(R,l);

ASSUME : R is a polynomial ring.

RETURN : polynomial ring with the parameters at indeces in l removed.

#Examples

julia> R,v,w=polynomial_ring(QQ,"p"=>(1:5),"q"=>(1:6));
+Any[]
source
Feynman.removeParameterMethod

removeParameter(P::Ring,l::Vector)

USAGE : removeParameter(R,l);

ASSUME : R is a polynomial ring.

RETURN : polynomial ring with the parameters at indeces in l removed.

#Examples

julia> R,v,w=polynomial_ring(QQ,"p"=>(1:5),"q"=>(1:6));
 julia> I=ideal(R,[v[1],v[2],v[3],v[4],v[5],w[1]]);
 julia> u=complement_of_prime_ideal(I);
 julia> S,iso=localization(R,u);
@@ -133,7 +133,7 @@
 Localization
   of multivariate polynomial ring in 10 variables p[1], p[3], p[4], p[5], ..., q[6]
     over rational field
-  at complement of prime ideal (p[1], p[3], p[4], p[5], q[1])
source
Feynman.removeVariableMethod

removeVariable(R::Ring,l::Vector)

USAGE: removeVariable(G,l);

ASSUME: R is a polynomial ring.

RERUTN: polynomial ring with the vaiables at indeces given in l removed.

#Examples

julia> R,v=polynomial_ring(QQ,"p"=>(1:3));
+  at complement of prime ideal (p[1], p[3], p[4], p[5], q[1])
source
Feynman.removeVariableMethod

removeVariable(R::Ring,l::Vector)

USAGE: removeVariable(G,l);

ASSUME: R is a polynomial ring.

RERUTN: polynomial ring with the vaiables at indeces given in l removed.

#Examples

julia> R,v=polynomial_ring(QQ,"p"=>(1:3));
 julia> Feynman.removeVariable(R,[2])
 Multivariate polynomial ring in 2 variables p[1], p[3]
-  over rational field
source
Feynman.removeVariableLocalMethod

removeVariableLocal(P::Ring,l::Vector)

USAGE : removeVariableLocal(P,l);

ASSUME : P is a local ring locaized by the maximal ideal generated by parameters.

RETURN : local ring where the variables at indeces in l removed.

source
Feynman.substituteGraphMethod

substituteGraph(G::labeledgraph,a::RingElement,b::RingElement)

USAGE :substituteGraph(G,a,b)

ASSUME : G is a labeled graph

RETURN :a labelled graph with labelling where each 'a' is replaced 'b'

source
+ over rational field
source
Feynman.removeVariableLocalMethod

removeVariableLocal(P::Ring,l::Vector)

USAGE : removeVariableLocal(P,l);

ASSUME : P is a local ring locaized by the maximal ideal generated by parameters.

RETURN : local ring where the variables at indeces in l removed.

source
Feynman.substituteGraphMethod

substituteGraph(G::labeledgraph,a::RingElement,b::RingElement)

USAGE :substituteGraph(G,a,b)

ASSUME : G is a labeled graph

RETURN :a labelled graph with labelling where each 'a' is replaced 'b'

source
diff --git a/docs/build/index.html b/docs/build/index.html index 33ca092..19139ed 100644 --- a/docs/build/index.html +++ b/docs/build/index.html @@ -1,2 +1,2 @@ -Feynman · Feynman.jl

Feynman

Documentation for Feynman.

The package Feynman computes complete set of IBP identities of the Feynman integral associated to a given Feynman graph using the powerful module-intersection integration-by-parts (IBP) method, suitable for multi-loop and multi-scale Feynman integral reduction. It will provide an application programming interface(API) in OSCAR to use packages NeatIBP, pfd-parallel to make this computation much faster.The package Feynman is based on the computer algebra system OSCAR and is provided as a package for the Julia programming language.

+Feynman · Feynman.jl

Feynman

Documentation for Feynman.

The package Feynman computes complete set of IBP identities of the Feynman integral associated to a given Feynman graph using the powerful module-intersection integration-by-parts (IBP) method, suitable for multi-loop and multi-scale Feynman integral reduction. It will provide an application programming interface(API) in OSCAR to use packages NeatIBP, pfd-parallel to make this computation much faster.The package Feynman is based on the computer algebra system OSCAR and is provided as a package for the Julia programming language.

diff --git a/docs/build/objects.inv b/docs/build/objects.inv index c8eb581..9a64772 100644 Binary files a/docs/build/objects.inv and b/docs/build/objects.inv differ diff --git a/docs/build/search_index.js b/docs/build/search_index.js index 601012c..a7d53b8 100644 --- a/docs/build/search_index.js +++ b/docs/build/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"Functions_sing.html","page":"-","title":"-","text":"CurrentModule = Feynman","category":"page"},{"location":"Functions_sing.html#Feynman.lib-function-description","page":"-","title":"Feynman.lib function description","text":"","category":"section"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: printMat(matrix M)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : printMat(M); M matrix@* ASSUME : M is a matrix. THEORY : This is the print function used by Singular to print a matrix. KEYWORDS: matrix Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x),lp;\nmatrix M[2][3]=1,243,3,4,522222,6;\nprintMat(M);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: printGraph(graph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : printGraph(G); G graph@* ASSUME : G is a graph. THEORY : This is the print function used by Singular to print a graph. KEYWORDS: graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nG;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: printLabeledGraph(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : printLabeledGraph(G); G labeledgraph@* ASSUME : G is a labeled graph. THEORY : This is the print function used by Singular to print a labeled graph. KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=(0),q(1..6),dp;\nlabeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R);\nG;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: printIBP(oneIBP I)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : printIBP(I); I oneIBP@* ASSUME : I is an IBP identity computed using computeIBP. THEORY : This is the print function used by Singular to print an IBP relation. KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: printsetIBP(setIBP I)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : printIBP(I); I setIBP@* ASSUME : I is the set of IBP identities computed using computeIBP. THEORY : This is the print function used by Singular to print setIBP. KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: makeGraph(list v, list e)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : makeGraph(v,e); v list, e list@* ASSUME : v is a list of integers, e is a list of two element lists of v. RETURN : graph with vertices v and edges e THEORY : Creates a graph from a list of vertices and edges. The vertices can be any type. The data structure respects the ordering of vertices of edges, so can be used for directed graphs, KEYWORDS: graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)));\nG;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: makeLabeledGraph(list v, list e, def R, list lab, def Rpoly)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : makeLabeledGraph(v,e,R,l,P); v list, e list, R ring, l list, P ring @* ASSUME : v is a list of integers, e is a list of two element lists of pairwise different elements of v, R is a ring, l is a list of labels, P is a ring RETURN : labeled graph with vertices v and edges e with labels of the edges in R with infinite edges being constants THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=(0),q(1..6),dp;\nlabeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R);\nG;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: labelGraph(graph G, int ch)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : labelGraph(G); G graph@* ASSUME : G is a graph and ch is either zero or a prime. RETURN : labeled graph with polynomial variables qi at the bounded edges and function field variables pi at the unbounded edges over a prime field of characteristic ch THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlG;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: balancingIdeal(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : balancingIdeal(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : ideal of balancing condition of the graph, basering is assumed to be G.over THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\ndef R= lG.over;\nsetring R;\nideal I = balancingIdeal(lG);\nI;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: eliminateVariables(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : eliminateVariables(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition and using an ordering qipj. THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\neliminateVariables(lG);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: removeVariable(def R, int j)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : removeVariable(R); R ring@* ASSUME : R is a polynomial ring RETURN : polynomial ring with j-th variable removed THEORY : KEYWORDS: ring Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),(lp(2),dp(1));\ndef S= removeVariable(R,2);\nS;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: removeParameter(def R, int j)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : removeParameter(R); R ring@* ASSUME : R is a polynomial ring RETURN : polynomial ring with j-th variable removed THEORY : KEYWORDS: ring Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=(0,p(1),p(2),p(3)),(x,y,z),(lp(2),dp(1));\ndef S= removeParameter(R,2);\nS;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: substituteGraph(labeledgraph G, poly a, poly b)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : substituteGraph(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : substitute the variable a in the labeling by b THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: feynmanDenominators(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : feynmanDenominators(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : ideal containing the propagators in the Feynman integral THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph lGelim = eliminateVariables(lG);\ndef R = lGelim.over;\nsetring R;\nideal I = feynmanDenominators(lGelim);\nI;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: propagators(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : propagators(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : ideal, containing the denominators in the Feynman integral THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph lGelim = eliminateVariables(lG);\ndef R = lGelim.over;\nsetring R;\nideal I = propagators(lGelim);\nI;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: ISP(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : ISP(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : ideal, containing the irreducible scalar products, that is, those scalar product which are not linearly dependent on the propagators. THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph G1 = eliminateVariables(lG);\nG1;\nring R= G1.over;\nsetring R;\nR;\nISP(G1);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: removeElimVars(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : removeElimVars(G); G labeledgraph@* ASSUME : G is a labeled graph RETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminateVariables. THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph G1 = eliminateVariables(lG);\nlabeledgraph G2 = removeElimVars(G1);\nG2;\nring R= G2.over;\nsetring R;\nR;\nG2;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: computeBaikovMatrix(def G0)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : computeBaikovMatrix(G); G labeledgraph, or G graph@* ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. RETURN : a labeled graph G1, computes the Baikov matrix of G defined in G1.baikovover and stores it in G1.baikovmatrix THEORY : KEYWORDS: Feynman graph Example : ","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB= G1.baikovover;\nsetring RB;\nRB;\nmatrix B = G1.baikovmatrix;\nprintMat(B);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: computeM1(def G0)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : computeM1(G0); G labeledgraph, or G graph@* ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. RETURN : The module M1 over G1.baikovover that requires to compute IBP identities THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB=G1.baikovover;\nRB;\nmodule ML=computeM1(G1);\nML;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: computeM2(def G0,list Nu)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : computeM2(G,Nu); G labeledgraph, or G graph@* ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed. RETURN : The module M2 over G1.baikovover that requires to compute IBP identities THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB=G1.baikovover;\nRB;\nmodule M2=computeM2(G1,list(1,1,1,0,0,1,0,0,0));\nM2;\nmodule M2=computeM2(G1, list(1,1,1,1,1,1,1,-5,0));\nM2;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: computeIBP(def G0,list Nu)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : computeIBP(G0,Nu); G labeledgraph, or G graph@* ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed. RETURN : The set of IBPS correspond to G0 and given Nu. THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nS;\noneIBP I=S.IBP[1];\nI;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getSector(list l)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getSector(l); l list@* ASSUME : l is a list of integer indices of a Feynman integral RETURN : list L, L[1]=s The sector (a list of 1s and 0s) that the corresponding integral belongs L[2]=n The sector in that the integral belongs THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"list l=list(1,2,-3,-4,0,1);\nlist s=getSector(l);\ns;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: listCombinations(list L,int r)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : listCombintions(L,r); L list, r int@* ASSUME : r is a positive integer such that r < size(L)> RETURN : list of r-combinations of the elements in the list L THEORY : KEYWORDS: feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist L=listCombinations(list(1,2,3,4),3);\nL[1];","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: generateWebSectors(list seed)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : generateWebSectors(seed);seed list@* ASSUME : seed is a list of integer values. RETURN : Web structure of the sectors L, where L is the list and L[1] is the sector that correspond to the given seed and L[i] contain the subsectors of the sectors in L[i-1]. Note that sector maps between the sectors have not been setted. THEORY : KEYWORDS: feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: isSubList(list l1,list l2)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : isSubList(l1,l2); l1 list, l2 list@* ASSUME : l1 and l2 are list of positive integers RETURN : 1 if elements in l1 contain in l2 0 if elements in l1 do not contain in l2 THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l1=list(1,2,3,4,5,6,7);\nlist l2=list(1,4,6);\nlist l3=list(1,2,8);\nlist l4=list(1,4,6);\nisSubList(l2,l1);\nisSubList(l3,l1);\nisSubList(l1,l2);\nisSubList(l2,l4);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getSectorMap(list L1,list L2)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getSectorMap(L1,L2); L1 list, L2 list, sector@* ASSUME : L1 and L2 are lists of sectors where the lab field of each sector in both lists are filled(i.e. two layers of a sector web) RETURN : L1 where sectorMap of each sector in the list L1 is filled. THEORY : KEYWORDS: sector,graph,feynman,setIBP Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=getSectorMap(w[1],w[2]);\nw1[1].sectorMap;\nlist w2=getSectorMap(w[2],w[3]);\nw2[2].sectorMap;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: setSectorMap(list sectorWeb)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : setSectorMap(sectorWeb); sectorWeb list, sector@* ASSUME : sectorWeb is an output produced by the function @*generateWebSectors RETURN : sectorWeb where the field sectorMap field of each sector in sectorWeb is filled. THEORY : KEYWORDS: sector, generateWebSectors, getSectorMap Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: findSector(list sectorWeb, list currentPosition, list L)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : findSector(sectorWeb,currentPosition,L); sectorWeb list,currentPosition list, L list, ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, L is an output produced by the function getSector@ RETURN : position of the sector in the sectorWeb, where the L belongs. -1, if the sector is not found THEORY : KEYWORDS: sector, generateWebSectors, getSectorMap Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist oneInt=list(4,-1,-1,0,-1,-2);\nlist L=getSector(oneInt);\ndef pos=findSector(w1,list(1,1),L[2]);\nisSubList(w[pos[1]][pos[2]].lab,L[2])==1 && isSubList(L[2],w[pos[1]][pos[2]].lab); //this returns 1, since the given integral is in the sector at pos.\n\n//example for a integral that is not in the set\nlist oneInt=list(4,1,0,-1,-2,3);\nlist L=getSector(oneInt);\ndef pos=findSector(w1,list(1,1),L[2]);\npos;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: updateOneSector(list sectorWeb, list currentPosition,list oneInt)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : updateOneSector(sectorWeb,currentPosition,oneInt); sectorWeb list, sector@* ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, oneInt is a list of indeces of the denominators associated to an integral correspond to a given feynman graph. Also assume the sectorweb isalso associated to the same feynman graph. RETURN : updated sectorWeb, where the oneInt is assigned to the targetInts field of the seector correspond to provided oneInt THEORY : KEYWORDS: sector, generateWebSectors, getSectorMap,updateWeb,findSector Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist oneInt=list(4,-1,-1,0,-1,-2);\nlist w2=updateOneSector(w1,list(1,1),oneInt);\nlist L=getSector(oneInt);\nL[2];\nw2[3][2].lab;","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: updateWeb(list sectorWeb, list currentPosition,list setInt)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : updateWeb(sectorWeb,currentPosition,setInt); sectorWeb list, sector@* ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, setInt is a list of indeces of the denominators associated to integrals correspond to a given feynman graph. Also assume the sectorweb is also associated to the same feynman graph. RETURN : list (sectorWeb,MasterInt,notInWeb) where, sectorWeb is the updated web by assingning integrals to correspondng sectors, masterInt is the list integrals belong to the sector at currentPosition notInWeb is the list of integrals that are not belong the integral family associated the SectorWeb. THEORY : KEYWORDS: generateWebSectors, getSector,findSector Example : Example 1:","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"ring R=(0,(t,D)),(x,y,z),dp;\nlist l=list(1,2,1);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist setInt=list(list(1,2,3),list(-1,1,2),list(1,1,-1),list(-1,0,-2));\nlist setInt=list(list(1,2,3));\nlist setInt=list(l);\n \nlist L1=pickHighestSector(setInt);\nlist w2=updateWeb(w1,list(1,1),L1[1]);\nw2[2]; //master integrals\nw2[3];//integrals not in the web","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"Example 2:","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RZ= G1.baikovover;\nprintMat(G1.baikovmatrix);\n \nlist setInt=list(list(1,1,1,-1,-3,1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));\nlist web=generateWebSectors(setInt[1]);\nlist w1=setSectorMap(web); \nweb=w1;\nlist L1=pickHighestSector(setInt); \n \nlist w2=updateWeb(web,list(1,1),L1[1]); //updateWeb returns a list w3 with w3[1]=sectorWeb,w3[2]=list of master Integrals, w3[3]=list of integrals that not belong to the current web\nweb=w2[1]; \nsetIBP S=computeIBP(G1,L1[1][1]);\nring R=S.over;\nsetring R;\nlist L=getRedIBPs(S,101); //L[1]=list of independent IBPs,L[2]=list of master integrals\nlist independIBPs=L[1];\nlist masterAndTailIntgrals=L[2];\nsize(independIBPs) < size(S.IBP); //number of linearly independent set of IBPs are less than the number of orginal IBPs. So this returns true\n \noneIBP I1=independIBPs[18]; //Here is an example for one IBP i\nI1;\nlist w3=updateWeb(web,list(1,1),masterAndTailIntgrals); //updateWeb returns a list w3 with w3[1]=sectorWeb,w3[2]=list of master Integrals, w3[3]=list of integrals that not belong to the current web\nweb=w3[1]; \nsize(web[1][1].targetInts);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getHighestSectorIndex(list targetInt)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : pickHighestSector(targetInt); G is a list of list of integers of same length ASSUME : targetInt is the list of target integrals RETURN : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs, THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: pickHighestSector(list targetInt)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : pickHighestSector(targetInt); G is a list of list of integers of same length ASSUME : targetInt is the list of target integrals RETURN : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs, THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); //here we can do the reduction using one web\nlist L=pickHighestSector(setInt);\nsize(L);\n\nlist setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2)); //here we need more than one web\nlist L=pickHighestSector(setInt);\nsize(L);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getSortMeasures(list l)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getSortMeasures(l); l list, ASSUME : l is a list of integers (i.e a seed). RETURN : list of sort measures that are used in Laporta Algorithm THEORY : KEYWORDS: Feynman graph Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); \ngetSortMeasures(l);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: extractCoef(oneIBP I,list ind,list l)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : extractCoef(I,ind,l); I oneIBP,ind list,l list, ASSUME : ind is the output of getSortedIntegrals, and l is the list of values over the base field I.baikovover and size(l)=npars(I.baikovover) RETURN : list of values where, the i-th element is the evaluation of coefficient function at values in the list l of the IBP relation oneIBP, whose index is i=ind[i][1]. THEORY : KEYWORDS: feynman graph,IBPs Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist ind = getSortedIntegrals(S);\noneIBP I=S.IBP[1];\nI;\nlist rowCorrespondToI=extractCoef(I,ind,list(1,2,9)); \n \n// the nonzero coefficient of the IBP relation correspond to integral I(1,1,0,1,0,0,0,1,0).\n// when we use lex ordering to order the used integrals in set of IBPs, this integral correspond to the 82th place.\n// so we get only a nonzero value at position 82 and the below, the output will be -14.\n\nrowCorrespondToI[82]; //output will be -14","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: setMat(setIBP S,list val, list ind)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : setMat(S,val); S setIBP,val list ASSUME : size(val)=npars(I.baikovover) and val list of integers and ind is the output of getSortedIntegrals(S) RETURN : atrix,where i-th row correspond to the evaluation of coefficient functions of i-th IBP in setIBP. Columns of the matrix correspond to the all used indices in the setIBP which are ordered with respect to the output ofgetSortMeasures. THEORY : KEYWORDS: feynman graph,IBPs Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist ind = getSortedIntegrals(S);\nmatrix N=setMat(S,list(1,2,3),ind);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getRedIBPs(setIBP S,int p)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getRedIBPs(S,p); ASSUME : S is setIBP, and p is a prime number. RETURN : list L, L[1]=indIBP, L[2]=seed where, indIBP contain the linearly independent IBP relations of setIBP which are obtained by finite field row reduction over the field Fp. seed contain the indeces correspond to the non-free columns in rref. THEORY : KEYWORDS: feynman graph,IBPs Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist L=getRedIBPs(S,101);\nsize(L[1])","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getSortedIntegrals(setIBP I)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getSortedIntegrals(I); I setIBP, ASSUME : RETURN : list ind where each entry is a pair (indv,sortmeasures), indv is the list of indices(seed) appered in the setIBP and sortmeasures is the output of getSortMeasures(indv). The function getSortedIntegrals extract the seeds appeared in the IBP identities of the setIBP, sort them lexicographically based on the values got from getSortMeasures and return the output. THEORY : KEYWORDS: Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist L=getSortedIntegrals(S); //L list of pair of sorted integrals and the corresponding sorting measures\nL[1];","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: computeManyIBP(def G0,list setNu)","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : computeManyIBP(G0,setNu); G0 graph@*, ASSUME : setNu is a list of seeds correspond to the graph G0 which are belong to the same sector RETURN : setIBP S, where it contains all the IBP relations obtained by module intersection and seeding THEORY : KEYWORDS: Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\n\n//here we compute set of IBPs correspond to two seeds seperately\nsetIBP IBP1=computeIBP(G1,list(1,1,0,1,0,1,0,-1,0));\nsetIBP IBP2=computeIBP(G1,list(1,1,0,1,0,1,0,-3,0));\nsize(IBP1.IBP);\nsize(IBP2.IBP);\n \n//here we compute set of IBPs correspond both seeds simultaneously \n//We can use this only when both integrals belongs to the same sector\n\nsetIBP S=computeManyIBP(G,list(list(1,1,0,1,0,1,0,-1,0),list(1,1,0,1,0,1,0,-3,0)));\nsize(S.IBP); ","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
procedure: getReducedIBPSystem(graph G,list targetInt )","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"USAGE : getReducedIBPSystem(G,targetInt); targetInt list,G graph@*, ASSUME : G is a graph and targetInt is a list of seeds of target integrals. RETURN : ist (reducedIBPs,MI) where reducedIBPs::setIBP, MI::list. reducedIBPs contain the reduced IBP system for the target integrals MI contain the master integrals THEORY : KEYWORDS: Feynman graph,IBPs Example :","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlist targetInt=list(list(1,1,1,-1,-3,-1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));\nlist finalset=getReducedIBPSystem(G,targetInt);\nsetIBP S=finalset[1];\nring R=S.over;\nsetring R;\noneIBP I=S.IBP[5];\nI;\nsize(finalset[2]);","category":"page"},{"location":"Functions_sing.html","page":"-","title":"-","text":"
","category":"page"},{"location":"Overview.html#Overview","page":"Overview","title":"Overview","text":"","category":"section"},{"location":"Overview.html","page":"Overview","title":"Overview","text":"Modules = [Feynman]","category":"page"},{"location":"Overview.html","page":"Overview","title":"Overview","text":"Modules = [Feynman]","category":"page"},{"location":"Overview.html#Feynman.Feynman","page":"Overview","title":"Feynman.Feynman","text":"Feynman is a package for computing integration-by-part identities (IBPs) of a Feynman Integral associated to Feynman graph using module intesecation method. \nThis package also provides an interface of Oscar to use the packages NeatIBP developed using Singular and GPI-Space.\n\n\n\n\n\n","category":"module"},{"location":"Overview.html#Feynman.ISP-Tuple{labeledgraph}","page":"Overview","title":"Feynman.ISP","text":"ISP(G::labeledgraph)\n\nUSAGE : ISP(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : idal containing the irreducible scalar products(ISPs), that is, those scalar product which are not linearly dependent on the propagators.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=eliminateVariables(G);\n\njulia> ISP(Gelim)\nIdeal generated by\n p[3]*q[1]\n p[1]*q[2]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.balancingIdeal-Tuple{labeledgraph}","page":"Overview","title":"Feynman.balancingIdeal","text":"balancingIdeal(G::labeledgraph)\n\nUSAGE : balancingIdeal(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : Ideal of balancing condition of the graph. i.e Ideal generated by the relation of the momentums which are obtained by applying momentum conservation law to external mementa, and at each vertex; This is an ideal of the ring G.over.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> balancingIdeal(G)\n\nIdeal generated by\np[1] + p[2] + p[3] + p[4]\np[1] + q[1] + q[2]\np[2] - q[2] + q[3]\np[3] - q[1] + q[4]\np[4] - q[3] - q[4]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.computeBaikovMatrix-Tuple{simple_graph}","page":"Overview","title":"Feynman.computeBaikovMatrix","text":"computeBaikovMatrix(G::simple_graphgraph)\n\nUSAGE : computeBaikovMatrix(G);\n\nASSUME : G is a graph, or G is a labled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.\n\nRETURN : a labeled graph G, where the computed Baikov matrix and the polynomial ring where baikovmatrix is defined are stored in G.baikovmatrix and G.baikovover respectively.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);\n\njulia> G=Feynman.labelGraph(G,0);\n\njulia> G=Feynman.eliminateVariables(G);\n\njulia> G=Feynman.removeElimVars(G);\nQQMPolyRingElem[p[1], p[2], p[3], p[4], p[5], q[1], q[2]]\njulia> G=Feynman.computeBaikovMatrix(G);\nlabels used for Gram matrix of external loop momenta:\n[\"p[1]*p[2] => 1//2*t[1]\"]\n[\"p[1]*p[3] => 1//2*t[2]\"]\n[\"p[2]*p[3] => 1//2*t[3]\"]\n[\"p[1]*p[4] => 1//2*t[4]\"]\n[\"p[2]*p[4] => 1//2*t[5]\"]\n[\"p[3]*p[4] => -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5]\"]\nAssignment of Baikov variables (Z_i) are:\n[\"z[1] => p[3]*q[1]\"]\n[\"z[2] => p[4]*q[1]\"]\n[\"z[3] => q[1]^2\"]\n[\"z[4] => -2*p[1]*q[1] + q[1]^2\"]\n[\"z[5] => 2*p[1]*p[2] - 2*p[1]*q[1] - 2*p[2]*q[1] + q[1]^2\"]\n[\"z[6] => p[1]*q[2]\"]\n[\"z[7] => q[2]^2\"]\n[\"z[8] => -2*p[1]*p[2] - 2*p[1]*p[3] - 2*p[1]*p[4] - 2*p[2]*p[3] - 2*p[2]*p[4] - 2*p[3]*q[2] - 2*p[4]*q[2] + q[2]^2\"]\n[\"z[9] => -2*p[4]*q[2] + q[2]^2\"]\n[\"z[10] => q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n[\"z[11] => -2*p[1]*q[1] - 2*p[1]*q[2] - 2*p[2]*q[1] - 2*p[2]*q[2] - 2*p[3]*q[1] - 2*p[3]*q[2] - 2*p[4]*q[1] - 2*p[4]*q[2] + q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n\njulia> G.baikovmatrix\n6×6 Matrix{RingElem}:\n 0 … z[6]\n 1//2*t[1] 1//2*t[2] + 1//2*t[3] + 1//2*t[4] + 1//2*t[5] - z[1] - z[2] - 1//2*z[3] + 1//2*z[5] - z[6] - 1//2*z[7] + 1//2*z[8] + 1//2*z[10] - 1//2*z[11]\n 1//2*t[2] -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]\n 1//2*t[3] 1//2*z[7] - 1//2*z[9]\n 1//2*z[3] - 1//2*z[4] -1//2*z[3] - 1//2*z[7] + 1//2*z[10]\n z[6] … z[7]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.computeIBP-Tuple{simple_graph, Vector{Int64}, Int64, Bool}","page":"Overview","title":"Feynman.computeIBP","text":"computeIBP(G::labeledgraph,Nu::Vector{Int64},cutDeg::Int)\n\nUSAGE : computeIBP(G,ν,d); \n\nASSUME : G is a labeled graph, d is a positive integer and ν is vector of integers correspond to the parent diagram of the integral.\n\nRETURN : A set of simplified IBP identities without double propagators (without performing trimming) . \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.eliminateVariables-Tuple{labeledgraph}","page":"Overview","title":"Feynman.eliminateVariables","text":"eliminateVariables(G::labeledgraph)\n\nUSAGE : eliminateVariables(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> G=eliminateVariables(G);\njulia> printLabeledGraph(G);\n\nGraph with 4 vertices and 4 bounded edges 4 unbounded edges\nEdge terms:\n[\"(1, 3)=>q[1]\", \"(1, 2)=>-p[1] - q[1]\", \"(2, 4)=>-p[1] - p[2] - q[1]\", \"(3, 4)=>-p[3] + q[1]\", \"1=>p[1]\", \"2=>p[2]\", \"3=>p[3]\", \"4=>-p[1] - p[2] - p[3]\"]\njulia> G.elimvar\n\n4-element Vector{QQMPolyRingElem}:\n p[4]\n q[2]\n q[3]\n q[4]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.feynmanDenominators-Tuple{labeledgraph}","page":"Overview","title":"Feynman.feynmanDenominators","text":"feynmanDenominators(G::labeledgraph)\n\nUSAGE : feynmanDenominators(G);\n\nASSUME : G is a labeled graph with the variables of the bounded edges eliminated according to balancing condition. i.e. G is a labeled graph where the function eliminatedVariables applied.\n\nRETURN : ideal containing the propagators in the Feynman integral\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> Gelim=eliminateVariables(G);\njulia> feynmanDenominators(Gelim)\nIdeal generated by\n q[1]^2\n p[1]^2 + 2*p[1]*q[1] + q[1]^2\n p[1]^2 + 2*p[1]*p[2] + 2*p[1]*q[1] + p[2]^2 + 2*p[2]*q[1] + q[1]^2\n p[3]^2 - 2*p[3]*q[1] + q[1]^2\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.labelGraph-Tuple{simple_graph, Int64}","page":"Overview","title":"Feynman.labelGraph","text":"labelGraph(G::simple_graph,ch::Int)\n\nUSAGE : labelGraph(G,ch);\n\nASSUME : G is a graph and ch is either zero or prime.\n\nRETURN : labeled graph with polynomialvariables qi at the bounded edges and functin filed variables pi at the unbounded edges over a prime filed of characteristic ch Initially we it sets the fields Baikovmatrix and elimvar empty.\n\n#Examples\n\njulia> G3=Feynman.simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G4=Feynman.labelGraph(G3,0);\njulia> Feynman.printLabeledGraph(G4);\nGraph with 4 vertices and 4 bounded edges 4 unbounded edges\nEdge terms:\n[\"(1, 3)=>q[1]\", \"(1, 2)=>q[2]\", \"(2, 4)=>q[3]\", \"(3, 4)=>q[4]\", \"1=>p[1]\", \"2=>p[2]\", \"3=>p[3]\", \"4=>p[4]\"]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.makePoly-Tuple{Int64, Int64}","page":"Overview","title":"Feynman.makePoly","text":"makePoly(n::Int,m::Int)\n\nUSAGE : makePoly(m,n);\n\nASSUME : m and n are positve integers.\n\nRETURN : A polynomial ring with vatiables t[1],...,t[n],z[1],...,z[m] over QQ. \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.printIBP-Tuple{Vector, Int64}","page":"Overview","title":"Feynman.printIBP","text":"printIBP(set_IBP::Vector{Vector{}},n::Int64)\n\nUSAGE : printIBP(set_IBP,n); \n\nASSUME : set_IBP is the output of computeIBP\n\nRETURN : It prints first n IBP relations \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.printLabeledGraph-Tuple{labeledgraph}","page":"Overview","title":"Feynman.printLabeledGraph","text":"printLabeledGraph(G::labeledgraph)\n\nUSAGE : printLabeledGraph(G);\n\nASSUME : G is a labeled graph.\n\nTheory: This is the print function used in julia to print a labeled graph.\n\n#Examples\n\njulia> var=[\"x\",\"y\",\"z\",\"p\",\"q\",\"r\"];\njulia> R, (x,y,z,p,q,r)=polynomial_ring(QQ,var);\njulia> G=labeledgraph([1,2,3,4],[(1,3),(1,2),(1,2),(2,4),(3,4),(3,4)],R,var,R,[3,4],R,[[y+1,R(2)] [R(3),r+3]]);\njulia> printLabeledGraph(G);\n\nGraph with 4 vertices and 6 edges\nEdge terms:\n[\"(1, 3)=>x\", \"(1, 2)=>y\", \"(1, 2)=>z\", \"(2, 4)=>p\", \"(3, 4)=>q\", \"(3, 4)=>r\"]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.propagators-Tuple{labeledgraph}","page":"Overview","title":"Feynman.propagators","text":"propagators(G::labeledgraph)\n\nUSAGE: propagators(G);\n\nASSUME: G is a labeld graph.\n\nRETURN: ideal, containing the denominators in the Feynman integral.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=removeElimVars(Gelim);\n\njulia> Gelim=removeElimVars(Gelim);\n\njulia> propagators(Gelim)\nIdeal generated by\n q[1]^2\n q[2]^2\n 2*p[1]*p[3] + 2*p[1]*q[1] - 2*p[1]*q[2] + 2*p[3]*q[1] - 2*p[3]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n 2*p[1]*q[1] + q[1]^2\n -2*p[2]*q[1] + q[1]^2\n 2*p[1]*q[1] - 2*p[1]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n -2*p[2]*q[1] + 2*p[2]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeElimVars-Tuple{labeledgraph}","page":"Overview","title":"Feynman.removeElimVars","text":"removeElimVars(G::labeledgraph)\n\nUSAGE : removeElimVars(G);\n\nASSUME : G is a labled graph.\n\nRETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminatedVariables.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=eliminateVariables(G);\n\njulia> G=removeElimVars(Gelim);\nQQMPolyRingElem[p[1], p[2], p[3], p[4], q[1], q[2]]\njulia> G.elimvar\nAny[]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeParameter-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeParameter","text":"removeParameter(P::Ring,l::Vector)\n\nUSAGE : removeParameter(R,l);\n\nASSUME : R is a polynomial ring.\n\nRETURN : polynomial ring with the parameters at indeces in l removed.\n\n#Examples\n\njulia> R,v,w=polynomial_ring(QQ,\"p\"=>(1:5),\"q\"=>(1:6));\njulia> I=ideal(R,[v[1],v[2],v[3],v[4],v[5],w[1]]);\njulia> u=complement_of_prime_ideal(I);\njulia> S,iso=localization(R,u);\njulia> S\n\njulia> S\nLocalization\n of multivariate polynomial ring in 11 variables p[1], p[2], p[3], p[4], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[2], p[3], p[4], p[5], q[1])\n\n\n julia> removeParameter(S,[2]) \nLocalization\n of multivariate polynomial ring in 10 variables p[1], p[3], p[4], p[5], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[3], p[4], p[5], q[1])\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariable-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariable","text":"removeVariable(R::Ring,l::Vector)\n\nUSAGE: removeVariable(G,l);\n\nASSUME: R is a polynomial ring.\n\nRERUTN: polynomial ring with the vaiables at indeces given in l removed.\n\n#Examples\n\njulia> R,v=polynomial_ring(QQ,\"p\"=>(1:3));\njulia> Feynman.removeVariable(R,[2])\nMultivariate polynomial ring in 2 variables p[1], p[3]\n over rational field\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariableLocal-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariableLocal","text":"removeVariableLocal(P::Ring,l::Vector)\n\nUSAGE : removeVariableLocal(P,l);\n\nASSUME : P is a local ring locaized by the maximal ideal generated by parameters.\n\nRETURN : local ring where the variables at indeces in l removed. \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.substituteGraph-Tuple{labeledgraph, AbstractAlgebra.RingElement, AbstractAlgebra.RingElement}","page":"Overview","title":"Feynman.substituteGraph","text":"substituteGraph(G::labeledgraph,a::RingElement,b::RingElement)\n\nUSAGE :substituteGraph(G,a,b)\n\nASSUME : G is a labeled graph\n\nRETURN :a labelled graph with labelling where each 'a' is replaced 'b'\n\n\n\n\n\n","category":"method"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"CurrentModule = Feynman","category":"page"},{"location":"Example.html#Example-:-Fully-massless-nonplanar-double-pentagon","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"","category":"section"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"(Image: alt text)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"To provide an example on how to use our package, we calculate the Baikov matrix of the fully massless nonplanar double pentagon. ","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We define the graph G from the list of vertices and list of edges. The direction of momenta are taken from the direction of edges. All external momenta are taken to be outgoing.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We then assign polynomial variables qi, at bounded edges and function field variables pi at the unbounded edges over a prime filed of characteristic 0.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\njulia> G=labelGraph(G,0);\n\n\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then we use balancing condition of the graph (realtions of momenta which are obtained by applying momentum conservation law at each vertex of the graph and to the whole graph) to rewrite each dependent momenta in terms of the eliments in the ordered set V of external momenta and loop momenta. Here we use invlex ordering on p1pEq1qL to choose independent external momenta and independent loop momenta. G.elimVars will store the eliminated variables.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=eliminateVariables(G);\njulia> printLabeledGraph(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G.elimvar 7-element Vector{QQMPolyRingElem}: p[5] q[3] q[4] q[5] q[6] q[7] q[8]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then the irreducible scalar products associated to G can be printed as follows:","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia>ISP(G)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Ideal generated by p[3]q[1] p[4]q[1] p[1]*q[2]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\nWe should remove the eliminated variables from $G$, in order to compute the Baikov matrix of $G$.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=removeElimVars(G); QQMPolyRingElem[p[1], p[2], p[3], p[4], p[5], q[1], q[2]]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\n\nWe then calculate the Baikov matrix associated to Feynman integral of $G$. It will also print the assignment of Baikov variables $z[i]$ to each inverse propagators and irreducible scalar products of $G$.\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=computeBaikovMatrix(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"labels used for Gram matrix of external loop momenta:\n[\"p[1]*p[2] => 1//2*t[1]\"]\n[\"p[1]*p[3] => 1//2*t[2]\"]\n[\"p[2]*p[3] => 1//2*t[3]\"]\n[\"p[1]*p[4] => 1//2*t[4]\"]\n[\"p[2]*p[4] => 1//2*t[5]\"]\n[\"p[3]*p[4] => -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5]\"]\nAssignment of Baikov variables (Z_i) are:\n[\"z[1] => p[3]*q[1]\"]\n[\"z[2] => p[4]*q[1]\"]\n[\"z[3] => q[1]^2\"]\n[\"z[4] => -2*p[1]*q[1] + q[1]^2\"]\n[\"z[5] => 2*p[1]*p[2] - 2*p[1]*q[1] - 2*p[2]*q[1] + q[1]^2\"]\n[\"z[6] => p[1]*q[2]\"]\n[\"z[7] => q[2]^2\"]\n[\"z[8] => -2*p[1]*p[2] - 2*p[1]*p[3] - 2*p[1]*p[4] - 2*p[2]*p[3] - 2*p[2]*p[4] - 2*p[3]*q[2] - 2*p[4]*q[2] + q[2]^2\"]\n[\"z[9] => -2*p[4]*q[2] + q[2]^2\"]\n[\"z[10] => q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n[\"z[11] => -2*p[1]*q[1] - 2*p[1]*q[2] - 2*p[2]*q[1] - 2*p[2]*q[2] - 2*p[3]*q[1] - 2*p[3]*q[2] - 2*p[4]*q[1] - 2*p[4]*q[2] + q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n\njulia> G.baikovmatrix\n6×6 Matrix{RingElem}:\n 0 … z[6]\n 1//2*t[1] 1//2*t[2] + 1//2*t[3] + 1//2*t[4] + 1//2*t[5] - z[1] - z[2] - 1//2*z[3] + 1//2*z[5] - z[6] - 1//2*z[7] + 1//2*z[8] + 1//2*z[10] - 1//2*z[11]\n 1//2*t[2] -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]\n 1//2*t[3] 1//2*z[7] - 1//2*z[9]\n 1//2*z[3] - 1//2*z[4] -1//2*z[3] - 1//2*z[7] + 1//2*z[10]\n z[6] … z[7]","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"CurrentModule = Feynman","category":"page"},{"location":"Example_sing.html#Example-:-Fully-massless-planar-double-box","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"","category":"section"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"(Image: alt text) To provide an example of how to use our library, we calculate the set of reduced IBP-system for the target integrals I(111-1-3-1-1-1-1) and I(1-11-1-3-1-1-4-1) correspond to the fully massless planar double box given in figure 6. We assume the compatible Singular version is installed and the library \"feynman.lib\" is downloaded from the git repository provided in chapter one.","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" LIB \"C:\\\\path_to\\\\Singular_Feynman\\\\feynman.lib\";\n","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"First, the corresponding graph needs to be set. There are 9 Baikov variables in the Baikov representation, which can be seen when computing the Baikov matrix.","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":">graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),\nlist(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\n G;","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"Output:","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"[[6, 1], [4, 6], [1, 2], [3, 5], [4, 3], [2, 5], [5, 6], [1], [2], [3], [4]]\nGraph with 6 vertices, 7 bounded edges and 4 unbounded edges","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"Target integrals need to be set as a list:","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"> list targetInt=list(list(1,1,1,-1,-3,-1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"Then, one can call the procedure \\verb|getReducedIBPSystem()| to compute the reduced IBP system and the corresponding master integrals.","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" list finalset=getReducedIBPSystem(G,targetInt);","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"Provided target integrals belong to the same integral family.","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"It will then show the computational time for each sector computation before returning the output values.\\\nOutput:","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" Assignment of Baikov variables:\nz(1)=>q(1)^2\nz(2)=>q(2)^2\nz(3)=>q(1)^2-2*p(1)*q(1)\nz(4)=>q(2)^2-2*p(2)*q(2)-2*p(1)*q(2)+2*p(1)*p(2)\nz(5)=>q(2)^2-2*p(3)*q(2)-2*p(2)*q(2)-2*p(1)*q(2)\nz(6)=>q(1)^2-2*p(2)*q(1)-2*p(1)*q(1)+2*p(1)*p(2)\nz(7)=>q(2)^2-2*q(1)*q(2)+q(1)^2\nz(8)=>p(1)*q(2)\nz(9)=>p(3)*q(1)\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 1.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:1\nElapsed time to compute rref in seconds:0. size of the matrix:37 * 57\ncompleted the computation in the sector:1 at layer 1.\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:1\nElapsed time to compute rref in seconds:0. size of the matrix:35 * 51\ncompleted the computation in the sector:1 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:2 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:111\nElapsed time to compute rref in seconds:231. size of the matrix:661 * 468\ncompleted the computation in the sector:2 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:3 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:5\nElapsed time to compute rref in seconds:4. size of the matrix:208 * 96\ncompleted the computation in the sector:3 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:112\nElapsed time to compute rref in seconds:230. size of the matrix:743 * 397\ncompleted the computation in the sector:1 at layer 3.\n------------------------------------------------------------------------------\nStarted the computation in the sector:2 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:6\nElapsed time to compute rref in seconds:5. size of the matrix:220 * 99\ncompleted the computation in the sector:2 at layer 3.\n------------------------------------------------------------------------------\nStarted the computation in the sector:3 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:356\nElapsed time to compute rref in seconds:2645. size of the matrix:3019 * 579\ncompleted the computation in the sector:3 at layer 3.\n>","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"The returned list has two entries; the first is the setIBP containing the reduced IBP system. One can see its size and IBP relations as follows:","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" > setIBP S=finalset[1];\n > ring R=S.over;\n > setring R;","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" > size(S.IBP);\n 1319","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"There are 1059 independent IBP relations. Before reduction, there were 3019+220+743+208+661+35+37=4923. Since the finite field row reduction is involved, one can verify the result by running the procedure a few times. ","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" > oneIBP I=S.IBP[5];\n > I;\n \n (2*t(1)*D-20*t(1))I(0,1,1,-1,-3,-1,-1,-2,-1)\n +(-t(1)*D-12*t(1))I(0,1,1,-1,-4,-1,-1,-1,-1)\n +(-t(1)*D-8*t(1)-t(2)*D-8*t(2))I(0,1,1,-2,-3,-1,-1,-1,-1)\n +(-4*t(1))I(0,1,0,-1,-3,-1,-1,-1,-1)+(-2*t(1)*D\n -6*t(1)+t(2)*D+10*t(2))I(0,0,1,-1,-3,-1,-1,-1,-1)\n +(-2*t(1)*D-8*t(1))I(-1,1,1,-1,-3,-1,-1,-1,-1)\n +(-t(1)^2*D-2*t(1)^2-t(1)*t(2)*D-2*t(1)*t(2))I(0,1,1,-1,-3,-1,-1,-1,-1)=0","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":"The number of master integrals can be seen as follows:","category":"page"},{"location":"Example_sing.html","page":"Example : Fully massless planar double box","title":"Example : Fully massless planar double box","text":" > size(finalset[2]);\n 1059 ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"CurrentModule = Feynman","category":"page"},{"location":"Overview_sing.html#OVERVIEW:","page":"-","title":"OVERVIEW:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"We generate the Feynman integrand associated to a Feynman diagram and compute reduced IBP system to reduce given target integers to master integrals.","category":"page"},{"location":"Overview_sing.html#KEYWORDS:","page":"-","title":"KEYWORDS:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"Feynman integral;","category":"page"},{"location":"Overview_sing.html#PROCEDURES:","page":"-","title":"PROCEDURES:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"makeGraph(list, list) generate a graph from a list of vertices and a list of edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"makeLabeledGraph(list, list) generate a labeled graph from a list of vertices and a list of edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"printGraph(graph) print procedure for graphs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"labelGraph(graph) label a graph with variables for vertices and edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"balancingIdeal(labeledgraph) ideal of balancing conditions","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"eliminateVariables(labeledgraph) eliminate variables according to balancing condition","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"propagators(labeledgraph) \t generate ideal generated by denominators of the Feynman integral assocated to graph","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"ISP(labeledgraph)\t\t\t extend the propagators to a basis of the quadratic forms","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"removeElimVars(labeledgraph) Removes the variables from G.elimvars. This key is generated by the procedure ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"eliminateVariables(labeledgraph)","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeBaikovMatrix(graph) computes the Baikov matrix of G defined in G1.baikovover and stores it in G1.baikovmatrix","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeM1(labeledgraph) generate the module M1 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeM2(labeledgraph,list) generate the module M2 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeIBP(labeledgraph,list) generate the set of IBPS correspond to the given indices of denominators of the feynman integral.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSector(list) returns the sector (a list of 1s and 0s) that the integral belongs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"listCombintions(list,int) returns the list of r-combinations of the elements in the list L","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"generateWebSectors(list) generate the Web structure of the sectors L, where L is the list and L[1] is the sector that correspond to the seed and L[i] contain the subsectors of the sectors in L[i-1]. Not that sector maps between the sectors have not been setted.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"isSubList(l1,l2) return 1 if elements in l1 contain in l2 0 if elements in l1 do not contain in l2","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSectorMap(L1,L2) L1 where sectorMap of each sector in the list L1 is filled.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"setSectorMap(sectorWeb) sectorWeb where the field sectorMap field of each sector in sectorWeb is filled.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"findSector(sectorWeb,currentPosition,L) return position of the sector in the sectorWeb, where the L belongs. return -1, if the sector is not found","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"updateOneSector(sectorWeb,currentPosition,oneInt) updated sectorWeb, where the oneInt is assigned to the targetInts field of the seector correspond to provided oneInt","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"updateWeb(sectorWeb,currentPosition,setInt) return a list(sectorWeb,MasterInt,notInWeb) where,sectorWeb is the updated web by assingning integrals to correspondng sectors, masterInt is the list integrals belong to the sector at currentPosition notInWeb is the list of integrals that are not belong the integral family associated the SectorWeb.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"pickHighestSector(targetInt) return the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSortMeasures(l) return list of sort measures that are used in Laporta Algorithm","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"extractCoef(I,ind,l) return list of values where, the i-th element is the evaluation of coefficient function at values in the list l of the IBP relation oneIBP, whose index is i=ind[i][1]. Columns of the matrix correspond to the all used indices in the setIBP which are ordered with respect to the output ofgetSortMeasures.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"setMat(S,val) return matrix,where i-th row correspond to the evaluation of coefficient functions of i-th IBP in setIBP. ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getRedIBPs(S,p) list L, L[1]=indIBP, L[2]=seed where, indIBP contain the linearly independent IBP relations of setIBP which are obtained by finite field row reduction over the field Fp. seed contain the indeces correspond to the non-free columns in rref.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSortedIntegrals(I) return list ind where each entry is a pair (indv,sortmeasures), indv is the list of indices (seed) appered in the setIBP and sortmeasures is the output of getSortMeasures(indv).The function getSortedIntegrals extract the seeds appeared in the IBP identities of the setIBP, sort them lexicographically based on the values got from getSortMeasures and return the output.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeManyIBP(G0,setNu) return setIBP S, where it contains all the IBP relations obtained by module intersection and seeding","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getReducedIBPSystem(G,targetInt ) return reduced IBP systerm together with master integrals which are sufficent for reduction of targetInt to master integrals","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"CurrentModule = Feynman","category":"page"},{"location":"Installation_sing.html#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"We assume that SINGULAR is installed in a recent stable version (4.1.1 Feb 2018 or 4.3.2.0 Jan_2022 ) .","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"Run Singular in the terminal,","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":" >Singular\n SINGULAR / Development\n A Computer Algebra System for Polynomial Computations / version 4.1.1\n 0<\n by: W. Decker, G.-M. Greuel, G. Pfister, H. Schoenemann \\ Feb 2018\nFB Mathematik der Universitaet, D-67653 Kaiserslautern \\ Debian 1:4.1.1-p2+ds-4build2\n> ","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"Then install the library feynman.lib.","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"> LIB \"/path_to/Singular_Feynman/feynman.lib\";\n// ** redefining setMat (LIB \"/path_to/Feynman/Singular_Feynman/feynman.lib\";)\n// ** redefining setMat (LIB \"/path_to/Feynman/Singular_Feynman/feynman.lib\";)\n// ** loaded /path_to/Feynman/Singular_Feynman/feynman.lib (4.3.2.0,Jan_2022)\n// ** loaded /usr/bin/../share/singular/LIB/general.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/matrix.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/nctools.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/random.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/ring.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/primdec.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/absfact.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/triang.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/elim.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/poly.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/inout.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/linalg.lib (4.1.1.0,Dec_2017)\n> ","category":"page"},{"location":"index.html#Feynman","page":"Feynman","title":"Feynman","text":"","category":"section"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"Documentation for Feynman.","category":"page"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"The package Feynman computes complete set of IBP identities of the Feynman integral associated to a given Feynman graph using the powerful module-intersection integration-by-parts (IBP) method, suitable for multi-loop and multi-scale Feynman integral reduction. It will provide an application programming interface(API) in OSCAR to use packages NeatIBP, pfd-parallel to make this computation much faster.The package Feynman is based on the computer algebra system OSCAR and is provided as a package for the Julia programming language.","category":"page"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"Installation\nExample\nOverview","category":"page"},{"location":"Installation.html#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"We assume that Julia is installed in a recent enough version to run OSCAR. Navigate in a terminal to the folder where you want to install the package and pull the package from Github:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"git pull https://github.com/singular-gpispace/Feynman.git","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"In the same folder execute the following command:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"julia --project","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"This will activate the environment for our package. In Julia install missing packages:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"import Pkg; Pkg.instantiate()","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"and load our package. On the first run this may take some time.","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"using Feynman ","category":"page"}] +[{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"CurrentModule = Feynman","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"

","category":"page"},{"location":"Functions_sing.html#Feynman.lib-function-description","page":"Functions","title":"Feynman.lib function description","text":"","category":"section"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"

procedure: printMat(matrix M)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : printMat(M); M matrix@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : M is a matrix.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : This is the print function used by Singular to print a matrix.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: matrix","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x),lp;\nmatrix M[2][3]=1,243,3,4,522222,6;\nprintMat(M);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: printGraph(graph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : printGraph(G); G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : This is the print function used by Singular to print a graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nG;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: printLabeledGraph(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : printLabeledGraph(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : This is the print function used by Singular to print a labeled graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=(0),q(1..6),dp;\nlabeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R);\nG;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: printIBP(oneIBP I)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : printIBP(I); I oneIBP@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : I is an IBP identity computed using computeIBP.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : This is the print function used by Singular to print an IBP relation.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: printsetIBP(setIBP I)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : printIBP(I); I setIBP@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : I is the set of IBP identities computed using computeIBP.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : This is the print function used by Singular to print setIBP.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: makeGraph(list v, list e)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : makeGraph(v,e); v list, e list@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : v is a list of integers, e is a list of two element lists of v.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : graph with vertices v and edges e","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : Creates a graph from a list of vertices and edges. The vertices can be any type. The data structure respects the ordering of vertices of edges, so can be used for directed graphs, KEYWORDS: graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)));\nG;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: makeLabeledGraph(list v, list e, def R, list lab, def Rpoly)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : makeLabeledGraph(v,e,R,l,P); v list, e list, R ring, l list, P ring @*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : v is a list of integers, e is a list of two element lists of pairwise different elements of v, R is a ring, l is a list of labels, P is a ring","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : labeled graph with vertices v and edges e with labels of the edges in R with infinite edges being constants","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=(0),q(1..6),dp;\nlabeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R);\nG;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: labelGraph(graph G, int ch)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : labelGraph(G); G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a graph and ch is either zero or a prime.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : labeled graph with polynomial variables qi at the bounded edges and function field variables pi at the unbounded edges over a prime field of characteristic ch","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlG;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: balancingIdeal(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : balancingIdeal(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : ideal of balancing condition of the graph, basering is assumed to be G.over","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\ndef R= lG.over;\nsetring R;\nideal I = balancingIdeal(lG);\nI;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: eliminateVariables(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : eliminateVariables(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition and using an ordering qipj.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\neliminateVariables(lG);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: removeVariable(def R, int j)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : removeVariable(R); R ring@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : R is a polynomial ring","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : polynomial ring with j-th variable removed","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: ring","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),(lp(2),dp(1));\ndef S= removeVariable(R,2);\nS;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: removeParameter(def R, int j)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : removeParameter(R); R ring@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : R is a polynomial ring","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : polynomial ring with j-th variable removed","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: ring","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=(0,p(1),p(2),p(3)),(x,y,z),(lp(2),dp(1));\ndef S= removeParameter(R,2);\nS;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: substituteGraph(labeledgraph G, poly a, poly b)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : substituteGraph(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : substitute the variable a in the labeling by b","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: feynmanDenominators(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : feynmanDenominators(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : ideal containing the propagators in the Feynman integral","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph lGelim = eliminateVariables(lG);\ndef R = lGelim.over;\nsetring R;\nideal I = feynmanDenominators(lGelim);\nI;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: propagators(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : propagators(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : ideal, containing the denominators in the Feynman integral","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph lGelim = eliminateVariables(lG);\ndef R = lGelim.over;\nsetring R;\nideal I = propagators(lGelim);\nI;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: ISP(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : ISP(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : ideal, containing the irreducible scalar products, that is, those scalar product which are not linearly dependent on the propagators.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph G1 = eliminateVariables(lG);\nG1;\nring R= G1.over;\nsetring R;\nR;\nISP(G1);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: removeElimVars(labeledgraph G)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : removeElimVars(G); G labeledgraph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a labeled graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminateVariables.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4)));\nlabeledgraph lG = labelGraph(G,0);\nlabeledgraph G1 = eliminateVariables(lG);\nlabeledgraph G2 = removeElimVars(G1);\nG2;\nring R= G2.over;\nsetring R;\nR;\nG2;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: computeBaikovMatrix(def G0)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : computeBaikovMatrix(G); G labeledgraph, or G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : a labeled graph G1, computes the Baikov matrix of G defined in G1.baikovover and stores it in G1.baikovmatrix","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB= G1.baikovover;\nsetring RB;\nRB;\nmatrix B = G1.baikovmatrix;\nprintMat(B);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: computeM1(def G0)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : computeM1(G0); G labeledgraph, or G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : The module M1 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB=G1.baikovover;\nRB;\nmodule ML=computeM1(G1);\nML;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: computeM2(def G0,list Nu)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : computeM2(G,Nu); G labeledgraph, or G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : The module M2 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RB=G1.baikovover;\nRB;\nmodule M2=computeM2(G1,list(1,1,1,0,0,1,0,0,0));\nM2;\nmodule M2=computeM2(G1, list(1,1,1,1,1,1,1,-5,0));\nM2;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: computeIBP(def G0,list Nu)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : computeIBP(G0,Nu); G labeledgraph, or G graph@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : The set of IBPS correspond to G0 and given Nu.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nS;\noneIBP I=S.IBP[1];\nI;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getSector(list l)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getSector(l); l list@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : l is a list of integer indices of a Feynman integral","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list L, L[1]=s The sector (a list of 1s and 0s) that the corresponding integral belongs L[2]=n The sector in that the integral belongs ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"list l=list(1,2,-3,-4,0,1);\nlist s=getSector(l);\ns;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: listCombinations(list L,int r)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : listCombintions(L,r); L list, r int@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : r is a positive integer such that r < size(L)>","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list of r-combinations of the elements in the list L","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist L=listCombinations(list(1,2,3,4),3);\nL[1];","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: generateWebSectors(list seed)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : generateWebSectors(seed);seed list@* ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : seed is a list of integer values.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : Web structure of the sectors L, where L is the list and L[1] is the sector that correspond to the given seed and L[i] contain the subsectors of the sectors in L[i-1]. Note that sector maps between the sectors have not been setted. ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: isSubList(list l1,list l2)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : isSubList(l1,l2); l1 list, l2 list@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : l1 and l2 are list of positive integers","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : 1 if elements in l1 contain in l2 0 if elements in l1 do not contain in l2","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l1=list(1,2,3,4,5,6,7);\nlist l2=list(1,4,6);\nlist l3=list(1,2,8);\nlist l4=list(1,4,6);\nisSubList(l2,l1);\nisSubList(l3,l1);\nisSubList(l1,l2);\nisSubList(l2,l4);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getSectorMap(list L1,list L2)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getSectorMap(L1,L2); L1 list, L2 list, sector@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : L1 and L2 are lists of sectors where the lab field of each sector in both lists are filled(i.e. two layers of a sector web)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : L1 where sectorMap of each sector in the list L1 is filled.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: sector,graph,feynman,setIBP","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=getSectorMap(w[1],w[2]);\nw1[1].sectorMap;\nlist w2=getSectorMap(w[2],w[3]);\nw2[2].sectorMap;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: setSectorMap(list sectorWeb)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : setSectorMap(sectorWeb); sectorWeb list, sector@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : sectorWeb is an output produced by the function @*generateWebSectors","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : sectorWeb where the field sectorMap field of each sector in sectorWeb is filled.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: sector, generateWebSectors, getSectorMap","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: findSector(list sectorWeb, list currentPosition, list L)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : findSector(sectorWeb,currentPosition,L); sectorWeb list,currentPosition list, L list,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, L is an output produced by the function getSector@","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : position of the sector in the sectorWeb, where the L belongs. -1, if the sector is not found","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: sector, generateWebSectors, getSectorMap","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist oneInt=list(4,-1,-1,0,-1,-2);\nlist L=getSector(oneInt);\ndef pos=findSector(w1,list(1,1),L[2]);\nisSubList(w[pos[1]][pos[2]].lab,L[2])==1 && isSubList(L[2],w[pos[1]][pos[2]].lab); //this returns 1, since the given integral is in the sector at pos.\n\n//example for a integral that is not in the set\nlist oneInt=list(4,1,0,-1,-2,3);\nlist L=getSector(oneInt);\ndef pos=findSector(w1,list(1,1),L[2]);\npos;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: updateOneSector(list sectorWeb, list currentPosition,list oneInt)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : updateOneSector(sectorWeb,currentPosition,oneInt); sectorWeb list, sector@* ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, oneInt is a list of indeces of the denominators associated to an integral correspond to a given feynman graph. Also assume the sectorweb isalso associated to the same feynman graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : updated sectorWeb, where the oneInt is assigned to the targetInts field of the seector correspond to provided oneInt","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: sector, generateWebSectors, getSectorMap,updateWeb,findSector","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=0,(x,y,z),dp;\nlist l=list(1,-1,0,1,2,-2);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist oneInt=list(4,-1,-1,0,-1,-2);\nlist w2=updateOneSector(w1,list(1,1),oneInt);\nlist L=getSector(oneInt);\nL[2];\nw2[3][2].lab;","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: updateWeb(list sectorWeb, list currentPosition,list setInt)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : updateWeb(sectorWeb,currentPosition,setInt); sectorWeb list, sector@*","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : sectorWeb is an output produced by the function generateWebSectors@*, setInt is a list of indeces of the denominators associated to integrals correspond to a given feynman graph. Also assume the sectorweb is also associated to the same feynman graph.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list (sectorWeb,MasterInt,notInWeb) where, sectorWeb is the updated web by assingning integrals to correspondng sectors, masterInt is the list integrals belong to the sector at currentPosition notInWeb is the list of integrals that are not belong the integral family associated the SectorWeb.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: generateWebSectors, getSector,findSector","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example 1:","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ring R=(0,(t,D)),(x,y,z),dp;\nlist l=list(1,2,1);\nlist w=generateWebSectors(l);\nlist w1=setSectorMap(w);\nlist setInt=list(list(1,2,3),list(-1,1,2),list(1,1,-1),list(-1,0,-2));\nlist setInt=list(list(1,2,3));\nlist setInt=list(l);\n \nlist L1=pickHighestSector(setInt);\nlist w2=updateWeb(w1,list(1,1),L1[1]);\nw2[2]; //master integrals\nw2[3];//integrals not in the web","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example 2:","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nring RZ= G1.baikovover;\nprintMat(G1.baikovmatrix);\n \nlist setInt=list(list(1,1,1,-1,-3,1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));\nlist web=generateWebSectors(setInt[1]);\nlist w1=setSectorMap(web); \nweb=w1;\nlist L1=pickHighestSector(setInt); \n \nlist w2=updateWeb(web,list(1,1),L1[1]); //updateWeb returns a list w3 with w3[1]=sectorWeb,w3[2]=list of master Integrals, w3[3]=list of integrals that not belong to the current web\nweb=w2[1]; \nsetIBP S=computeIBP(G1,L1[1][1]);\nring R=S.over;\nsetring R;\nlist L=getRedIBPs(S,101); //L[1]=list of independent IBPs,L[2]=list of master integrals\nlist independIBPs=L[1];\nlist masterAndTailIntgrals=L[2];\nsize(independIBPs) < size(S.IBP); //number of linearly independent set of IBPs are less than the number of orginal IBPs. So this returns true\n \noneIBP I1=independIBPs[18]; //Here is an example for one IBP i\nI1;\nlist w3=updateWeb(web,list(1,1),masterAndTailIntgrals); //updateWeb returns a list w3 with w3[1]=sectorWeb,w3[2]=list of master Integrals, w3[3]=list of integrals that not belong to the current web\nweb=w3[1]; \nsize(web[1][1].targetInts);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getHighestSectorIndex(list targetInt)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : pickHighestSector(targetInt); G is a list of list of integers of same length ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : targetInt is the list of target integrals","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: pickHighestSector(list targetInt)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : pickHighestSector(targetInt); G is a list of list of integers of same length","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : targetInt is the list of target integrals ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); //here we can do the reduction using one web\nlist L=pickHighestSector(setInt);\nsize(L);\n\nlist setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2)); //here we need more than one web\nlist L=pickHighestSector(setInt);\nsize(L);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getSortMeasures(list l)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getSortMeasures(l); l list, ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : l is a list of integers (i.e a seed). ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list of sort measures that are used in Laporta Algorithm","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); \ngetSortMeasures(l);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: extractCoef(oneIBP I,list ind,list l)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : extractCoef(I,ind,l); I oneIBP,ind list,l list,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : ind is the output of getSortedIntegrals, and l is the list of values over the base field I.baikovover and size(l)=npars(I.baikovover)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list of values where, the i-th element is the evaluation of coefficient function at values in the list l of the IBP relation oneIBP, whose index is i=ind[i][1].","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: feynman graph,IBPs","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist ind = getSortedIntegrals(S);\noneIBP I=S.IBP[1];\nI;\nlist rowCorrespondToI=extractCoef(I,ind,list(1,2,9)); \n \n// the nonzero coefficient of the IBP relation correspond to integral I(1,1,0,1,0,0,0,1,0).\n// when we use lex ordering to order the used integrals in set of IBPs, this integral correspond to the 82th place.\n// so we get only a nonzero value at position 82 and the below, the output will be -14.\n\nrowCorrespondToI[82]; //output will be -14","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: setMat(setIBP S,list val, list ind)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : setMat(S,val); S setIBP,val list","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : size(val)=npars(I.baikovover) and val list of integers and ind is the output of getSortedIntegrals(S)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : atrix,where i-th row correspond to the evaluation of coefficient functions of i-th IBP in setIBP. Columns of the matrix correspond to the all used indices in the setIBP which are ordered with respect to the output ofgetSortMeasures. ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: feynman graph,IBPs","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist ind = getSortedIntegrals(S);\nmatrix N=setMat(S,list(1,2,3),ind);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getRedIBPs(setIBP S,int p)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getRedIBPs(S,p); ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : S is setIBP, and p is a prime number. ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list L, L[1]=indIBP, L[2]=seed where, indIBP contain the linearly independent IBP relations of setIBP which are obtained by finite field row reduction over the field Fp. seed contain the indeces correspond to the non-free columns in rref.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: feynman graph,IBPs","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist L=getRedIBPs(S,101);\nsize(L[1])","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getSortedIntegrals(setIBP I)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getSortedIntegrals(I); I setIBP,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : list ind where each entry is a pair (indv,sortmeasures), indv is the list of indices(seed) appered in the setIBP and sortmeasures is the output of getSortMeasures(indv). The function getSortedIntegrals extract the seeds appeared in the IBP identities of the setIBP, sort them lexicographically based on the values got from getSortMeasures and return the output.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\nsetIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));\nring R=S.over;\nsetring R;\nlist L=getSortedIntegrals(S); //L list of pair of sorted integrals and the corresponding sorting measures\nL[1];","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: computeManyIBP(def G0,list setNu)","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : computeManyIBP(G0,setNu); G0 graph@*,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : setNu is a list of seeds correspond to the graph G0 which are belong to the same sector ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : setIBP S, where it contains all the IBP relations obtained by module intersection and seeding ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlabeledgraph G1=computeBaikovMatrix(G);\n\n//here we compute set of IBPs correspond to two seeds seperately\nsetIBP IBP1=computeIBP(G1,list(1,1,0,1,0,1,0,-1,0));\nsetIBP IBP2=computeIBP(G1,list(1,1,0,1,0,1,0,-3,0));\nsize(IBP1.IBP);\nsize(IBP2.IBP);\n \n//here we compute set of IBPs correspond both seeds simultaneously \n//We can use this only when both integrals belongs to the same sector\n\nsetIBP S=computeManyIBP(G,list(list(1,1,0,1,0,1,0,-1,0),list(1,1,0,1,0,1,0,-3,0)));\nsize(S.IBP); ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"
procedure: getReducedIBPSystem(graph G,list targetInt )","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"USAGE : getReducedIBPSystem(G,targetInt); targetInt list,G graph@*,","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"ASSUME : G is a graph and targetInt is a list of seeds of target integrals.","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"RETURN : ist (reducedIBPs,MI) where reducedIBPs::setIBP, MI::list. reducedIBPs contain the reduced IBP system for the target integrals MI contain the master integrals","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"THEORY : ","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"KEYWORDS: Feynman graph,IBPs","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"Example :","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\nlist targetInt=list(list(1,1,1,-1,-3,-1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));\nlist finalset=getReducedIBPSystem(G,targetInt);\nsetIBP S=finalset[1];\nring R=S.over;\nsetring R;\noneIBP I=S.IBP[5];\nI;\nsize(finalset[2]);","category":"page"},{"location":"Functions_sing.html","page":"Functions","title":"Functions","text":"

","category":"page"},{"location":"Overview.html#Overview","page":"Overview","title":"Overview","text":"","category":"section"},{"location":"Overview.html","page":"Overview","title":"Overview","text":"Modules = [Feynman]","category":"page"},{"location":"Overview.html","page":"Overview","title":"Overview","text":"Modules = [Feynman]","category":"page"},{"location":"Overview.html#Feynman.Feynman","page":"Overview","title":"Feynman.Feynman","text":"Feynman is a package for computing integration-by-part identities (IBPs) of a Feynman Integral associated to Feynman graph using module intesecation method. \nThis package also provides an interface of Oscar to use the packages NeatIBP developed using Singular and GPI-Space.\n\n\n\n\n\n","category":"module"},{"location":"Overview.html#Feynman.ISP-Tuple{labeledgraph}","page":"Overview","title":"Feynman.ISP","text":"ISP(G::labeledgraph)\n\nUSAGE : ISP(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : idal containing the irreducible scalar products(ISPs), that is, those scalar product which are not linearly dependent on the propagators.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=eliminateVariables(G);\n\njulia> ISP(Gelim)\nIdeal generated by\n p[3]*q[1]\n p[1]*q[2]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.balancingIdeal-Tuple{labeledgraph}","page":"Overview","title":"Feynman.balancingIdeal","text":"balancingIdeal(G::labeledgraph)\n\nUSAGE : balancingIdeal(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : Ideal of balancing condition of the graph. i.e Ideal generated by the relation of the momentums which are obtained by applying momentum conservation law to external mementa, and at each vertex; This is an ideal of the ring G.over.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> balancingIdeal(G)\n\nIdeal generated by\np[1] + p[2] + p[3] + p[4]\np[1] + q[1] + q[2]\np[2] - q[2] + q[3]\np[3] - q[1] + q[4]\np[4] - q[3] - q[4]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.computeBaikovMatrix-Tuple{simple_graph}","page":"Overview","title":"Feynman.computeBaikovMatrix","text":"computeBaikovMatrix(G::simple_graphgraph)\n\nUSAGE : computeBaikovMatrix(G);\n\nASSUME : G is a graph, or G is a labled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars.\n\nRETURN : a labeled graph G, where the computed Baikov matrix and the polynomial ring where baikovmatrix is defined are stored in G.baikovmatrix and G.baikovover respectively.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);\n\njulia> G=Feynman.labelGraph(G,0);\n\njulia> G=Feynman.eliminateVariables(G);\n\njulia> G=Feynman.removeElimVars(G);\nQQMPolyRingElem[p[1], p[2], p[3], p[4], p[5], q[1], q[2]]\njulia> G=Feynman.computeBaikovMatrix(G);\nlabels used for Gram matrix of external loop momenta:\n[\"p[1]*p[2] => 1//2*t[1]\"]\n[\"p[1]*p[3] => 1//2*t[2]\"]\n[\"p[2]*p[3] => 1//2*t[3]\"]\n[\"p[1]*p[4] => 1//2*t[4]\"]\n[\"p[2]*p[4] => 1//2*t[5]\"]\n[\"p[3]*p[4] => -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5]\"]\nAssignment of Baikov variables (Z_i) are:\n[\"z[1] => p[3]*q[1]\"]\n[\"z[2] => p[4]*q[1]\"]\n[\"z[3] => q[1]^2\"]\n[\"z[4] => -2*p[1]*q[1] + q[1]^2\"]\n[\"z[5] => 2*p[1]*p[2] - 2*p[1]*q[1] - 2*p[2]*q[1] + q[1]^2\"]\n[\"z[6] => p[1]*q[2]\"]\n[\"z[7] => q[2]^2\"]\n[\"z[8] => -2*p[1]*p[2] - 2*p[1]*p[3] - 2*p[1]*p[4] - 2*p[2]*p[3] - 2*p[2]*p[4] - 2*p[3]*q[2] - 2*p[4]*q[2] + q[2]^2\"]\n[\"z[9] => -2*p[4]*q[2] + q[2]^2\"]\n[\"z[10] => q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n[\"z[11] => -2*p[1]*q[1] - 2*p[1]*q[2] - 2*p[2]*q[1] - 2*p[2]*q[2] - 2*p[3]*q[1] - 2*p[3]*q[2] - 2*p[4]*q[1] - 2*p[4]*q[2] + q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n\njulia> G.baikovmatrix\n6×6 Matrix{RingElem}:\n 0 … z[6]\n 1//2*t[1] 1//2*t[2] + 1//2*t[3] + 1//2*t[4] + 1//2*t[5] - z[1] - z[2] - 1//2*z[3] + 1//2*z[5] - z[6] - 1//2*z[7] + 1//2*z[8] + 1//2*z[10] - 1//2*z[11]\n 1//2*t[2] -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]\n 1//2*t[3] 1//2*z[7] - 1//2*z[9]\n 1//2*z[3] - 1//2*z[4] -1//2*z[3] - 1//2*z[7] + 1//2*z[10]\n z[6] … z[7]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.computeIBP-Tuple{simple_graph, Vector{Int64}, Int64, Bool}","page":"Overview","title":"Feynman.computeIBP","text":"computeIBP(G::labeledgraph,Nu::Vector{Int64},cutDeg::Int)\n\nUSAGE : computeIBP(G,ν,d); \n\nASSUME : G is a labeled graph, d is a positive integer and ν is vector of integers correspond to the parent diagram of the integral.\n\nRETURN : A set of simplified IBP identities without double propagators (without performing trimming) . \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.eliminateVariables-Tuple{labeledgraph}","page":"Overview","title":"Feynman.eliminateVariables","text":"eliminateVariables(G::labeledgraph)\n\nUSAGE : eliminateVariables(G);\n\nASSUME : G is a labeled graph.\n\nRETURN : labeled graph with variables of the bounded edges eliminated according to balancing condition.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> G=eliminateVariables(G);\njulia> printLabeledGraph(G);\n\nGraph with 4 vertices and 4 bounded edges 4 unbounded edges\nEdge terms:\n[\"(1, 3)=>q[1]\", \"(1, 2)=>-p[1] - q[1]\", \"(2, 4)=>-p[1] - p[2] - q[1]\", \"(3, 4)=>-p[3] + q[1]\", \"1=>p[1]\", \"2=>p[2]\", \"3=>p[3]\", \"4=>-p[1] - p[2] - p[3]\"]\njulia> G.elimvar\n\n4-element Vector{QQMPolyRingElem}:\n p[4]\n q[2]\n q[3]\n q[4]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.feynmanDenominators-Tuple{labeledgraph}","page":"Overview","title":"Feynman.feynmanDenominators","text":"feynmanDenominators(G::labeledgraph)\n\nUSAGE : feynmanDenominators(G);\n\nASSUME : G is a labeled graph with the variables of the bounded edges eliminated according to balancing condition. i.e. G is a labeled graph where the function eliminatedVariables applied.\n\nRETURN : ideal containing the propagators in the Feynman integral\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G=labelGraph(G,0);\njulia> Gelim=eliminateVariables(G);\njulia> feynmanDenominators(Gelim)\nIdeal generated by\n q[1]^2\n p[1]^2 + 2*p[1]*q[1] + q[1]^2\n p[1]^2 + 2*p[1]*p[2] + 2*p[1]*q[1] + p[2]^2 + 2*p[2]*q[1] + q[1]^2\n p[3]^2 - 2*p[3]*q[1] + q[1]^2\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.labelGraph-Tuple{simple_graph, Int64}","page":"Overview","title":"Feynman.labelGraph","text":"labelGraph(G::simple_graph,ch::Int)\n\nUSAGE : labelGraph(G,ch);\n\nASSUME : G is a graph and ch is either zero or prime.\n\nRETURN : labeled graph with polynomialvariables qi at the bounded edges and functin filed variables pi at the unbounded edges over a prime filed of characteristic ch Initially we it sets the fields Baikovmatrix and elimvar empty.\n\n#Examples\n\njulia> G3=Feynman.simple_graph([1,2,3,4],[(1,3),(1,2),(2,4),(3,4),1,2,3,4]);\njulia> G4=Feynman.labelGraph(G3,0);\njulia> Feynman.printLabeledGraph(G4);\nGraph with 4 vertices and 4 bounded edges 4 unbounded edges\nEdge terms:\n[\"(1, 3)=>q[1]\", \"(1, 2)=>q[2]\", \"(2, 4)=>q[3]\", \"(3, 4)=>q[4]\", \"1=>p[1]\", \"2=>p[2]\", \"3=>p[3]\", \"4=>p[4]\"]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.makePoly-Tuple{Int64, Int64}","page":"Overview","title":"Feynman.makePoly","text":"makePoly(n::Int,m::Int)\n\nUSAGE : makePoly(m,n);\n\nASSUME : m and n are positve integers.\n\nRETURN : A polynomial ring with vatiables t[1],...,t[n],z[1],...,z[m] over QQ. \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.printIBP-Tuple{Vector, Int64}","page":"Overview","title":"Feynman.printIBP","text":"printIBP(set_IBP::Vector{Vector{}},n::Int64)\n\nUSAGE : printIBP(set_IBP,n); \n\nASSUME : set_IBP is the output of computeIBP\n\nRETURN : It prints first n IBP relations \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.printLabeledGraph-Tuple{labeledgraph}","page":"Overview","title":"Feynman.printLabeledGraph","text":"printLabeledGraph(G::labeledgraph)\n\nUSAGE : printLabeledGraph(G);\n\nASSUME : G is a labeled graph.\n\nTheory: This is the print function used in julia to print a labeled graph.\n\n#Examples\n\njulia> var=[\"x\",\"y\",\"z\",\"p\",\"q\",\"r\"];\njulia> R, (x,y,z,p,q,r)=polynomial_ring(QQ,var);\njulia> G=labeledgraph([1,2,3,4],[(1,3),(1,2),(1,2),(2,4),(3,4),(3,4)],R,var,R,[3,4],R,[[y+1,R(2)] [R(3),r+3]]);\njulia> printLabeledGraph(G);\n\nGraph with 4 vertices and 6 edges\nEdge terms:\n[\"(1, 3)=>x\", \"(1, 2)=>y\", \"(1, 2)=>z\", \"(2, 4)=>p\", \"(3, 4)=>q\", \"(3, 4)=>r\"]\n\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.propagators-Tuple{labeledgraph}","page":"Overview","title":"Feynman.propagators","text":"propagators(G::labeledgraph)\n\nUSAGE: propagators(G);\n\nASSUME: G is a labeld graph.\n\nRETURN: ideal, containing the denominators in the Feynman integral.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=removeElimVars(Gelim);\n\njulia> Gelim=removeElimVars(Gelim);\n\njulia> propagators(Gelim)\nIdeal generated by\n q[1]^2\n q[2]^2\n 2*p[1]*p[3] + 2*p[1]*q[1] - 2*p[1]*q[2] + 2*p[3]*q[1] - 2*p[3]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n 2*p[1]*q[1] + q[1]^2\n -2*p[2]*q[1] + q[1]^2\n 2*p[1]*q[1] - 2*p[1]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n -2*p[2]*q[1] + 2*p[2]*q[2] + q[1]^2 - 2*q[1]*q[2] + q[2]^2\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeElimVars-Tuple{labeledgraph}","page":"Overview","title":"Feynman.removeElimVars","text":"removeElimVars(G::labeledgraph)\n\nUSAGE : removeElimVars(G);\n\nASSUME : G is a labled graph.\n\nRETURN : Removes the variables from G.elimvars. This key is generated by the procedure eliminatedVariables.\n\n#Examples\n\njulia> G=simple_graph([1,2,3,4,5,6],[(1,2),(3,6),(4,5),(1,6),(2,3),(5,6),(3,4),1,2,5,4]);\n\njulia> G=labelGraph(G,0);\n\njulia> Gelim=eliminateVariables(G);\n\njulia> G=removeElimVars(Gelim);\nQQMPolyRingElem[p[1], p[2], p[3], p[4], q[1], q[2]]\njulia> G.elimvar\nAny[]\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeParameter-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeParameter","text":"removeParameter(P::Ring,l::Vector)\n\nUSAGE : removeParameter(R,l);\n\nASSUME : R is a polynomial ring.\n\nRETURN : polynomial ring with the parameters at indeces in l removed.\n\n#Examples\n\njulia> R,v,w=polynomial_ring(QQ,\"p\"=>(1:5),\"q\"=>(1:6));\njulia> I=ideal(R,[v[1],v[2],v[3],v[4],v[5],w[1]]);\njulia> u=complement_of_prime_ideal(I);\njulia> S,iso=localization(R,u);\njulia> S\n\njulia> S\nLocalization\n of multivariate polynomial ring in 11 variables p[1], p[2], p[3], p[4], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[2], p[3], p[4], p[5], q[1])\n\n\n julia> removeParameter(S,[2]) \nLocalization\n of multivariate polynomial ring in 10 variables p[1], p[3], p[4], p[5], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[3], p[4], p[5], q[1])\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariable-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariable","text":"removeVariable(R::Ring,l::Vector)\n\nUSAGE: removeVariable(G,l);\n\nASSUME: R is a polynomial ring.\n\nRERUTN: polynomial ring with the vaiables at indeces given in l removed.\n\n#Examples\n\njulia> R,v=polynomial_ring(QQ,\"p\"=>(1:3));\njulia> Feynman.removeVariable(R,[2])\nMultivariate polynomial ring in 2 variables p[1], p[3]\n over rational field\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariableLocal-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariableLocal","text":"removeVariableLocal(P::Ring,l::Vector)\n\nUSAGE : removeVariableLocal(P,l);\n\nASSUME : P is a local ring locaized by the maximal ideal generated by parameters.\n\nRETURN : local ring where the variables at indeces in l removed. \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.substituteGraph-Tuple{labeledgraph, AbstractAlgebra.RingElement, AbstractAlgebra.RingElement}","page":"Overview","title":"Feynman.substituteGraph","text":"substituteGraph(G::labeledgraph,a::RingElement,b::RingElement)\n\nUSAGE :substituteGraph(G,a,b)\n\nASSUME : G is a labeled graph\n\nRETURN :a labelled graph with labelling where each 'a' is replaced 'b'\n\n\n\n\n\n","category":"method"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"CurrentModule = Feynman","category":"page"},{"location":"Example.html#Example-:-Fully-massless-nonplanar-double-pentagon","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"","category":"section"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"(Image: alt text)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"To provide an example on how to use our package, we calculate the Baikov matrix of the fully massless nonplanar double pentagon. ","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We define the graph G from the list of vertices and list of edges. The direction of momenta are taken from the direction of edges. All external momenta are taken to be outgoing.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We then assign polynomial variables qi, at bounded edges and function field variables pi at the unbounded edges over a prime filed of characteristic 0.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\njulia> G=labelGraph(G,0);\n\n\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then we use balancing condition of the graph (realtions of momenta which are obtained by applying momentum conservation law at each vertex of the graph and to the whole graph) to rewrite each dependent momenta in terms of the eliments in the ordered set V of external momenta and loop momenta. Here we use invlex ordering on p1pEq1qL to choose independent external momenta and independent loop momenta. G.elimVars will store the eliminated variables.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=eliminateVariables(G);\njulia> printLabeledGraph(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G.elimvar 7-element Vector{QQMPolyRingElem}: p[5] q[3] q[4] q[5] q[6] q[7] q[8]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then the irreducible scalar products associated to G can be printed as follows:","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia>ISP(G)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Ideal generated by p[3]q[1] p[4]q[1] p[1]*q[2]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\nWe should remove the eliminated variables from $G$, in order to compute the Baikov matrix of $G$.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=removeElimVars(G); QQMPolyRingElem[p[1], p[2], p[3], p[4], p[5], q[1], q[2]]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\n\nWe then calculate the Baikov matrix associated to Feynman integral of $G$. It will also print the assignment of Baikov variables $z[i]$ to each inverse propagators and irreducible scalar products of $G$.\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=computeBaikovMatrix(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"labels used for Gram matrix of external loop momenta:\n[\"p[1]*p[2] => 1//2*t[1]\"]\n[\"p[1]*p[3] => 1//2*t[2]\"]\n[\"p[2]*p[3] => 1//2*t[3]\"]\n[\"p[1]*p[4] => 1//2*t[4]\"]\n[\"p[2]*p[4] => 1//2*t[5]\"]\n[\"p[3]*p[4] => -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5]\"]\nAssignment of Baikov variables (Z_i) are:\n[\"z[1] => p[3]*q[1]\"]\n[\"z[2] => p[4]*q[1]\"]\n[\"z[3] => q[1]^2\"]\n[\"z[4] => -2*p[1]*q[1] + q[1]^2\"]\n[\"z[5] => 2*p[1]*p[2] - 2*p[1]*q[1] - 2*p[2]*q[1] + q[1]^2\"]\n[\"z[6] => p[1]*q[2]\"]\n[\"z[7] => q[2]^2\"]\n[\"z[8] => -2*p[1]*p[2] - 2*p[1]*p[3] - 2*p[1]*p[4] - 2*p[2]*p[3] - 2*p[2]*p[4] - 2*p[3]*q[2] - 2*p[4]*q[2] + q[2]^2\"]\n[\"z[9] => -2*p[4]*q[2] + q[2]^2\"]\n[\"z[10] => q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n[\"z[11] => -2*p[1]*q[1] - 2*p[1]*q[2] - 2*p[2]*q[1] - 2*p[2]*q[2] - 2*p[3]*q[1] - 2*p[3]*q[2] - 2*p[4]*q[1] - 2*p[4]*q[2] + q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n\njulia> G.baikovmatrix\n6×6 Matrix{RingElem}:\n 0 … z[6]\n 1//2*t[1] 1//2*t[2] + 1//2*t[3] + 1//2*t[4] + 1//2*t[5] - z[1] - z[2] - 1//2*z[3] + 1//2*z[5] - z[6] - 1//2*z[7] + 1//2*z[8] + 1//2*z[10] - 1//2*z[11]\n 1//2*t[2] -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]\n 1//2*t[3] 1//2*z[7] - 1//2*z[9]\n 1//2*z[3] - 1//2*z[4] -1//2*z[3] - 1//2*z[7] + 1//2*z[10]\n z[6] … z[7]","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"CurrentModule = Feynman","category":"page"},{"location":"Example_sing.html#Example-:-Fully-massless-planar-double-box","page":"Examples","title":"Example : Fully massless planar double box","text":"","category":"section"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"(Image: alt text) To provide an example of how to use our library, we calculate the set of reduced IBP-system for the target integrals I(111-1-3-1-1-1-1) and I(1-11-1-3-1-1-4-1) correspond to the fully massless planar double box given in figure 6. We assume the compatible Singular version is installed and the library \"feynman.lib\" is downloaded from the git repository provided in chapter one.","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" LIB \"C:\\\\path_to\\\\Singular_Feynman\\\\feynman.lib\";\n","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"First, the corresponding graph needs to be set. There are 9 Baikov variables in the Baikov representation, which can be seen when computing the Baikov matrix.","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":">graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),\nlist(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4)));\n G;","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"Output:","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"[[6, 1], [4, 6], [1, 2], [3, 5], [4, 3], [2, 5], [5, 6], [1], [2], [3], [4]]\nGraph with 6 vertices, 7 bounded edges and 4 unbounded edges","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"Target integrals need to be set as a list:","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"> list targetInt=list(list(1,1,1,-1,-3,-1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"Then, one can call the procedure \\verb|getReducedIBPSystem()| to compute the reduced IBP system and the corresponding master integrals.","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" list finalset=getReducedIBPSystem(G,targetInt);","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"Provided target integrals belong to the same integral family.","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"It will then show the computational time for each sector computation before returning the output values.\\\nOutput:","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" Assignment of Baikov variables:\nz(1)=>q(1)^2\nz(2)=>q(2)^2\nz(3)=>q(1)^2-2*p(1)*q(1)\nz(4)=>q(2)^2-2*p(2)*q(2)-2*p(1)*q(2)+2*p(1)*p(2)\nz(5)=>q(2)^2-2*p(3)*q(2)-2*p(2)*q(2)-2*p(1)*q(2)\nz(6)=>q(1)^2-2*p(2)*q(1)-2*p(1)*q(1)+2*p(1)*p(2)\nz(7)=>q(2)^2-2*q(1)*q(2)+q(1)^2\nz(8)=>p(1)*q(2)\nz(9)=>p(3)*q(1)\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 1.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:1\nElapsed time to compute rref in seconds:0. size of the matrix:37 * 57\ncompleted the computation in the sector:1 at layer 1.\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:1\nElapsed time to compute rref in seconds:0. size of the matrix:35 * 51\ncompleted the computation in the sector:1 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:2 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:111\nElapsed time to compute rref in seconds:231. size of the matrix:661 * 468\ncompleted the computation in the sector:2 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:3 at layer 2.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:5\nElapsed time to compute rref in seconds:4. size of the matrix:208 * 96\ncompleted the computation in the sector:3 at layer 2.\n------------------------------------------------------------------------------\nStarted the computation in the sector:1 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:112\nElapsed time to compute rref in seconds:230. size of the matrix:743 * 397\ncompleted the computation in the sector:1 at layer 3.\n------------------------------------------------------------------------------\nStarted the computation in the sector:2 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:6\nElapsed time to compute rref in seconds:5. size of the matrix:220 * 99\ncompleted the computation in the sector:2 at layer 3.\n------------------------------------------------------------------------------\nStarted the computation in the sector:3 at layer 3.\ntime elapsed for the computation of module intersection: 0\nElapsed time to set the matrix over Fp in seconds:356\nElapsed time to compute rref in seconds:2645. size of the matrix:3019 * 579\ncompleted the computation in the sector:3 at layer 3.\n>","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"The returned list has two entries; the first is the setIBP containing the reduced IBP system. One can see its size and IBP relations as follows:","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" > setIBP S=finalset[1];\n > ring R=S.over;\n > setring R;","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" > size(S.IBP);\n 1319","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"There are 1059 independent IBP relations. Before reduction, there were 3019+220+743+208+661+35+37=4923. Since the finite field row reduction is involved, one can verify the result by running the procedure a few times. ","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" > oneIBP I=S.IBP[5];\n > I;\n \n (2*t(1)*D-20*t(1))I(0,1,1,-1,-3,-1,-1,-2,-1)\n +(-t(1)*D-12*t(1))I(0,1,1,-1,-4,-1,-1,-1,-1)\n +(-t(1)*D-8*t(1)-t(2)*D-8*t(2))I(0,1,1,-2,-3,-1,-1,-1,-1)\n +(-4*t(1))I(0,1,0,-1,-3,-1,-1,-1,-1)+(-2*t(1)*D\n -6*t(1)+t(2)*D+10*t(2))I(0,0,1,-1,-3,-1,-1,-1,-1)\n +(-2*t(1)*D-8*t(1))I(-1,1,1,-1,-3,-1,-1,-1,-1)\n +(-t(1)^2*D-2*t(1)^2-t(1)*t(2)*D-2*t(1)*t(2))I(0,1,1,-1,-3,-1,-1,-1,-1)=0","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":"The number of master integrals can be seen as follows:","category":"page"},{"location":"Example_sing.html","page":"Examples","title":"Examples","text":" > size(finalset[2]);\n 1059 ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"CurrentModule = Feynman","category":"page"},{"location":"Overview_sing.html#OVERVIEW:","page":"-","title":"OVERVIEW:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"We generate the Feynman integrand associated to a Feynman diagram and compute reduced IBP system to reduce given target integers to master integrals.","category":"page"},{"location":"Overview_sing.html#KEYWORDS:","page":"-","title":"KEYWORDS:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"Feynman integral;","category":"page"},{"location":"Overview_sing.html#PROCEDURES:","page":"-","title":"PROCEDURES:","text":"","category":"section"},{"location":"Overview_sing.html","page":"-","title":"-","text":"makeGraph(list, list) generate a graph from a list of vertices and a list of edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"makeLabeledGraph(list, list) generate a labeled graph from a list of vertices and a list of edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"printGraph(graph) print procedure for graphs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"labelGraph(graph) label a graph with variables for vertices and edges","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"balancingIdeal(labeledgraph) ideal of balancing conditions","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"eliminateVariables(labeledgraph) eliminate variables according to balancing condition","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"propagators(labeledgraph) \t generate ideal generated by denominators of the Feynman integral assocated to graph","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"ISP(labeledgraph)\t\t\t extend the propagators to a basis of the quadratic forms","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"removeElimVars(labeledgraph) Removes the variables from G.elimvars. This key is generated by the procedure ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"eliminateVariables(labeledgraph)","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeBaikovMatrix(graph) computes the Baikov matrix of G defined in G1.baikovover and stores it in G1.baikovmatrix","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeM1(labeledgraph) generate the module M1 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeM2(labeledgraph,list) generate the module M2 over G1.baikovover that requires to compute IBP identities ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeIBP(labeledgraph,list) generate the set of IBPS correspond to the given indices of denominators of the feynman integral.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSector(list) returns the sector (a list of 1s and 0s) that the integral belongs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"listCombintions(list,int) returns the list of r-combinations of the elements in the list L","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"generateWebSectors(list) generate the Web structure of the sectors L, where L is the list and L[1] is the sector that correspond to the seed and L[i] contain the subsectors of the sectors in L[i-1]. Not that sector maps between the sectors have not been setted.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"isSubList(l1,l2) return 1 if elements in l1 contain in l2 0 if elements in l1 do not contain in l2","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSectorMap(L1,L2) L1 where sectorMap of each sector in the list L1 is filled.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"setSectorMap(sectorWeb) sectorWeb where the field sectorMap field of each sector in sectorWeb is filled.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"findSector(sectorWeb,currentPosition,L) return position of the sector in the sectorWeb, where the L belongs. return -1, if the sector is not found","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"updateOneSector(sectorWeb,currentPosition,oneInt) updated sectorWeb, where the oneInt is assigned to the targetInts field of the seector correspond to provided oneInt","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"updateWeb(sectorWeb,currentPosition,setInt) return a list(sectorWeb,MasterInt,notInWeb) where,sectorWeb is the updated web by assingning integrals to correspondng sectors, masterInt is the list integrals belong to the sector at currentPosition notInWeb is the list of integrals that are not belong the integral family associated the SectorWeb.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"pickHighestSector(targetInt) return the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSortMeasures(l) return list of sort measures that are used in Laporta Algorithm","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"extractCoef(I,ind,l) return list of values where, the i-th element is the evaluation of coefficient function at values in the list l of the IBP relation oneIBP, whose index is i=ind[i][1]. Columns of the matrix correspond to the all used indices in the setIBP which are ordered with respect to the output ofgetSortMeasures.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"setMat(S,val) return matrix,where i-th row correspond to the evaluation of coefficient functions of i-th IBP in setIBP. ","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getRedIBPs(S,p) list L, L[1]=indIBP, L[2]=seed where, indIBP contain the linearly independent IBP relations of setIBP which are obtained by finite field row reduction over the field Fp. seed contain the indeces correspond to the non-free columns in rref.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getSortedIntegrals(I) return list ind where each entry is a pair (indv,sortmeasures), indv is the list of indices (seed) appered in the setIBP and sortmeasures is the output of getSortMeasures(indv).The function getSortedIntegrals extract the seeds appeared in the IBP identities of the setIBP, sort them lexicographically based on the values got from getSortMeasures and return the output.","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"computeManyIBP(G0,setNu) return setIBP S, where it contains all the IBP relations obtained by module intersection and seeding","category":"page"},{"location":"Overview_sing.html","page":"-","title":"-","text":"getReducedIBPSystem(G,targetInt ) return reduced IBP systerm together with master integrals which are sufficent for reduction of targetInt to master integrals","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"CurrentModule = Feynman","category":"page"},{"location":"Installation_sing.html#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"We assume that SINGULAR is installed in a recent stable version (4.1.1 Feb 2018 or 4.3.2.0 Jan_2022 ) .","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"Run Singular in the terminal,","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":" >Singular\n SINGULAR / Development\n A Computer Algebra System for Polynomial Computations / version 4.1.1\n 0<\n by: W. Decker, G.-M. Greuel, G. Pfister, H. Schoenemann \\ Feb 2018\nFB Mathematik der Universitaet, D-67653 Kaiserslautern \\ Debian 1:4.1.1-p2+ds-4build2\n> ","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"Then install the library feynman.lib.","category":"page"},{"location":"Installation_sing.html","page":"Installation","title":"Installation","text":"> LIB \"/path_to/Singular_Feynman/feynman.lib\";\n// ** redefining setMat (LIB \"/path_to/Feynman/Singular_Feynman/feynman.lib\";)\n// ** redefining setMat (LIB \"/path_to/Feynman/Singular_Feynman/feynman.lib\";)\n// ** loaded /path_to/Feynman/Singular_Feynman/feynman.lib (4.3.2.0,Jan_2022)\n// ** loaded /usr/bin/../share/singular/LIB/general.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/matrix.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/nctools.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/random.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/ring.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/primdec.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/absfact.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/triang.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/elim.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/poly.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/inout.lib (4.1.1.0,Dec_2017)\n// ** loaded /usr/bin/../share/singular/LIB/linalg.lib (4.1.1.0,Dec_2017)\n> ","category":"page"},{"location":"index.html#Feynman","page":"Feynman","title":"Feynman","text":"","category":"section"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"Documentation for Feynman.","category":"page"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"The package Feynman computes complete set of IBP identities of the Feynman integral associated to a given Feynman graph using the powerful module-intersection integration-by-parts (IBP) method, suitable for multi-loop and multi-scale Feynman integral reduction. It will provide an application programming interface(API) in OSCAR to use packages NeatIBP, pfd-parallel to make this computation much faster.The package Feynman is based on the computer algebra system OSCAR and is provided as a package for the Julia programming language.","category":"page"},{"location":"index.html","page":"Feynman","title":"Feynman","text":"Installation\nExample\nOverview","category":"page"},{"location":"Installation.html#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"We assume that Julia is installed in a recent enough version to run OSCAR. Navigate in a terminal to the folder where you want to install the package and pull the package from Github:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"git pull https://github.com/singular-gpispace/Feynman.git","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"In the same folder execute the following command:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"julia --project","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"This will activate the environment for our package. In Julia install missing packages:","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"import Pkg; Pkg.instantiate()","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"and load our package. On the first run this may take some time.","category":"page"},{"location":"Installation.html","page":"Installation","title":"Installation","text":"using Feynman ","category":"page"}] } diff --git a/docs/make.jl b/docs/make.jl index c6701a1..e893b83 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -34,12 +34,10 @@ makedocs(; "Installation_sing.md", "Overview_sing.md", ], - "Examples" => [ - "Example_sing.md", - ], - "Functions" => [ - "Functions_sing.md", - ], + "Examples" => "Example_sing.md", + + "Functions" => "Functions_sing.md", + ], ], ) diff --git a/docs/src/Functions_sing.md b/docs/src/Functions_sing.md index 75b7cc8..44d2850 100644 --- a/docs/src/Functions_sing.md +++ b/docs/src/Functions_sing.md @@ -1,18 +1,21 @@ ```@meta CurrentModule = Feynman ``` - +

## Feynman.lib function description

procedure: printMat(matrix M) **USAGE** : printMat(M); M matrix@* + **ASSUME** : M is a matrix. + **THEORY** : This is the print function used by Singular to print a matrix. + **KEYWORDS**: matrix -**Example** : +**Example** : ```singular ring R=0,(x),lp; matrix M[2][3]=1,243,3,4,522222,6; @@ -24,11 +27,14 @@ printMat(M); procedure: printGraph(graph G) **USAGE** : printGraph(G); G graph@* + **ASSUME** : G is a graph. + **THEORY** : This is the print function used by Singular to print a graph. + **KEYWORDS**: graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); G; @@ -39,11 +45,14 @@ G; procedure: printLabeledGraph(labeledgraph G) **USAGE** : printLabeledGraph(G); G labeledgraph@* + **ASSUME** : G is a labeled graph. + **THEORY** : This is the print function used by Singular to print a labeled graph. + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ring R=(0),q(1..6),dp; labeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R); @@ -55,11 +64,14 @@ G; procedure: printIBP(oneIBP I) **USAGE** : printIBP(I); I oneIBP@* + **ASSUME** : I is an IBP identity computed using computeIBP. + **THEORY** : This is the print function used by Singular to print an IBP relation. + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ``` @@ -69,11 +81,14 @@ G; procedure: printsetIBP(setIBP I) **USAGE** : printIBP(I); I setIBP@* + **ASSUME** : I is the set of IBP identities computed using computeIBP. + **THEORY** : This is the print function used by Singular to print setIBP. + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ``` @@ -83,13 +98,16 @@ G; procedure: makeGraph(list v, list e) **USAGE** : makeGraph(v,e); v list, e list@* + **ASSUME** : v is a list of integers, e is a list of two element lists of v. + **RETURN** : graph with vertices v and edges e + **THEORY** : Creates a graph from a list of vertices and edges. The vertices can be any type. The data structure respects the ordering of vertices of edges, so can be used for directed graphs, **KEYWORDS**: graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4))); G; @@ -100,14 +118,18 @@ G; procedure: makeLabeledGraph(list v, list e, def R, list lab, def Rpoly) **USAGE** : makeLabeledGraph(v,e,R,l,P); v list, e list, R ring, l list, P ring @* + **ASSUME** : v is a list of integers, e is a list of two element lists of pairwise different elements of v, R is a ring, l is a list of labels, P is a ring + **RETURN** : labeled graph with vertices v and edges e with labels of the edges in R with infinite edges being constants + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ring R=(0),q(1..6),dp; labeledgraph G = makeLabeledGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4)),R, list (q(1),q(2),q(3),q(4),q(5),q(6)),R); @@ -119,14 +141,18 @@ G; procedure: labelGraph(graph G, int ch) **USAGE** : labelGraph(G); G graph@* + **ASSUME** : G is a graph and ch is either zero or a prime. + **RETURN** : labeled graph with polynomial variables q_i at the bounded edges and function field variables p_i at the unbounded edges over a prime field of characteristic ch + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); labeledgraph lG = labelGraph(G,0); @@ -138,12 +164,16 @@ lG; procedure: balancingIdeal(labeledgraph G) **USAGE** : balancingIdeal(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : ideal of balancing condition of the graph, basering is assumed to be G.over + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); labeledgraph lG = labelGraph(G,0); @@ -158,13 +188,17 @@ I; procedure: eliminateVariables(labeledgraph G) **USAGE** : eliminateVariables(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : labeled graph with variables of the bounded edges eliminated according to balancing condition and using an ordering $q[i]>p[j]$. + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); labeledgraph lG = labelGraph(G,0); @@ -176,12 +210,16 @@ eliminateVariables(lG); procedure: removeVariable(def R, int j) **USAGE** : removeVariable(R); R ring@* + **ASSUME** : R is a polynomial ring + **RETURN** : polynomial ring with j-th variable removed + **THEORY** : + **KEYWORDS**: ring -**Example** : +**Example** : ```singular ring R=0,(x,y,z),(lp(2),dp(1)); def S= removeVariable(R,2); @@ -193,12 +231,16 @@ S; procedure: removeParameter(def R, int j) **USAGE** : removeParameter(R); R ring@* + **ASSUME** : R is a polynomial ring + **RETURN** : polynomial ring with j-th variable removed + **THEORY** : + **KEYWORDS**: ring -**Example** : +**Example** : ```singular ring R=(0,p(1),p(2),p(3)),(x,y,z),(lp(2),dp(1)); def S= removeParameter(R,2); @@ -210,12 +252,16 @@ S; procedure: substituteGraph(labeledgraph G, poly a, poly b) **USAGE** : substituteGraph(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : substitute the variable a in the labeling by b + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ``` @@ -225,12 +271,16 @@ S; procedure: feynmanDenominators(labeledgraph G) **USAGE** : feynmanDenominators(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : ideal containing the propagators in the Feynman integral + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); labeledgraph lG = labelGraph(G,0); @@ -246,12 +296,16 @@ I; procedure: propagators(labeledgraph G) **USAGE** : propagators(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : ideal, containing the denominators in the Feynman integral + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(2,4),list(3,4),list(1),list(2),list(3),list(4))); labeledgraph lG = labelGraph(G,0); @@ -267,13 +321,17 @@ I; procedure: ISP(labeledgraph G) **USAGE** : ISP(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : ideal, containing the irreducible scalar products, that is, those scalar product which are not linearly dependent on the propagators. + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4))); labeledgraph lG = labelGraph(G,0); @@ -290,13 +348,17 @@ ISP(G1); procedure: removeElimVars(labeledgraph G) **USAGE** : removeElimVars(G); G labeledgraph@* + **ASSUME** : G is a labeled graph + **RETURN** : Removes the variables from G.elimvars. This key is generated by the procedure eliminateVariables. + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(1,2),list(3,6),list(4,5),list(1,6),list(2,3),list(5,6),list(3,4),list(1),list(2),list(5),list(4))); labeledgraph lG = labelGraph(G,0); @@ -314,16 +376,20 @@ G2; procedure: computeBaikovMatrix(def G0) **USAGE** : computeBaikovMatrix(G); G labeledgraph, or G graph@* + **ASSUME** : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. + **RETURN** : a labeled graph G1, computes the Baikov matrix of G defined in G1.baikovover and stores it in G1.baikovmatrix + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -339,15 +405,19 @@ printMat(B); procedure: computeM1(def G0) **USAGE** : computeM1(G0); G labeledgraph, or G graph@* + **ASSUME** : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. + **RETURN** : The module M1 over G1.baikovover that requires to compute IBP identities + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -362,16 +432,20 @@ ML; procedure: computeM2(def G0,list Nu) **USAGE** : computeM2(G,Nu); G labeledgraph, or G graph@* + **ASSUME** : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed. + **RETURN** : The module M2 over G1.baikovover that requires to compute IBP identities + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -388,14 +462,19 @@ M2; procedure: computeIBP(def G0,list Nu) **USAGE** : computeIBP(G0,Nu); G labeledgraph, or G graph@* + **ASSUME** : G is a Graph, or@* G is a labeled graph where redundant variables have been eliminated by the procedure eliminateVariables, and deleted from the ring by the procedure removeElimVars. Nu is the seed. + **RETURN** : The set of IBPS correspond to G0 and given Nu. + **THEORY** : + **KEYWORDS**: Feynman graph + **Example** : ```singular @@ -414,13 +493,17 @@ I; procedure: getSector(list l) **USAGE** : getSector(l); l list@* + **ASSUME** : l is a list of integer indices of a Feynman integral + **RETURN** : list L, L[1]=s The sector (a list of 1s and 0s) that the corresponding integral belongs L[2]=n The sector in that the integral belongs + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular list l=list(1,2,-3,-4,0,1); list s=getSector(l); @@ -432,12 +515,16 @@ s; procedure: listCombinations(list L,int r) **USAGE** : listCombintions(L,r); L list, r int@* + **ASSUME** : r is a positive integer such that r < size(L)> + **RETURN** : list of r-combinations of the elements in the list L + **THEORY** : + **KEYWORDS**: feynman graph -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list L=listCombinations(list(1,2,3,4),3); @@ -449,15 +536,19 @@ L[1]; procedure: generateWebSectors(list seed) **USAGE** : generateWebSectors(seed);seed list@* + **ASSUME** : seed is a list of integer values. + **RETURN** : Web structure of the sectors L, where L is the list and L[1] is the sector that correspond to the given seed and L[i] contain the subsectors of the sectors in L[i-1]. Note that sector maps between the sectors have not been setted. + **THEORY** : + **KEYWORDS**: feynman graph -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l=list(1,-1,0,1,2,-2); @@ -469,13 +560,17 @@ list w=generateWebSectors(l); procedure: isSubList(list l1,list l2) **USAGE** : isSubList(l1,l2); l1 list, l2 list@* + **ASSUME** : l1 and l2 are list of positive integers + **RETURN** : 1 if elements in l1 contain in l2 0 if elements in l1 do not contain in l2 + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l1=list(1,2,3,4,5,6,7); @@ -493,13 +588,17 @@ isSubList(l2,l4); procedure: getSectorMap(list L1,list L2) **USAGE** : getSectorMap(L1,L2); L1 list, L2 list, sector@* + **ASSUME** : L1 and L2 are lists of sectors where the lab field of each sector in both lists are filled(i.e. two layers of a sector web) + **RETURN** : L1 where sectorMap of each sector in the list L1 is filled. + **THEORY** : + **KEYWORDS**: sector,graph,feynman,setIBP -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l=list(1,-1,0,1,2,-2); @@ -515,13 +614,17 @@ w2[2].sectorMap; procedure: setSectorMap(list sectorWeb) **USAGE** : setSectorMap(sectorWeb); sectorWeb list, sector@* + **ASSUME** : sectorWeb is an output produced by the function @*generateWebSectors + **RETURN** : sectorWeb where the field sectorMap field of each sector in sectorWeb is filled. + **THEORY** : + **KEYWORDS**: sector, generateWebSectors, getSectorMap -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l=list(1,-1,0,1,2,-2); @@ -535,14 +638,18 @@ list w1=setSectorMap(w); **USAGE** : findSector(sectorWeb,currentPosition,L); sectorWeb list,currentPosition list, L list, + **ASSUME** : sectorWeb is an output produced by the function generateWebSectors@*, L is an output produced by the function getSector@ + **RETURN** : position of the sector in the sectorWeb, where the L belongs. -1, if the sector is not found + **THEORY** : + **KEYWORDS**: sector, generateWebSectors, getSectorMap -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l=list(1,-1,0,1,2,-2); @@ -565,16 +672,20 @@ pos; procedure: updateOneSector(list sectorWeb, list currentPosition,list oneInt) **USAGE** : updateOneSector(sectorWeb,currentPosition,oneInt); sectorWeb list, sector@* + **ASSUME** : sectorWeb is an output produced by the function generateWebSectors@*, oneInt is a list of indeces of the denominators associated to an integral correspond to a given feynman graph. Also assume the sectorweb isalso associated to the same feynman graph. + **RETURN** : updated sectorWeb, where the oneInt is assigned to the targetInts field of the seector correspond to provided oneInt + **THEORY** : + **KEYWORDS**: sector, generateWebSectors, getSectorMap,updateWeb,findSector -**Example** : +**Example** : ```singular ring R=0,(x,y,z),dp; list l=list(1,-1,0,1,2,-2); @@ -592,18 +703,24 @@ w2[3][2].lab; procedure: updateWeb(list sectorWeb, list currentPosition,list setInt) **USAGE** : updateWeb(sectorWeb,currentPosition,setInt); sectorWeb list, sector@* + **ASSUME** : sectorWeb is an output produced by the function generateWebSectors@*, setInt is a list of indeces of the denominators associated to integrals correspond to a given feynman graph. Also assume the sectorweb is also associated to the same feynman graph. + **RETURN** : list (sectorWeb,MasterInt,notInWeb) where, sectorWeb is the updated web by assingning integrals to correspondng sectors, masterInt is the list integrals belong to the sector at currentPosition notInWeb is the list of integrals that are not belong the integral family associated the SectorWeb. + **THEORY** : + **KEYWORDS**: generateWebSectors, getSector,findSector + **Example** : + **Example 1:** ```singular ring R=(0,(t,D)),(x,y,z),dp; @@ -654,14 +771,18 @@ size(web[1][1].targetInts); procedure: getHighestSectorIndex(list targetInt) **USAGE** : pickHighestSector(targetInt); G is a list of list of integers of same length + **ASSUME** : targetInt is the list of target integrals + **RETURN** : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs, + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular ``` @@ -671,13 +792,18 @@ size(web[1][1].targetInts); procedure: pickHighestSector(list targetInt) **USAGE** : pickHighestSector(targetInt); G is a list of list of integers of same length + **ASSUME** : targetInt is the list of target integrals -**RETURN** : the intgral that belong to the heighest sector, if all integrals belong to the same sector web; otherwise, it returns a list of collection of integrals + +**RETURN** : the intgral that belong to the heighest sector, if all integrals belong to + the same sector web; otherwise, it returns a list of collection of integrals each need to be handled using different sector webs, + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); //here we can do the reduction using one web list L=pickHighestSector(setInt); @@ -693,12 +819,16 @@ size(L); procedure: getSortMeasures(list l) **USAGE** : getSortMeasures(l); l list, + **ASSUME** : l is a list of integers (i.e a seed). + **RETURN** : list of sort measures that are used in Laporta Algorithm + **THEORY** : + **KEYWORDS**: Feynman graph -**Example** : +**Example** : ```singular setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3)); getSortMeasures(l); @@ -709,15 +839,19 @@ getSortMeasures(l); procedure: extractCoef(oneIBP I,list ind,list l) **USAGE** : extractCoef(I,ind,l); I oneIBP,ind list,l list, + **ASSUME** : ind is the output of getSortedIntegrals, and l is the list of values over the base field I.baikovover and size(l)=npars(I.baikovover) + **RETURN** : list of values where, the i-th element is the evaluation of coefficient function at values in the list l of the IBP relation oneIBP, whose index is i=ind[i][1]. + **THEORY** : + **KEYWORDS**: feynman graph,IBPs -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -741,14 +875,19 @@ rowCorrespondToI[82]; //output will be -14 procedure: setMat(setIBP S,list val, list ind) **USAGE** : setMat(S,val); S setIBP,val list + **ASSUME** : size(val)=npars(I.baikovover) and val list of integers and ind is the output of getSortedIntegrals(S) + **RETURN** : atrix,where i-th row correspond to the evaluation of coefficient functions of i-th IBP in setIBP. Columns of the matrix correspond to the all used indices in the setIBP which are ordered with respect to the output ofgetSortMeasures. + **THEORY** : + **KEYWORDS**: feynman graph,IBPs + **Example** : ```singular @@ -767,15 +906,19 @@ matrix N=setMat(S,list(1,2,3),ind); procedure: getRedIBPs(setIBP S,int p) **USAGE** : getRedIBPs(S,p); + **ASSUME** : S is setIBP, and p is a prime number. + **RETURN** : list L, L[1]=indIBP, L[2]=seed where, indIBP contain the linearly independent IBP relations of setIBP which are obtained by finite field row reduction over the field Fp. seed contain the indeces correspond to the non-free columns in rref. + **THEORY** : + **KEYWORDS**: feynman graph,IBPs -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -791,7 +934,9 @@ size(L[1])procedure: getSortedIntegrals(setIBP I) **USAGE** : getSortedIntegrals(I); I setIBP, + **ASSUME** : + **RETURN** : list ind where each entry is a pair (indv,sortmeasures), indv is the list of indices(seed) appered in the setIBP and sortmeasures is the output of getSortMeasures(indv). @@ -799,10 +944,12 @@ size(L[1])procedure: computeManyIBP(def G0,list setNu) **USAGE** : computeManyIBP(G0,setNu); G0 graph@*, + **ASSUME** : setNu is a list of seeds correspond to the graph G0 which are belong to the same sector + **RETURN** : setIBP S, where it contains all the IBP relations obtained by module intersection and seeding + **THEORY** : + **KEYWORDS**: -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); labeledgraph G1=computeBaikovMatrix(G); @@ -848,14 +999,18 @@ size(S.IBP); procedure: getReducedIBPSystem(graph G,list targetInt ) **USAGE** : getReducedIBPSystem(G,targetInt); targetInt list,G graph@*, + **ASSUME** : G is a graph and targetInt is a list of seeds of target integrals. + **RETURN** : ist (reducedIBPs,MI) where reducedIBPs::setIBP, MI::list. reducedIBPs contain the reduced IBP system for the target integrals MI contain the master integrals + **THEORY** : + **KEYWORDS**: Feynman graph,IBPs -**Example** : +**Example** : ```singular graph G = makeGraph(list(1,2,3,4,5,6),list(list(6,1),list(4,6),list(1,2),list(3,5),list(4,3),list(2,5),list(5,6),list(1),list(2),list(3),list(4))); list targetInt=list(list(1,1,1,-1,-3,-1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1)); @@ -868,4 +1023,4 @@ I; size(finalset[2]); ```
- +