Overview

GromovWitten.consttermMethod
constterm( x1::QQMPolyRingElem, x2::QQMPolyRingElem, N::Integer)

returns the constant term of the propagator

Examples (without vertex contribution)

julia> R,x=polynomial_ring(QQ,:x=>1:2);  # using Nemo.
julia> constterm(x[1],x[2],3)
 3*x[1]^6 + 2*x[1]^5*x[2] + x[1]^4*x[2]^2
 constterm(x1::QQMPolyRingElem, x2::QQMPolyRingElem, z1::QQMPolyRingElem, z2::QQMPolyRingElem,aa::Integer, N::Integer)

here aa=1 is the order for sfunction series and $N=\sum_{n=1}^{3g-3} a_i$ where $a=[a_1,…,a_{3g-3}]$ is a branch type.

Examples (with vertex contribution)

julia> R,x,z=polynomial_ring(QQ,:x=>1:2,:z=>1:2);  # using Nemo.

julia> constterm(x[1],x[2],z[1],z[2],1,2)
 1//18*x[1]^4*z[1]^2*z[2]^2 + 1//3*x[1]^4*z[1]^2 + 1//3*x[1]^4*z[2]^2 + 2*x[1]^4 + 1//576*x[1]^3*x[2]*z[1]^2*z[2]^2 + 1//24*x[1]^3*x[2]*z[1]^2 + 1//24*x[1]^3*x[2]*z[2]^2 + x[1]^3*x[2]
source
GromovWitten.eisenstein_seriesMethod
 eisenstein_series(order::Int, k::Int)

Return the expansion of the weight Eisenstein series k with fixed order. For a fixed order $m$, we compute $E_k = 1 - \frac{2 k}{ B_k} \sum_{d=1}^{m} \sigma_{k-1}(d) q[1]^{2 d}$

julia> eisenstein_series(5,2)  #E2
-144*q[1]^10 - 168*q[1]^8 - 96*q[1]^6 - 72*q[1]^4 - 24*q[1]^2 + 1

julia> eisenstein_series(5,4) #E4
30240*q[1]^10 + 17520*q[1]^8 + 6720*q[1]^6 + 2160*q[1]^4 + 240*q[1]^2 + 1
eisenstein_series( num_terms::Int,k::Int,q::Union{QQMPolyRingElem, Vector{QQMPolyRingElem}})
julia> eisenstein_series(5,2,q)  #E2
-144*q[1]^10 - 168*q[1]^8 - 96*q[1]^6 - 72*q[1]^4 - 24*q[1]^2 + 1
julia> eisenstein_series(5,4,q) #E4
30240*q[1]^10 + 17520*q[1]^8 + 6720*q[1]^6 + 2160*q[1]^4 + 240*q[1]^2 + 1
source
GromovWitten.feynman_integral_branch_typeMethod
feynman_integral_branch_type(  F::FeynmanGraph,   a::Vector{Int64} ;l=zeros(Int,nv(F.G)))

compute the Feynman Integral for a specified branch type a for all ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> F=FeynmanIntegral(G);

julia> a=[0,2,1,0,0,1];

julia> feynman_integral_branch_type(F,a)
256*q[2]^4*q[3]^2*q[6]^2
 feynman_integral_branch_type( F::FeynmanGraph,   a::Vector{Int64} ;g=zeros(Int,nv(F.G)),l=zeros(Int,nv(F.G)))

Examples (with vertex contribution)

julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);

julia> a=[0,0,3];
julia> g=[1,0,0];

julia> feynman_integral_branch_type(F,a,g)
115//3*q[3]^6
source
GromovWitten.feynman_integral_branch_type_orderMethod
feynman_integral_branch_type_order(  F::FeynmanGraph,   a::Vector{Int64}  ,Ω::Vector{Int64};l=zeros(Int,nv(F.G)))

compute the Feynman Integral for a specified branch type a for a fixed ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> F=FeynmanIntegral(G);

julia> a=[0,2,1,0,0,1];

julia> Ω=[1,3,4,2];

julia> feynman_integral_branch_type_order(F,a,Ω)
128*q[2]^2=4*q[3]^2*q[6]^2
 feynman_integral_branch_type_order( F::FeynmanGraph,   a::Vector{Int64}, Ω::Vector{Int64}, g::Vector{Int64};l=zeros(Int, nv(F.G)))

Examples (with vertex contribution)

julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);

julia> a=[0,0,3];
julia> g=[1,0,0];
julia> Ω=[1,2,3];


julia> feynman_integral_branch_type_order(F,a,Ω,g)
115//6*q[3]^6
source
GromovWitten.feynman_integral_degreeMethod
 feynman_integral_degree( F::FeynmanGraph,d::Integer;l=zeros(Int,nv(F.G)))

compute the Feynman Integral for over all the partitions of the degree d for all ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
 FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> a=[0,2,1,0,0,1];

julia> feynman_integral_degree(F,3)

288*q[1]^6 + 32*q[1]^4*q[2]^2 + 32*q[1]^4*q[3]^2 + 32*q[1]^4*q[5]^2 + 32*q[1]^4*q[6]^2 + 8*q[1]^2*q[2]^2*q[5]^2 + 8*q[1]^2*q[2]^2*q[6]^2 + 8*q[1]^2*q[3]^2*q[5]^2 + 8*q[1]^2*q[3]^2*q[6]^2 + 24*q[2]^6 + 152*q[2]^4*q[3]^2 + 8*q[2]^4*q[5]^2 + 8*q[2]^4*q[6]^2 + 152*q[2]^2*q[3]^4 + 32*q[2]^2*q[3]^2*q[5]^2 + 32*q[2]^2*q[3]^2*q[6]^2 + 32*q[2]^2*q[4]^4 + 8*q[2]^2*q[4]^2*q[5]^2 + 8*q[2]^2*q[4]^2*q[6]^2 + 8*q[2]^2*q[5]^4 + 32*q[2]^2*q[5]^2*q[6]^2 + 8*q[2]^2*q[6]^4 + 24*q[3]^6 + 8*q[3]^4*q[5]^2 + 8*q[3]^4*q[6]^2 + 32*q[3]^2*q[4]^4 + 8*q[3]^2*q[4]^2*q[5]^2 + 8*q[3]^2*q[4]^2*q[6]^2 + 8*q[3]^2*q[5]^4 + 32*q[3]^2*q[5]^2*q[6]^2 + 8*q[3]^2*q[6]^4 + 288*q[4]^6 + 32*q[4]^4*q[5]^2 + 32*q[4]^4*q[6]^2 + 24*q[5]^6 + 152*q[5]^4*q[6]^2 + 152*q[5]^2*q[6]^4 + 24*q[6]^6

 feynman_integral_degree(  F::FeynmanGraph,d::Integer, g::Vector{Int64};l=zeros(Int, nv(F.G)))

Examples (with vertex contribution)

julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
 FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);

julia> a=[0,0,3];
julia> g=[1,0,0];

julia> feynman_integral_degree(F,3,g)
115//3*q[1]^6 + 1//4*q[1]^4*q[2]^2 + 1//4*q[1]^4*q[3]^2 + 1//4*q[1]^2*q[2]^4 + 1//2*q[1]^2*q[2]^2*q[3]^2 + 1//4*q[1]^2*q[3]^4 + 115//3*q[2]^6 + 1//4*q[2]^4*q[3]^2 + 1//4*q[2]^2*q[3]^4 + 115//3*q[3]^6
source
GromovWitten.feynman_integral_degree_orderMethod
feynman_integral_degree_order(  F::FeynmanGraph,o::Vector{Int64},d::Integer;l=zeros(Int,nv(F.G)))

compute the Feynman Integral for all the partitions of the degree d for a fixed ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> F=FeynmanIntegral(G);

julia> a=[0,2,1,0,0,1];

julia> Ω=[1,3,4,2];

julia> feynman_integral_degree_order(F,Ω,4)
4*q[1]^4*q[2]^2*q[3]^2 + 4*q[1]^2*q[2]^4*q[5]^2 + 4*q[1]^2*q[2]^4*q[6]^2 + 4*q[1]^2*q[3]^4*q[5]^2 + 4*q[1]^2*q[3]^4*q[6]^2 + 176*q[2]^8 + 496*q[2]^6*q[3]^2 + 60*q[2]^6*q[5]^2 + 60*q[2]^6*q[6]^2 + 788*q[2]^4*q[3]^4 + 128*q[2]^4*q[3]^2*q[5]^2 + 128*q[2]^4*q[3]^2*q[6]^2 + 4*q[2]^4*q[4]^2*q[5]^2 + 4*q[2]^4*q[4]^2*q[6]^2 + 16*q[2]^4*q[5]^4 + 16*q[2]^4*q[6]^4 + 496*q[2]^2*q[3]^6 + 128*q[2]^2*q[3]^4*q[5]^2 + 128*q[2]^2*q[3]^4*q[6]^2 + 4*q[2]^2*q[3]^2*q[4]^4 + 48*q[2]^2*q[3]^2*q[5]^4 + 4*q[2]^2*q[3]^2*q[5]^2*q[6]^2 + 48*q[2]^2*q[3]^2*q[6]^4 + 176*q[3]^8 + 60*q[3]^6*q[5]^2 + 60*q[3]^6*q[6]^2 + 4*q[3]^4*q[4]^2*q[5]^2 + 4*q[3]^4*q[4]^2*q[6]^2 + 16*q[3]^4*q[5]^4 + 16*q[3]^4*q[6]^4
 feynman_integral_degree_order(  F::FeynmanGraph,o::Vector{Int64},d::Integer, g::Vector{Int64};l=zeros(Int, nv(F.G)))

Examples (with vertex contribution)

julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
 FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);

julia> a=[0,0,3];
julia> g=[1,0,0];
julia> Ω=[1,2,3];

julia> feynman_integral_degree_order(F,Ω,3,g)
1//24*q[1]^4*q[2]^2 + 1//24*q[1]^4*q[3]^2 + 1//24*q[1]^2*q[2]^4 + 1//12*q[1]^2*q[2]^2*q[3]^2 + 1//24*q[1]^2*q[3]^4 + 1//24*q[2]^4*q[3]^2 + 1//24*q[2]^2*q[3]^4 + 115//6*q[3]^6
source
GromovWitten.feynman_integral_degree_sumMethod
 feynman_integral_degree_sum( F::FeynmanGraph, d::Union{Int64, Vector{Int64}}; l=zeros(Int, nv(F.G)))

compute the sum of all Feynman Integrals up to a certain degree d for all ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> F=FeynmanIntegral(G);


julia> feynman_integral_degree_sum(F,3)
288*q[1]^6 + 32*q[1]^4*q[2]^2 + 32*q[1]^4*q[3]^2 + 32*q[1]^4*q[5]^2 + 32*q[1]^4*q[6]^2 + 8*q[1]^4 + 8*q[1]^2*q[2]^2*q[5]^2 + 8*q[1]^2*q[2]^2*q[6]^2 + 8*q[1]^2*q[3]^2*q[5]^2 + 8*q[1]^2*q[3]^2*q[6]^2 + 24*q[2]^6 + 152*q[2]^4*q[3]^2 + 8*q[2]^4*q[5]^2 + 8*q[2]^4*q[6]^2 + 152*q[2]^2*q[3]^4 + 32*q[2]^2*q[3]^2*q[5]^2 + 32*q[2]^2*q[3]^2*q[6]^2 + 8*q[2]^2*q[3]^2 + 32*q[2]^2*q[4]^4 + 8*q[2]^2*q[4]^2*q[5]^2 + 8*q[2]^2*q[4]^2*q[6]^2 + 8*q[2]^2*q[5]^4 + 32*q[2]^2*q[5]^2*q[6]^2 + 8*q[2]^2*q[6]^4 + 24*q[3]^6 + 8*q[3]^4*q[5]^2 + 8*q[3]^4*q[6]^2 + 32*q[3]^2*q[4]^4 + 8*q[3]^2*q[4]^2*q[5]^2 + 8*q[3]^2*q[4]^2*q[6]^2 + 8*q[3]^2*q[5]^4 + 32*q[3]^2*q[5]^2*q[6]^2 + 8*q[3]^2*q[6]^4 + 288*q[4]^6 + 32*q[4]^4*q[5]^2 + 32*q[4]^4*q[6]^2 + 8*q[4]^4 + 24*q[5]^6 + 152*q[5]^4*q[6]^2 + 152*q[5]^2*q[6]^4 + 8*q[5]^2*q[6]^2 + 24*q[6]^6

 feynman_integral_degree_sum( F::FeynmanGraph, d::Union{Int64, Vector{Int64}}, g::Vector{Int64};l=zeros(Int, nv(F.G)))

Examples (with vertex contribution)

julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
 FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);


julia> feynman_integral_degree_sum(F,3,g)
115//3*q[1]^6 + 1//4*q[1]^4*q[2]^2 + 1//4*q[1]^4*q[3]^2 + 19//4*q[1]^4 + 1//4*q[1]^2*q[2]^4 + 1//2*q[1]^2*q[2]^2*q[3]^2 + 1//4*q[1]^2*q[2]^2 + 1//4*q[1]^2*q[3]^4 + 1//4*q[1]^2*q[3]^2 + 1//12*q[1]^2 + 115//3*q[2]^6 + 1//4*q[2]^4*q[3]^2 + 19//4*q[2]^4 + 1//4*q[2]^2*q[3]^4 + 1//4*q[2]^2*q[3]^2 + 1//12*q[2]^2 + 115//3*q[3]^6 + 19//4*q[3]^4 + 1//12*q[3]^2
source
GromovWitten.feynman_integral_degree_sum_orderMethod
 feynman_integral_degree_sum_order( F::FeynmanGraph,o::Vector{Int64}, d::Union{Int64, Vector{Int64}};   g=zeros(Int, nv(F.G)),l=zeros(Int, nv(F.G)))

compute the sum of all Feynman Integrals up to a certain degree d with a fixed ordering Ω

Examples (without vertex contribution)

julia> G=FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])
 FeynmanGraph([(1, 3), (1, 2), (1, 2), (2, 4), (3, 4), (3, 4)])

julia> a=[0,2,1,0,0,1];

julia> Ω=[1,3,4,2];


julia> feynman_integral_degree_sum_order(F,Ω,3)
12*q[2]^6 + 76*q[2]^4*q[3]^2 + 4*q[2]^4*q[5]^2 + 4*q[2]^4*q[6]^2 + 76*q[2]^2*q[3]^4 + 16*q[2]^2*q[3]^2*q[5]^2 + 16*q[2]^2*q[3]^2*q[6]^2 + 4*q[2]^2*q[3]^2 + 12*q[3]^6 + 4*q[3]^4*q[5]^2 + 4*q[3]^4*q[6]^2

 feynman_integral_degree_sum_order( F::FeynmanGraph,o::Vector{Int64}, d::Union{Int64, Vector{Int64}}, g::Vector{Int64}; l=zeros(Int, nv(F.G)))

Examples (with vertex contribution)

 julia> G=FeynmanGraph([(1, 2), (2, 3), (1, 3)])
 FeynmanGraph([(1, 2), (2, 3), (1, 3)])

julia> F=FeynmanIntegral(G);

julia> a=[0,0,3];
julia> g=[1,0,0];
julia> Ω=[1,2,3];


julia> feynman_integral_degree_sum_order(F,Ω,3,g)
1//24*q[1]^4*q[2]^2 + 1//24*q[1]^4*q[3]^2 + 1//24*q[1]^2*q[2]^4 + 1//12*q[1]^2*q[2]^2*q[3]^2 + 1//24*q[1]^2*q[2]^2 + 1//24*q[1]^2*q[3]^4 + 1//24*q[1]^2*q[3]^2 + 1//24*q[2]^4*q[3]^2 + 1//24*q[2]^2*q[3]^4 + 1//24*q[2]^2*q[3]^2 + 115//6*q[3]^6 + 19//8*q[3]^4 + 1//24*q[3]^2
source
GromovWitten.filter_termMethod
 filter_term(p::Union{QQMPolyRingElem, Int64}, variables::Vector{QQMPolyRingElem}, s::Vector{Int64})

replaces all terms of the polynomial p with zero whenever the variables raised to a power of s1 exceed the specified power s.

Examples

julia> R,x=polynomial_ring(QQ, :q=>1:4)
julia> p= 8*q[1]^6*q[2]^2 + 8*q[1]^6*q[3]^2 + 8*q[1]^6*q[4]^2 + 54*q[1]^4*q[2]^4 + 18*q[1]^4*q[2]^2*q[3]^2 + 18*q[1]^4*q[2]^2*q[4]^2 +54*q[1]^4*q[3]^4 + 18*q[1]^4*q[3]^2*q[4]^2 + 54*q[1]^4*q[4]^4 + 56*q[1]^2*q[2]^6 + 6*q[1]^2*q[2]^4*q[3]^2 + 6*q[1]^2*q[2]^4*q[4]^2 +6*q[1]^2*q[2]^2*q[3]^4 + 12*q[1]^2*q[2]^2*q[3]^2*q[4]^2 + 6*q[1]^2*q[2]^2*q[4]^4 + 56*q[1]^2*q[3]^6 + 6*q[1]^2*q[3]^4*q[4]^2 + 6*q[1]^2*q[3]^2*q[4]^4 + 56*q[1]^2*q[4]^6

we replace all term in $p$ with q[1]^a*q[2]^b*q[3]^c > q[1]*q[2]*q[3] by zero,this means all power $(a,b,c)>(2,2,2)$

julia> filter_term(p,[q[1],q[2],q[3]],[2,2,2])
12*q[1]^2*q[2]^2*q[3]^2*q[4]^2 + 6*q[1]^2*q[2]^2*q[4]^4 + 6*q[1]^2*q[3]^2*q[4]^4 + 56*q[1]^2*q[4]^6

also

julia>  filter_term(p,[q[1],q[2]],[2,2])
6*q[1]^2*q[2]^2*q[3]^4 + 12*q[1]^2*q[2]^2*q[3]^2*q[4]^2 + 6*q[1]^2*q[2]^2*q[4]^4 + 56*q[1]^2*q[3]^6 + 6*q[1]^2*q[3]^4*q[4]^2 + 6*q[1]^2*q[3]^2*q[4]^4 + 56*q[1]^2*q[4]^6 + q[1]

julia> filter_term(p,q[1],1)
q[1]
source
GromovWitten.filter_vectorMethod
filter_vector(polyvector::Vector{QQMPolyRingElem}, variables::Union{Vector{QQMPolyRingElem}, QQMPolyRingElem}, power::Union{Vector{Int64}, Int64})

returns the number filter_term of function in a vector of polynomial.

Example

julia> R,q=polynomial_ring(QQ,["q"])

julia> v=[-122976*q[1]^6 - 16632*q[1]^4 - 504*q[1]^2 + 1, -645120*q[1]^12 - 691200*q[1]^10 - 339840*q[1]^8 - 62496*q[1]^6 - 3672*q[1]^4 + 216*q[1]^2 + 1, -884736*q[1]^18 - 1990656*q[1]^16 - 2156544*q[1]^14 - 1340928*q[1]^12 - 497664*q[1]^10 - 95040*q[1]^8 - 3744*q[1]^6 + 1512*q[1]^4 - 72*q[1]^2 + 1]

julia> filter_vector(v,q,6)
3-element Vector{QQMPolyRingElem}:
 -122976*q[1]^6 - 16632*q[1]^4 - 504*q[1]^2 + 1
 -62496*q[1]^6 - 3672*q[1]^4 + 216*q[1]^2 + 1
 -3744*q[1]^6 + 1512*q[1]^4 - 72*q[1]^2 + 1
source
GromovWitten.flip_signatureMethod
flip_signature(F::FeynmanGraph ,p::Vector{Int64},a::Vector{Int64})

Let Ω=[x1,...,xn] be a given Order and $a$ a branche type,flipsignature returns -1 if xi<x_j$ and O else. It will return -2 in case the Graph G has a loop.

source
GromovWitten.inv_sfunctionMethod
inv_sfunction(z::QQMPolyRingElem,m::Int64)

returns the inverse sfunction

\[ \frac{1}{S(z,m)}=\frac{z}{2 Sinh(z/2)}= \sum_{n = 0}^{m} \left( \left\{\begin{array}{ll} 1 & \text{if} && n = 1\\ - \frac{- 2^n (- 2 + 2^n)}{n!} B_n & (n > = 1 && (- 1 + n)\mod 2 = 1) \end{array}\right. \right) z^n \]

Where $B_n$ is Bernoulli number and ${m} \rightarrow \infty$.

Examples

julia> R,x=polynomial_ring(QQ,:x=>1:1); # using Nemo
julia> inv_sfunction(x[1],4)
7//5760*x[1]^4 - 1//24*x[1]^2 + 1
source
GromovWitten.looptermMethod
loopterm( z::QQMPolyRingElem, q::QQMPolyRingElem, m::Integer, a::Integer)

returns loop contribution with nonzero genus gi at a vertex i.

source
GromovWitten.matrix_of_integralMethod
 polynomial_to_matrix(vect::Vector{QQMPolyRingElem})

returns a matrix from a given polynomial. The returned matrix is of type QQMatrix.

julia> Iq=25344*q[1]^8 + 1792*q[1]^6 +32q[1]^4

julia> matrix_of_integral(Iq)
[    0]
[    0]
[    0]
[    0]
[   32]
[    0]
[ 1792]
[    0]
[25344]
source
GromovWitten.next_partitionMethod
combination(f::Function, k::Int, d::Int)
next_partition(a::Vector{Int})

#Examples

This function returns the number of partitions of $n$ into fixed $k$ parts.

julia> using GromovWitten

julia> combination(next_partition,3, 4)
15-element Vector{Vector{Int64}}:
 [4, 0, 0]
 [3, 1, 0]
 [3, 0, 1]
 [2, 2, 0]
 [2, 1, 1]
 [2, 0, 2]
 [1, 3, 0]
 [1, 2, 1]
 [1, 1, 2]
 [1, 0, 3]
 [0, 4, 0]
 [0, 3, 1]
 [0, 2, 2]
 [0, 1, 3]
 [0, 0, 4]
source
GromovWitten.polynomial_to_matrixMethod
 polynomial_to_matrix(vect::Vector{QQMPolyRingElem})

returns a matrix fromed by the coefficients of a given vector of polynomials with same degree. The returned matrix is of type QQMatrix.

julia> vp=[ -122976*q[1]^6 - 16632*q[1]^4 - 504*q[1]^2 + 1, -62496*q[1]^6 - 3672*q[1]^4 + 216*q[1]^2 + 1,-3744*q[1]^6 + 1512*q[1]^4 - 72*q[1]^2 + 1]

julia> polynomial_to_matrix(vp)
[      1        1       1]
[      0        0       0]
[   -504      216     -72]
[      0        0       0]
[ -16632    -3672    1512]
[      0        0       0]
[-122976   -62496   -3744]
source
GromovWitten.protermMethod
 proterm( x1::QQMPolyRingElem, x2::QQMPolyRingElem, q::QQMPolyRingElem, a::Integer, N::Integer)

returns the non constant term of the propagator

Examples (without vertex contribution)

julia>  R,x,z=polynomial_ring(QQ,:x=>1:2,:q=>1:2); # using Nemo.
julia> proterm(x[1],x[2],q[1],1,2)
x[1]^3*x[2]*q[1]^2 + x[1]*x[2]^3*q[1]^2

Examples (with vertex contribution)

 proterm( x1::QQMPolyRingElem, x2::QQMPolyRingElem,z1::QQMPolyRingElem, z2::QQMPolyRingElem, q::QQMPolyRingElem, a::Integer,aa::Integer, N::Integer)
julia>  R,x,q,z=polynomial_ring(QQ,:x=>1:2,:q=>1:2,:z=>1:2); # using Nemo.
julia> proterm(x[1],x[2],z[1],z[2],q[1],1,1,2)
1//576*x[1]^3*x[2]*q[1]^2*z[1]^2*z[2]^2 + 1//24*x[1]^3*x[2]*q[1]^2*z[1]^2 + 1//24*x[1]^3*x[2]*q[1]^2*z[2]^2 + x[1]^3*x[2]*q[1]^2 + 1//576*x[1]*x[2]^3*q[1]^2*z[1]^2*z[2]^2 + 1//24*x[1]*x[2]^3*q[1]^2*z[1]^2 + 1//24*x[1]*x[2]^3*q[1]^2*z[2]^2 + x[1]*x[2]^3*q[1]^2
source
GromovWitten.quasimodularity_formMethod

quasimodular_form(Iq, weightmax::Int64)

express the Feynman Integral polynomial $I(q)$ in terms of a polynomial in $E_2, E_4, E_6$ This leads to $I(q)=\sum_{i,j,k} b_{i,j,k} E_2^i E_4^j E_6^k$

julia> R,q=polynomial_ring(QQ,["q"])

julia> Iq=886656*q[1]^12 + 182272*q[1]^10 + 25344*q[1]^8 + 1792*q[1]^6 +32q[1]^4

We define the polynomial ring in E2,E4,E6.

julia> quasimodular_form(Iq,12)
(1//93312, -3*E2^6 + 6*E2^4*E4 + 4*E2^3*E6 - 3*E2^2*E4^2 - 12*E2*E4*E6 + 4*E4^3 + 4*E6^2)
source
GromovWitten.sfunctionMethod
sfunction(z::QQMPolyRingElem,k::Int64)

Note:The function sfunction(z,k) takes account vertex contributions.

\[S(z, {m}) = \sum_{n = 0}^{{m}} \dfrac{2^{- 1 - n} (1 + (- 1)^n) }{(n + 1) !} z^n = \sum_{n = 0}^{{m}} \dfrac{{2^{- 2 n}} }{(2 n + 1) !} z^n, {m} \rightarrow \infty\]

Examples

julia> R,x=polynomial_ring(QQ,:x=>1:1); # using Nemo
julia> sfunction(x[1],4)

1//92897280*z[1]^8 + 1//322560*z[1]^6 + 1//1920*z[1]^4 + 1//24*z[1]^2 +1
source
GromovWitten.signature_and_multiplicitiesMethod
signature_and_multiplicities( G::FeynmanGraph, a::Vector{Int64})

returns flip_signature and their multiplicities.

Examples

julia> using GromovWitten

julia> G=FeynmanGraph([(1, 1), (1, 2), (2, 3), (3, 1)])
FeynmanGraph([(1, 1), (1, 2), (2, 3), (3, 1)])

julia> a=[2,0,0,1];

julia> signature_and_multiplicities(G,a)
2-element Vector{Tuple{Int64, Vector{Int64}}}:
 (4, [-2, -1, 0, 1])
 (2, [-2, 0, 0, 1])
source
GromovWitten.substituteMethod
 substitute(p::Union{QQMPolyRingElem, Int64})

replace all the variables by the first variable of p. With x=\[x_1,x2,x3 \] and p(x_1,x2,x3), substitute(x,p) returns p(x1,x_1,x_1)

julia> f=x[1]*x[2]+x[1]^3*x[2]+5x[1]^6-2x[3]*x[2]
  5*x[1]^6 + x[1]^3*x[2] + x[1]*x[2] - 2*x[2]*x[3]

julia> substitute(f)
 5*x[1]^6 + x[1]^4 - x[1]^2
source
GromovWitten.sum_of_coeffMethod
 sum_of_coeff(p::QQMPolyRingElem)

compute the sum of coefficient of the polynomial p.

julia> f=3*x[1]^6 + 2*x[1]^5*x[2] + x[1]^4*x[2]^2

julia> sum_of_coeff(f)
 6
source
GromovWitten.sum_of_divisor_powersMethod
sum_of_divisor_powers(n::Int, k::Int)

\[σ_k(n)\]

returns the sum of the $k^{th}$ powers of divisors of $n$. it returns also the number of divisors $d(n)$ of $n$ for $k=0$.

julia>sum_of_divisor_powers(6,0) # number of divisors of 6 $d(6)$
4

sum of divisors of 6.
julia> sum_of_divisor_powers(6,1)
12
source