1 * Part of the auxiliary files used in the production of the
4 * Non
-abelian Z
-theory
: Berends
-Giele recursion
for the alpha
'
5 * expansion of disk integrals
7 * in collaboration with Oliver Schlotterer.
9 * You can use this file as you wish, as long as you cite the
10 * paper 1609.XXXX afterwards
12 * Copyright (c) 2016 Carlos R. Mafra
15 Function tL, Dynkin, Word, L, R;
16 Function V, TreeLevel;
23 * ZZ() is the calligraphic Z, ie the BG current of 1/z
24 * eg ZZ(1,2,3) = 1/z12z23
25 CFunction Z(a),ZZ,Zint;
29 * assume canonical ordering
30 id Zint(1,...,'Npts
',[p],?m) = Zint(?m);
31 id Zint(1,?m,'Npts
',?n,{'Npts
'-1}) = sign_(nargs_(?m))*ZZ(1,?m)*ZZ({'Npts
'-1},reverse_(?n));
36 #procedure DynkinBracket()
38 * Nested Lie brackets according to definition above Lemma 1.3 in
39 * "Lie elements and an algebra associated with shuffles", R. Ree
41 * Dynkin(1,2) = Word(1,2) - Word(2,1)
42 * Dynkin(1,2,3) = word expansion of [[1,2],3]
45 print "error: Word() already present in DynkinBracket: %t";
50 id Dynkin(?m,j?,i?) = Dynkin(?m,j)*Word(i) - Word(i)*Dynkin(?m,j);
52 id Dynkin(i?) = Word(i);
57 #procedure StringTreeAmplitude(N)
59 * The local form of the string tree amplitude from 1106.2645
61 * input: TreeLevel(?m)
62 * output: equation (5.1) of 1603.09731 where the ordering Sigma=?m
64 * Note that the implementation below is just a hack meant to be
65 * used in the deriveBGcurrent-public.frm file. In particular,
66 * note that the integrand is always considered in the canonical order
67 * Do not use this function for other purposes unless you know what
71 print "error: tmpF() already present in StringTreeAmplitude";
75 id once TreeLevel(?m) = Ordering(?m)*tmpF(2,...,{'N
'-2});
77 id tmpF(?m) = tmpF(1,?m,{'N
'-1});
78 #call DeconcatenateN(tmpF,2)
79 id tmpF(?m1)*tmpF(?m2) = V(?m1)*V(reverse_(?m2))*Zint(?m1,'N
',?m2)*sign_(nargs_(?m1)-1);
81 id Ordering(?m)*Zint(?n) = Zint(?m,[p],?n);
87 * suggested by tueda at the FORM forum on 23.11.2015
89 * Replace F(1,2,3,...) with F(1,2,3,...) + permutations.
91 * There must be only one instance of F()
92 if ((count('F
',1) <= -1) || (count('F
',1) >= 2));
93 print "Error: Permute does not work for : %t";
101 #procedure DeconcatenateN(F,n)
103 * Deconcatenate function F into n-partitions or all partitions when n==0
105 * n==0: F(1,2,3) --> F(1)*F(2)*F(3) + F(1,2)*F(3) + F(1)*F(2,3)
106 * n==2: F(1,2,3) --> F(1,2)*F(3) + F(1)*F(2,3)
108 if (match(tmpF1(?m)));
109 print "Error: temp function already present: %t";
113 if ((count('F
',1) <= -1) || (count('F
',1) >= 2));
114 print "Error: Deconc does not work for : %t";
120 repeat id once 'F
'(?m)*'F
'(?n) =
125 id tmpF1(?m) = 'F
'(?m);
128 * do nothing, keep all partitions
130 * keep only n-partitions (or up to n-partitions)
131 * if ((match('F
'(?m))) && (count('F
',1) != 'n
'));
132 if ((match('F
'(?m))) && (count('F
',1) > 'n
'));
137 * remove trivial partition F(1,2,3) -> F(1,2,3)
138 if ((count('F
',1) == 1));