1 * Derive the BG double current from the string disk amplitude
2 * using the algorithm of equation (3.31) from 1609.XXXX
8 #include- pss2-polylogs.h
9 #include- pss2-deriveBG-public.h
11 #procedure VVVTotL(Npts)
13 * Converts the superspace expression V_P V_Q to [Phi_P, Phi_Q] \equiv tL(P,tL(Q))
14 * according to equation (3.29) of 1609.XXXX
16 * Here tL(P) is the left-to-right Dynkin bracket of P, ell(P),
17 * eg tL(1,2,3) = [[1,2],3]
19 id V(1,?m)*V({'Npts'-1},?n) = tL(1,?m,tL({'Npts'-1},?n));
24 * anticommute if right branch is bigger (or equal, as it turns out) than the left
25 * this is used in the generation of BGphi{3,4}-ordered.h as it leads to fewer terms
26 * id tL(j1?,tL(i1?,?m)) = - tmpF(i1,?m)*Dynkin(j1);
27 * id tL(j1?,j2?,tL(i1?,i2?,?m)) = - tmpF(i1,i2,?m)*Dynkin(j1,j2);
28 * id tL(j1?,j2?,j3?,tL(i1?,i2?,i3?,?m)) = - tmpF(i1,i2,i3,?m)*Dynkin(j1,j2,j3);
29 * id tL(j1?,j2?,j3?,j4?,tL(i1?,i2?,i3?,i4?,?m)) = - tmpF(i1,i2,i3,i4,?m)*Dynkin(j1,j2,j3,j4);
31 id tL(?m,tL(?n)) = tmpF(?m)*Dynkin(?n);
33 id tmpF(?m)*Word(?n) = tL(?m,?n);
35 transform tL replace(1,last)=(1,m1,2,m2,3,m3,4,m4,5,m5,6,m6,7,m7,8,m8,9,m9,10,m10);
39 #procedure OrderZetaValues()
41 * This is just a trick to order the output according to
42 * the weight of the MZVs using the function tmpF().
43 * This is needed in order to (manually) add
44 * a few conditionals in the files BGphiN.h to load terms
45 * according to the weight requested by #call BGexpand(w)
47 * Note that the zwgt symbol is a trick to avoid generating
48 * zetas of weight higher than requested by BGexpand(w).
49 * This is done with the definition
51 * inside BGexpand(). This definition indicates to FORM that
52 * it must discard any appearance of zwgt^p where p>w (good for
55 id zeta2 = zeta2*zwgt^2;
56 id zeta3 = zeta3*zwgt^3;
57 id zeta5 = zeta5*zwgt^5;
58 id zeta7 = zeta7*zwgt^7;
60 id zwgt^x1? = tmpF(x1)*zwgt^x1;
61 repeat id R(?m)*tmpF(?n) = tmpF(?n)*R(?m);
62 repeat id L(?m)*tmpF(?n) = tmpF(?n)*L(?m);
66 #procedure AmplitudeToBG(Npts)
68 * This function implements the whole conversion from the string
69 * tree amplitude in its (n-2)! form to the Z-theory equation of motion
70 * according to the rules of the \int^\eom map in section 4 of 1609.XXXX
72 * Notation: tL(i,j,k) = T_{Ai,Aj,Ak}^{B1,B2,B3} etc
73 * = L(i)*L(j)*L(k)*R(1)*R(2)*R(3)
75 * Note that all numeric indices indices are prefixed by 'm' in the
76 * end to become eg m1,m2,m3 etc. These will become the multiparticle
77 * labels ?m1,?m2,?m3 etc in the various BGphiN.h files (we are
78 * using FORM's notation for multiparticle labels: ?m), including the
79 * labels in the Mandelstam variables, eg
81 * s(1,2) --> KK(?m1,[c],?m2)
83 * Note that KK(m1,[c],m2) = KK(m2,[c],m1), take this into account when
84 * comparing the output of this procedure with some of the files in BGphiN/
86 * There is minimal editing to convert the output of this
87 * procedure into the files BGphiN.h (eg s/tmpF([1-9])\*// and s/\([mn]\)/?\1/g) etc)
90 L amp'Npts' = sign_({'Npts'-3})*TreeLevel(1,...,'Npts');
92 #call StringTreeAmplitude('Npts')
94 #call FromZZToSimpsetBasis('Npts')
101 #include- allNptJregs/all'Npts'ptJregs.h
102 transform s replace(1,last)=(1,m1,2,m2,3,m3,4,m4,5,m5,6,m6,7,m7,8,m8,9,m9,10,m10);
106 id s(i?,j?) = KK(i,[c],j);
107 id tL(i1?,...,i{'Npts'-1}?) = <L(i1)>*...*<L(i{'Npts'-1})>*<R(n1)>*...*<R(n{'Npts'-1})>;
108 #call OrderZetaValues()
111 L Nterms = termsin_(amp'Npts');
112 bracket zeta2,zeta3,zeta5,zeta7,L,R,tL,zwgt,tmpF;
113 print +s -f amp'Npts',Nterms;
118 * The numeric value means the number of points in the string
119 * amplitude. Note that the BGphiN.h file is generated from the
120 * call with Npts=N+1 below. The currently supported values
121 * are Npts=4,...,10 which originate the files BGphi{3,...,9}-ordered.h
123 * For example, the output here gives rise to the file BGphi4-ordered.h
124 #call AmplitudeToBG(8)