FUNCTIONS
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 :
ring R=0,(x),lp;
matrix M[2][3]=1,243,3,4,522222,6;
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 :
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;
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 :
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);
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 :
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 :
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 :
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;
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 :
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);
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 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 :
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);
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 :
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);
def R= lG.over;
setring R;
ideal I = balancingIdeal(lG);
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 :
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);
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 :
ring R=0,(x,y,z),(lp(2),dp(1));
def S= removeVariable(R,2);
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 :
ring R=(0,p(1),p(2),p(3)),(x,y,z),(lp(2),dp(1));
def S= removeParameter(R,2);
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 :
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 :
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);
labeledgraph lGelim = eliminateVariables(lG);
def R = lGelim.over;
setring R;
ideal I = feynmanDenominators(lGelim);
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 :
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);
labeledgraph lGelim = eliminateVariables(lG);
def R = lGelim.over;
setring R;
ideal I = propagators(lGelim);
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 :
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);
labeledgraph G1 = eliminateVariables(lG);
G1;
ring R= G1.over;
setring R;
R;
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 :
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);
labeledgraph G1 = eliminateVariables(lG);
labeledgraph G2 = removeElimVars(G1);
G2;
ring R= G2.over;
setring R;
R;
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 :
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);
ring RB= G1.baikovover;
setring RB;
RB;
matrix B = G1.baikovmatrix;
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 :
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);
ring RB=G1.baikovover;
RB;
module ML=computeM1(G1);
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 :
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);
ring RB=G1.baikovover;
RB;
module M2=computeM2(G1,list(1,1,1,0,0,1,0,0,0));
M2;
module M2=computeM2(G1, list(1,1,1,1,1,1,1,-5,0));
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 :
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);
setIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));
ring R=S.over;
setring R;
S;
oneIBP I=S.IBP[1];
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 :
list l=list(1,2,-3,-4,0,1);
list s=getSector(l);
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 :
ring R=0,(x,y,z),dp;
list L=listCombinations(list(1,2,3,4),3);
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 :
ring R=0,(x,y,z),dp;
list l=list(1,-1,0,1,2,-2);
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 :
ring R=0,(x,y,z),dp;
list l1=list(1,2,3,4,5,6,7);
list l2=list(1,4,6);
list l3=list(1,2,8);
list l4=list(1,4,6);
isSubList(l2,l1);
isSubList(l3,l1);
isSubList(l1,l2);
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 :
ring R=0,(x,y,z),dp;
list l=list(1,-1,0,1,2,-2);
list w=generateWebSectors(l);
list w1=getSectorMap(w[1],w[2]);
w1[1].sectorMap;
list w2=getSectorMap(w[2],w[3]);
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 :
ring R=0,(x,y,z),dp;
list l=list(1,-1,0,1,2,-2);
list w=generateWebSectors(l);
list w1=setSectorMap(w);
procedure: findSector(list sectorWeb, list currentPosition, list L)
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 :
ring R=0,(x,y,z),dp;
list l=list(1,-1,0,1,2,-2);
list w=generateWebSectors(l);
list w1=setSectorMap(w);
list oneInt=list(4,-1,-1,0,-1,-2);
list L=getSector(oneInt);
def pos=findSector(w1,list(1,1),L[2]);
isSubList(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.
//example for a integral that is not in the set
list oneInt=list(4,1,0,-1,-2,3);
list L=getSector(oneInt);
def pos=findSector(w1,list(1,1),L[2]);
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 :
ring R=0,(x,y,z),dp;
list l=list(1,-1,0,1,2,-2);
list w=generateWebSectors(l);
list w1=setSectorMap(w);
list oneInt=list(4,-1,-1,0,-1,-2);
list w2=updateOneSector(w1,list(1,1),oneInt);
list L=getSector(oneInt);
L[2];
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:
ring R=(0,(t,D)),(x,y,z),dp;
list l=list(1,2,1);
list w=generateWebSectors(l);
list w1=setSectorMap(w);
list setInt=list(list(1,2,3),list(-1,1,2),list(1,1,-1),list(-1,0,-2));
list setInt=list(list(1,2,3));
list setInt=list(l);
list L1=pickHighestSector(setInt);
list w2=updateWeb(w1,list(1,1),L1[1]);
w2[2]; //master integrals
w2[3];//integrals not in the web
Example 2:
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);
ring RZ= G1.baikovover;
printMat(G1.baikovmatrix);
list setInt=list(list(1,1,1,-1,-3,1,-1,-1,-1),list(1,-1,1,-1,-3,-1,-1,-4,-1));
list web=generateWebSectors(setInt[1]);
list w1=setSectorMap(web);
web=w1;
list L1=pickHighestSector(setInt);
list 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
web=w2[1];
setIBP S=computeIBP(G1,L1[1][1]);
ring R=S.over;
setring R;
list L=getRedIBPs(S,101); //L[1]=list of independent IBPs,L[2]=list of master integrals
list independIBPs=L[1];
list masterAndTailIntgrals=L[2];
size(independIBPs) < size(S.IBP); //number of linearly independent set of IBPs are less than the number of orginal IBPs. So this returns true
oneIBP I1=independIBPs[18]; //Here is an example for one IBP i
I1;
list 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
web=w3[1];
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 :
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 each need to be handled using different sector webs,
THEORY :
KEYWORDS: Feynman graph
Example :
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);
size(L);
list setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2)); //here we need more than one web
list L=pickHighestSector(setInt);
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 :
setInt=list(list(-1,1,2),list(1,1,-1),list(-1,0,-2),list(1,2,3));
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 :
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);
setIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));
ring R=S.over;
setring R;
list ind = getSortedIntegrals(S);
oneIBP I=S.IBP[1];
I;
list rowCorrespondToI=extractCoef(I,ind,list(1,2,9));
// the nonzero coefficient of the IBP relation correspond to integral I(1,1,0,1,0,0,0,1,0).
// when we use lex ordering to order the used integrals in set of IBPs, this integral correspond to the 82th place.
// so we get only a nonzero value at position 82 and the below, the output will be -14.
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 :
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);
setIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));
ring R=S.over;
setring R;
list ind = getSortedIntegrals(S);
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 :
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);
setIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));
ring R=S.over;
setring R;
list L=getRedIBPs(S,101);
size(L[1])<size(S.IBP);
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). 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 :
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);
setIBP S=computeIBP(G1,list(1,1,0,1,0,1,0,1,0));
ring R=S.over;
setring R;
list L=getSortedIntegrals(S); //L list of pair of sorted integrals and the corresponding sorting measures
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 :
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);
//here we compute set of IBPs correspond to two seeds seperately
setIBP IBP1=computeIBP(G1,list(1,1,0,1,0,1,0,-1,0));
setIBP IBP2=computeIBP(G1,list(1,1,0,1,0,1,0,-3,0));
size(IBP1.IBP);
size(IBP2.IBP);
//here we compute set of IBPs correspond both seeds simultaneously
//We can use this only when both integrals belongs to the same sector
setIBP S=computeManyIBP(G,list(list(1,1,0,1,0,1,0,-1,0),list(1,1,0,1,0,1,0,-3,0)));
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 :
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));
list finalset=getReducedIBPSystem(G,targetInt);
setIBP S=finalset[1];
ring R=S.over;
setring R;
oneIBP I=S.IBP[5];
I;
size(finalset[2]);