From 192e075ddba21aa11bc9fd0a91698f9c4af965a4 Mon Sep 17 00:00:00 2001 From: Dushan Priyasad Date: Sun, 2 Feb 2025 01:31:36 +0100 Subject: [PATCH] up --- docs/build/.documenter-siteinfo.json | 2 +- docs/build/Example.html | 2 +- docs/build/Installation.html | 2 +- docs/build/Overview.html | 26 +++++++++++++------------- docs/build/index.html | 2 +- docs/build/objects.inv | Bin 734 -> 752 bytes docs/build/search_index.js | 2 +- docs/src/feynman_lib.md | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/build/.documenter-siteinfo.json b/docs/build/.documenter-siteinfo.json index c870895..2c2b557 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-02T00:54:45","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2025-02-02T01:30:37","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/docs/build/Example.html b/docs/build/Example.html index 2f00023..ed711bf 100644 --- a/docs/build/Example.html +++ b/docs/build/Example.html @@ -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 1486f91..26a71ff 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 e49c329..6ef7ce3 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 c97fdea..a1af39b 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..45b2a3a9a319c4448695fd72511207b8406cda06 100644 GIT binary patch delta 634 zcmV-=0)_qF1@Hxsfq%7CO>f&U487-92qhX5TGY(uXFZEJ~EeHgNw zr5O6(M@zONr?Ts$+byA~_a2`}ipiAjNp8|vsuB{tBdiQew?=SsLm#C8IaK&uMeat%MKu$Wh^%uRo&4}J9LlDdDb~i;P?33c3(Q-NEl_u~-FLH=XK zw!3?XUQTG$90P9G1i!9Q+ANb(%?^R|I&E)fwOChtZdfO{Y|Y0HgKxJvk5tvT+uAKk zn~!3;!izYD0h+ST{;JeHM>U2fvGd0px%Z$(!OsR{#J2 delta 616 zcmV-u0+;>p1>Oaafq$)4O>f#j5WVv&R!V)ts7*GNW5km~5J-!b z#9IKnlhY<1%#M#a z$+gO11xD#2{(n(o0e|d6nyo5>U&${%71XR%M)sBUB1AVcA0xWC^Y}CsYC|7EGe9pM zR0_Q2{l?^KOde^9NJDsgk&wT_impFJ*KZwOsG**zJ1Ui6@{-znk&b$hDv_6l&VW6u z%@;75ZEOC5RWtN7n7cM91<8%u2T>A?F;MN*` Csxs67 diff --git a/docs/build/search_index.js b/docs/build/search_index.js index e9609e7..88cff54 100644 --- a/docs/build/search_index.js +++ b/docs/build/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"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":"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{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeParameter","text":"removeParameter(P::Ring,l::Vector)\n\nUSAGE : removeParameter(R,l);\n\nASSUME : R is a polynomial ring.\n\nRETURN : polynomial ring with the parameters at indeces in l removed.\n\n#Examples\n\njulia> R,v,w=polynomial_ring(QQ,\"p\"=>(1:5),\"q\"=>(1:6));\njulia> I=ideal(R,[v[1],v[2],v[3],v[4],v[5],w[1]]);\njulia> u=complement_of_prime_ideal(I);\njulia> S,iso=localization(R,u);\njulia> S\n\njulia> S\nLocalization\n of multivariate polynomial ring in 11 variables p[1], p[2], p[3], p[4], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[2], p[3], p[4], p[5], q[1])\n\n\n julia> removeParameter(S,[2]) \nLocalization\n of multivariate polynomial ring in 10 variables p[1], p[3], p[4], p[5], ..., q[6]\n over rational field\n at complement of prime ideal (p[1], p[3], p[4], p[5], q[1])\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariable-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariable","text":"removeVariable(R::Ring,l::Vector)\n\nUSAGE: removeVariable(G,l);\n\nASSUME: R is a polynomial ring.\n\nRERUTN: polynomial ring with the vaiables at indeces given in l removed.\n\n#Examples\n\njulia> R,v=polynomial_ring(QQ,\"p\"=>(1:3));\njulia> Feynman.removeVariable(R,[2])\nMultivariate polynomial ring in 2 variables p[1], p[3]\n over rational field\n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.removeVariableLocal-Tuple{AbstractAlgebra.Ring, Vector}","page":"Overview","title":"Feynman.removeVariableLocal","text":"removeVariableLocal(P::Ring,l::Vector)\n\nUSAGE : removeVariableLocal(P,l);\n\nASSUME : P is a local ring locaized by the maximal ideal generated by parameters.\n\nRETURN : local ring where the variables at indeces in l removed. \n\n\n\n\n\n","category":"method"},{"location":"Overview.html#Feynman.substituteGraph-Tuple{labeledgraph, AbstractAlgebra.RingElement, AbstractAlgebra.RingElement}","page":"Overview","title":"Feynman.substituteGraph","text":"substituteGraph(G::labeledgraph,a::RingElement,b::RingElement)\n\nUSAGE :substituteGraph(G,a,b)\n\nASSUME : G is a labeled graph\n\nRETURN :a labelled graph with labelling where each 'a' is replaced 'b'\n\n\n\n\n\n","category":"method"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"CurrentModule = Feynman","category":"page"},{"location":"Example.html#Example-:-Fully-massless-nonplanar-double-pentagon","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"","category":"section"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"(Image: alt text)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"To provide an example on how to use our package, we calculate the Baikov matrix of the fully massless nonplanar double pentagon. ","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We define the graph G from the list of vertices and list of edges. The direction of momenta are taken from the direction of edges. All external momenta are taken to be outgoing.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=simple_graph([1,2,3,4,5,6,7],[(6,1),(6,4),(1,2),(3,7),(4,3),(2,7),(5,6),(7,5),1,2,3,4,5]);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"We then assign polynomial variables qi, at bounded edges and function field variables pi at the unbounded edges over a prime filed of characteristic 0.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\njulia> G=labelGraph(G,0);\n\n\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then we use balancing condition of the graph (realtions of momenta which are obtained by applying momentum conservation law at each vertex of the graph and to the whole graph) to rewrite each dependent momenta in terms of the eliments in the ordered set V of external momenta and loop momenta. Here we use invlex ordering on p1pEq1qL to choose independent external momenta and independent loop momenta. G.elimVars will store the eliminated variables.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G=eliminateVariables(G);\njulia> printLabeledGraph(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia> G.elimvar 7-element Vector{QQMPolyRingElem}: p[5] q[3] q[4] q[5] q[6] q[7] q[8]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Then the irreducible scalar products associated to G can be printed as follows:","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia>ISP(G)","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"Ideal generated by p[3]q[1] p[4]q[1] p[1]*q[2]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\nWe should remove the eliminated variables from $G$, in order to compute the Baikov matrix of $G$.","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=removeElimVars(G); QQMPolyRingElem[p[1], p[2], p[3], p[4], p[5], q[1], q[2]]","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"\n\nWe then calculate the Baikov matrix associated to Feynman integral of $G$. It will also print the assignment of Baikov variables $z[i]$ to each inverse propagators and irreducible scalar products of $G$.\n","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"julia julia> G=computeBaikovMatrix(G);","category":"page"},{"location":"Example.html","page":"Example : Fully massless nonplanar double pentagon","title":"Example : Fully massless nonplanar double pentagon","text":"labels used for Gram matrix of external loop momenta:\n[\"p[1]*p[2] => 1//2*t[1]\"]\n[\"p[1]*p[3] => 1//2*t[2]\"]\n[\"p[2]*p[3] => 1//2*t[3]\"]\n[\"p[1]*p[4] => 1//2*t[4]\"]\n[\"p[2]*p[4] => 1//2*t[5]\"]\n[\"p[3]*p[4] => -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5]\"]\nAssignment of Baikov variables (Z_i) are:\n[\"z[1] => p[3]*q[1]\"]\n[\"z[2] => p[4]*q[1]\"]\n[\"z[3] => q[1]^2\"]\n[\"z[4] => -2*p[1]*q[1] + q[1]^2\"]\n[\"z[5] => 2*p[1]*p[2] - 2*p[1]*q[1] - 2*p[2]*q[1] + q[1]^2\"]\n[\"z[6] => p[1]*q[2]\"]\n[\"z[7] => q[2]^2\"]\n[\"z[8] => -2*p[1]*p[2] - 2*p[1]*p[3] - 2*p[1]*p[4] - 2*p[2]*p[3] - 2*p[2]*p[4] - 2*p[3]*q[2] - 2*p[4]*q[2] + q[2]^2\"]\n[\"z[9] => -2*p[4]*q[2] + q[2]^2\"]\n[\"z[10] => q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n[\"z[11] => -2*p[1]*q[1] - 2*p[1]*q[2] - 2*p[2]*q[1] - 2*p[2]*q[2] - 2*p[3]*q[1] - 2*p[3]*q[2] - 2*p[4]*q[1] - 2*p[4]*q[2] + q[1]^2 + 2*q[1]*q[2] + q[2]^2\"]\n\njulia> G.baikovmatrix\n6×6 Matrix{RingElem}:\n 0 … z[6]\n 1//2*t[1] 1//2*t[2] + 1//2*t[3] + 1//2*t[4] + 1//2*t[5] - z[1] - z[2] - 1//2*z[3] + 1//2*z[5] - z[6] - 1//2*z[7] + 1//2*z[8] + 1//2*z[10] - 1//2*z[11]\n 1//2*t[2] -1//2*t[1] - 1//2*t[2] - 1//2*t[3] - 1//2*t[4] - 1//2*t[5] - 1//2*z[8] + 1//2*z[9]\n 1//2*t[3] 1//2*z[7] - 1//2*z[9]\n 1//2*z[3] - 1//2*z[4] -1//2*z[3] - 1//2*z[7] + 1//2*z[10]\n z[6] … z[7]","category":"page"},{"location":"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"}] } diff --git a/docs/src/feynman_lib.md b/docs/src/feynman_lib.md index 0036f86..cbf72a3 100644 --- a/docs/src/feynman_lib.md +++ b/docs/src/feynman_lib.md @@ -1,5 +1,5 @@ # `printGraph` Function **Usage:** -```singular +```Singular printGraph(G);