# Singular          #### D.4.6.6 gromovWitten

Procedure from library `ellipticcovers.lib` (see ellipticcovers_lib).

Usage:
gromovWitten(P); P number
gromovWitten(G,d); G graph, d int
gromovWitten(G,b); G graph, b list

Assume:
P is a propagator, or
G is a Feynman graph and d a non-negative integer, or
G is a Feynman graph and b is a list of integers of length equal to the number of edges of G
We assume that the coefficient ring has one rational variable for each vertex of G.

Return:
Gromov-Witten invariant.

Theory:
Computes

- the Gromov-Witten invariant of a given propagator P, or

- the invariant N_(G,d)*|Aut(G)| where d is the degree of the covering, or

- the number N_(G,b) of coverings with source G and target an elliptic curves with branch type a over a fixed base point (that is, the i-th edge passes over the base point with multiplicity b[i]).

Example:
 ```LIB "ellipticcovers.lib"; ring R=(0,x1,x2,x3,x4),(q1,q2,q3,q4,q5,q6),dp; graph G = makeGraph(list(1,2,3,4),list(list(1,3),list(1,2),list(1,2),list(2,4),list(3,4),list(3,4))); number P = propagator(G,list(0,2,1,0,0,1)); gromovWitten(P); ==> 256 gromovWitten(G,list(0,2,1,0,0,1)); ==> 256 gromovWitten(G,2); ==> 32 ```

### Misc 