vermaseren / form

The FORM project for symbolic manipulation of very big expressions
GNU General Public License v3.0
1.16k stars 138 forks source link

Set restriction is ignored inside a dot product iff one of its own momenta is in there #70

Open benruijl opened 8 years ago

benruijl commented 8 years ago

UPDATED

If one of the momenta inside a dot product is used to limit the options of the other momenta using a set, this requirement is ignored, if there is no other match for that momentum. The example below explains what I mean:

V p1,p2;
CF ex;

L F = p1.p1;

id p1?!{p2?}.p2?!{p1?} = 1; * matched (BUG)

Print +s;
.end
vermaseren commented 8 years ago

I believe that this is in the manual. When you exclude matches with a set, it is never clear which one is matched first. In your case with p1?.p2?!{p1?}, if FORM matches the p1 first, fine, but if it matches the p2 first, the restriction is still meaningless. Hence the manual tells you to use p1?!{p2?}.p2?!{p1?}. This way you are safe.

Jos

On 30 mrt. 2016, at 17:49, Ben Ruijl notifications@github.com wrote:

If one of the momenta inside a dot product is used to limit the options of the other momenta using a set, this requirement is ignored, if there is no other match for that momentum. The example below explains what I mean:

V p1,p2; CF ex;

L F = ex(p1)*p1.p1;

id ex(p1?)p1?.p2?!{p1?} = 1; * skipped (GOOD) id p1?.p2?!{p1?} = 1; \ matched (BUG)

Print +s; .end — You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/vermaseren/form/issues/70

benruijl commented 8 years ago

I see it in the manual now. Whether this behavior is wanted without giving the user a warning about an undefined set restriction is something we can discuss at some point.

However, if I use your fix, it doesn't work. Only for functions, not for dot products.

Op wo 30 mrt. 2016 17:54 schreef Jos Vermaseren notifications@github.com:

I believe that this is in the manual. When you exclude matches with a set, it is never clear which one is matched first. In your case with p1?.p2?!{p1?}, if FORM matches the p1 first, fine, but if it matches the p2 first, the restriction is still meaningless. Hence the manual tells you to use p1?!{p2?}.p2?!{p1?}. This way you are safe.

Jos

On 30 mrt. 2016, at 17:49, Ben Ruijl notifications@github.com wrote:

If one of the momenta inside a dot product is used to limit the options of the other momenta using a set, this requirement is ignored, if there is no other match for that momentum. The example below explains what I mean:

V p1,p2; CF ex;

L F = ex(p1)*p1.p1;

id ex(p1?)p1?.p2?!{p1?} = 1; * skipped (GOOD) id p1?.p2?!{p1?} = 1; \ matched (BUG)

Print +s; .end — You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub < https://github.com/vermaseren/form/issues/70>

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/vermaseren/form/issues/70#issuecomment-203499740

benruijl commented 8 years ago

I have updated the bug report.