From 0b6616c761131f6a7d536a18da94fe7a160b5af3 Mon Sep 17 00:00:00 2001 From: Dushan Priyasad Date: Sun, 2 Feb 2025 04:14:17 +0100 Subject: [PATCH] singular docs added --- docs/build/.documenter-siteinfo.json | 2 +- docs/build/Example.html | 4 +-- docs/build/Installation.html | 2 +- docs/build/Overview.html | 26 +++++++++---------- docs/build/index.html | 2 +- docs/build/objects.inv | Bin 734 -> 717 bytes docs/build/search_index.js | 2 +- docs/make.jl | 8 +++++- docs/src/Example_sing.md | 0 docs/src/Installation_sing.md | 37 +++++++++++++++++++++++++++ docs/src/Overview_sing.md | 13 ++++++++++ docs/src/feynman_lib.md | 5 ---- 12 files changed, 76 insertions(+), 25 deletions(-) create mode 100644 docs/src/Example_sing.md create mode 100644 docs/src/Installation_sing.md create mode 100644 docs/src/Overview_sing.md delete mode 100644 docs/src/feynman_lib.md diff --git a/docs/build/.documenter-siteinfo.json b/docs/build/.documenter-siteinfo.json index 6e4d626..0b386b9 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-02T01:55:12","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2025-02-02T04:13:31","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/docs/build/Example.html b/docs/build/Example.html index 9c2375f..c5e9bd8 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 15ef375..cdd2436 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 2c49529..ee4e82b 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 32c8181..348ed27 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 28014adbde68e5eda4915e70771e387f56e871e2..6f1f492a0bfc0090ef9837be64eb83010d70e202 100644 GIT binary patch delta 597 zcmV-b0;>Jq1 zI~P07>@*2!%TpWY?)$#`?#^K{qkE!FHqF$Uq;CkT4z9LFaB@eVqyTxbklFy}V3?9& zXn5{2!jp^n9z@P*m{A|OVE=wf?n=&|hyblQ)tX2pa}E*;l7Fdkg%LTG1~v%!Wk-u0 zqrXE;f962_QzZI_W^&V~+`jCP?~x9YqZckQ^~D|phv%)>beh`2Q(t)66rQ@mQ(w46 zP1LyW+6s$a~tp#RHz+&fPw+mcCXgJYu>Neo(XxNYeX8u+lz$! z6;^WnF}Z&2@L~-=-R~`xN-%j&?Y&5Y9;}tfOG9VC9@XwMn1bzVe$DKpj^^)0LjDk| zs|Rz=1iE)>>0KZrI=_Sh5SbQdb-ji1&yM?zsPI)*;(t;N>t9z>cK-9f|GP5d#pXBa>@-U;pbH^JU_~Ytm1<6Y*TDn2?!L{D|u~9LMMu jj<#Ut)rDH^--<3)ZQTn;CRRP#tTs-kz`(V?4~ET^)i^In delta 614 zcmV-s0-62I1>OaagMUqL+CUJ!^D9X1urexH*2lJgfLpeQ&k3L=%vIY`hXQ-5WG899{(RtWiZL-mHy z-#%s&bD+()(N8D-iL=Dd_QLK#u9-BSHRNlQAycb-7mJ&i#o&-o-i31YrW2>GFrLP? z!nmn0ZYzvkg>h41NaNde)qq9sZ->KO>TxS2a2d;uNA+}sX}jsMIR}%|CLYX=k2%S; z%3%dY=_3A7Vt)aD>_eKZDuZ9iFFqC2tW`$#mGvS-H!~k2y1DcCG!<$?A3-xfFCJ71 zyypGJHKSkGX9bTxRo~b)3m0gM!Z3p?+c#HZQu#IKRN%iv@MVao zPW*jE)?XSA_%IM?UVLAkX;J&~s3!uR=~CgJtRt~KJ7ECA=g8!m-q-*7V(uo+Ka 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{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{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{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, RingElement, 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":"feynman_lib.html#printGraph-Function","page":"printGraph Function","title":"printGraph Function","text":"","category":"section"},{"location":"feynman_lib.html","page":"printGraph Function","title":"printGraph Function","text":"Usage: ```Singular printGraph(G);","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":"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{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{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{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, RingElement, 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":"Overview_sing.html","page":"-","title":"-","text":"@doc raw\"\"\" proc printMat(matrix M)","category":"page"},{"location":"Overview_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 singular ring R=0,(x),lp; matrix M[2][3]=1,243,3,4,522222,6; printMat(M);` \"\"\"","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 2606b5a..66e2a3e 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -30,7 +30,13 @@ makedocs(; "Overview.md", ], "Singular version of Feynman" => [ - "feynman_lib.md", + "Home" =>[ + "Installation_sing.md", + "Overview_sing.md", + ], + "Examples" => [ + "Example_sing.md", + ], ], ], ) diff --git a/docs/src/Example_sing.md b/docs/src/Example_sing.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/src/Installation_sing.md b/docs/src/Installation_sing.md new file mode 100644 index 0000000..a432d95 --- /dev/null +++ b/docs/src/Installation_sing.md @@ -0,0 +1,37 @@ +# Installation + +We assume that SINGULAR is installed in a recent stable version (4.1.1 Feb 2018 or 4.3.2.0 Jan_2022 ) . + +Run Singular in the terminal, + +```singular + >Singular + SINGULAR / Development + A Computer Algebra System for Polynomial Computations / version 4.1.1 + 0< + by: W. Decker, G.-M. Greuel, G. Pfister, H. Schoenemann \ Feb 2018 +FB Mathematik der Universitaet, D-67653 Kaiserslautern \ Debian 1:4.1.1-p2+ds-4build2 +> +``` + +Then install the library feynman.lib. +```singular +> LIB "/path_to/Singular_Feynman/feynman.lib"; +// ** redefining setMat (LIB "/path_to/Feynman/Singular_Feynman/feynman.lib";) +// ** redefining setMat (LIB "/path_to/Feynman/Singular_Feynman/feynman.lib";) +// ** loaded /path_to/Feynman/Singular_Feynman/feynman.lib (4.3.2.0,Jan_2022) +// ** loaded /usr/bin/../share/singular/LIB/general.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/matrix.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/nctools.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/random.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/ring.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/primdec.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/absfact.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/triang.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/elim.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/poly.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/inout.lib (4.1.1.0,Dec_2017) +// ** loaded /usr/bin/../share/singular/LIB/linalg.lib (4.1.1.0,Dec_2017) +> +``` + diff --git a/docs/src/Overview_sing.md b/docs/src/Overview_sing.md new file mode 100644 index 0000000..a1c4083 --- /dev/null +++ b/docs/src/Overview_sing.md @@ -0,0 +1,13 @@ +@doc raw""" +proc 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 +```singular +ring R=0,(x),lp; +matrix M[2][3]=1,243,3,4,522222,6; +printMat(M); +```` +""" diff --git a/docs/src/feynman_lib.md b/docs/src/feynman_lib.md deleted file mode 100644 index cbf72a3..0000000 --- a/docs/src/feynman_lib.md +++ /dev/null @@ -1,5 +0,0 @@ -# `printGraph` Function - -**Usage:** -```Singular -printGraph(G);