Overview
GromovWitten.GromovWitten
GromovWitten.constterm
GromovWitten.eisenstein_series
GromovWitten.feynman_integral_branch_type
GromovWitten.feynman_integral_branch_type_order
GromovWitten.feynman_integral_degree
GromovWitten.feynman_integral_degree_order
GromovWitten.feynman_integral_degree_sum
GromovWitten.feynman_integral_degree_sum_order
GromovWitten.filter_term
GromovWitten.filter_vector
GromovWitten.flip_signature
GromovWitten.inv_sfunction
GromovWitten.loopterm
GromovWitten.matrix_of_integral
GromovWitten.next_partition
GromovWitten.polynomial_to_matrix
GromovWitten.proterm
GromovWitten.quasimodularity_form
GromovWitten.sfunction
GromovWitten.signature_and_multiplicities
GromovWitten.substitute
GromovWitten.sum_of_coeff
GromovWitten.sum_of_divisor_powers
GromovWitten.GromovWitten
— ModuleGromovWitten is a package for computing Gromov-Witten invariant via Feynman Integral .
GromovWitten.constterm
— Methodconstterm( 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]
GromovWitten.eisenstein_series
— Method 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
GromovWitten.feynman_integral_branch_type
— Methodfeynman_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
GromovWitten.feynman_integral_branch_type_order
— Methodfeynman_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
GromovWitten.feynman_integral_degree
— Method 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
GromovWitten.feynman_integral_degree_order
— Methodfeynman_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
GromovWitten.feynman_integral_degree_sum
— Method 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
GromovWitten.feynman_integral_degree_sum_order
— Method 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
GromovWitten.filter_term
— Method 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]
GromovWitten.filter_vector
— Methodfilter_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
GromovWitten.flip_signature
— Methodflip_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.
GromovWitten.inv_sfunction
— Methodinv_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
GromovWitten.loopterm
— Methodloopterm( z::QQMPolyRingElem, q::QQMPolyRingElem, m::Integer, a::Integer)
returns loop contribution with nonzero genus gi at a vertex i.
GromovWitten.matrix_of_integral
— Method 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]
GromovWitten.next_partition
— Methodcombination(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]
GromovWitten.polynomial_to_matrix
— Method 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]
GromovWitten.proterm
— Method 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
GromovWitten.quasimodularity_form
— Methodquasimodular_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)
GromovWitten.sfunction
— Methodsfunction(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
GromovWitten.signature_and_multiplicities
— Methodsignature_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])
GromovWitten.substitute
— Method 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
GromovWitten.sum_of_coeff
— Method 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
GromovWitten.sum_of_divisor_powers
— Methodsum_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