Open tueda opened 7 years ago
You are hitting here on a (by now) known problem that dummy indices inside functions inside functions do not get handled well. Sometimes there can even be errors. This is why the ‘fast’ handling of color in convdia with the use of diacolor.h does not work well when there are open indices. For the moment I am trying to hack around this, because it has all the looks like this is going to be very complicated to track down and fix. At the moment I have no time for it.
Jos
On 25 nov. 2016, at 13:50, Takahiro Ueda notifications@github.com wrote:
This may be out of the scope of the current implementation of dummy indices, but I expect the following program gives only one term after canonicalizing summed indices:
CF f1,f2,vec,g(symmetric); V p; I mu1,...,mu9;
L F =
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu2)g(mu3,mu4)) f2(vec(p,mu5)^2)
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu3)g(mu2,mu4)) f2(vec(p,mu6)^2)
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu4)g(mu2,mu3)) f2(vec(p,mu7)^2) ; sum mu1,...,mu9; renumber,1; P +s; .end Unfortunately, that is not the case:
FORM 4.1 (Nov 24 2016, v4.1-20131025-270-g6fe5632) 64-bits Run: Fri Nov 25 13:35:18 2016
F =
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N2?)*g( N3?,N4?))*f2(vec(p,N5?)^2)
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N3?)*g( N2?,N4?))*f2(vec(p,N5?)^2)
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N4?)*g( N2?,N3?))*f2(vec(p,N5?)^2) ; Note that the indices in f2 are all changed to N5?. This means FORM manages to sum up the indices in such a way that it doesn't conflict with indices in another function f1, not making f2(vec(p,N1?)^2). But then FORM doesn't try for interchanges of indices like mu2 <-> mu3.
One can easily check that the three terms in the above program are indeed equivalent by
id f1(x?) = x; id f2(x?) = 1; * ignore f2(vec(p,N5_?)^2) renumber,0; — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/vermaseren/form/issues/150, or mute the thread https://github.com/notifications/unsubscribe-auth/AFLxEmkjIbXFAJWS9UHLhSAwA_5MfpBoks5rBtmygaJpZM4K8aYn.
Hi Takahiro,
I am struggling with this one again and what happens is the following: You have a function f with various terms in its argument(s). Now when you have dummy indices in those terms of each term it should know which one is the maximum one, and for the complete term at bottom level it should know the maximum of all of those. There is nothing that keeps track of this. Building it in will not be simple unless we sacrifice a lot of speed by sampling it all the time. Even then, a renumber inside an argument is extremely dangerous if there is more than one function. This will need much thought and I will have to avoid the use of diacolor.h Too bad.
Cheers
Jos
On 25 nov. 2016, at 14:15, Jos Vermaseren t68@nikhef.nl wrote:
You are hitting here on a (by now) known problem that dummy indices inside functions inside functions do not get handled well. Sometimes there can even be errors. This is why the ‘fast’ handling of color in convdia with the use of diacolor.h does not work well when there are open indices. For the moment I am trying to hack around this, because it has all the looks like this is going to be very complicated to track down and fix. At the moment I have no time for it.
Jos
On 25 nov. 2016, at 13:50, Takahiro Ueda <notifications@github.com mailto:notifications@github.com> wrote:
This may be out of the scope of the current implementation of dummy indices, but I expect the following program gives only one term after canonicalizing summed indices:
CF f1,f2,vec,g(symmetric); V p; I mu1,...,mu9;
L F =
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu2)g(mu3,mu4)) f2(vec(p,mu5)^2)
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu3)g(mu2,mu4)) f2(vec(p,mu6)^2)
- f1(vec(p,mu1)vec(p,mu2)vec(p,mu3)vec(p,mu4)g(mu1,mu4)g(mu2,mu3)) f2(vec(p,mu7)^2) ; sum mu1,...,mu9; renumber,1; P +s; .end Unfortunately, that is not the case:
FORM 4.1 (Nov 24 2016, v4.1-20131025-270-g6fe5632) 64-bits Run: Fri Nov 25 13:35:18 2016
F =
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N2?)*g( N3?,N4?))*f2(vec(p,N5?)^2)
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N3?)*g( N2?,N4?))*f2(vec(p,N5?)^2)
- f1(vec(p,N1?)*vec(p,N2?)vec(p,N3_?)vec(p,N4?)*g(N1?,N4?)*g( N2?,N3?))*f2(vec(p,N5?)^2) ; Note that the indices in f2 are all changed to N5?. This means FORM manages to sum up the indices in such a way that it doesn't conflict with indices in another function f1, not making f2(vec(p,N1?)^2). But then FORM doesn't try for interchanges of indices like mu2 <-> mu3.
One can easily check that the three terms in the above program are indeed equivalent by
id f1(x?) = x; id f2(x?) = 1; * ignore f2(vec(p,N5_?)^2) renumber,0; — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/vermaseren/form/issues/150, or mute the thread https://github.com/notifications/unsubscribe-auth/AFLxEmkjIbXFAJWS9UHLhSAwA_5MfpBoks5rBtmygaJpZM4K8aYn.
I can imagine it would be very tricky. And could be slow. Maybe we can add a kind of dirty flag for each function indicating dummy indices-free to skip the costly check if not needed.
Hi Takahiro,
For the moment the best is a warning not to do these things with probably a small example. I am still not sure what would constitute a good solution when more than one function is involved as in f(terms with dummy indices)*f(terms with dummy indices) I tried (I had one one function) to stick in lots of renumber statements, but that did not help. I still had terms in the function argument in which the only dummy index was N2_?. Clearly things do not work right there. I switched down to color.h and am now checking how well things go. Probably means that we may have to rerun everything at the 5-loop level. Or at least check that the color factors do not change.
Cheers
Jos
On 26 nov. 2016, at 19:50, Takahiro Ueda notifications@github.com wrote:
I can imagine it would be very tricky. And could be slow. Maybe we can add a kind of dirty flag for each function indicating dummy indices-free to skip the costly check if not needed.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/vermaseren/form/issues/150#issuecomment-263079446, or mute the thread https://github.com/notifications/unsubscribe-auth/AFLxEtT7svPv9DQUn_mAbMLONLxFLjecks5rCH-PgaJpZM4K8aYn.
This may be out of the scope of the current implementation of dummy indices, but I expect the following program gives only one term after canonicalizing summed indices:
Unfortunately, that is not the case:
Note that the indices in
f2
are all changed toN5_?
. This means FORM manages to sum up the indices in such a way that it doesn't conflict with indices in another functionf1
, not makingf2(vec(p,N1_?)^2)
. But then FORM doesn't try for interchanges of indices likemu2 <-> mu3
.One can easily check that the three terms in the above program are indeed equivalent by