magv / feynson

A tool for Feynman integral symmetries.
2 stars 1 forks source link

feynson complaining about propagator being not linear in the loop momentum #5

Open vsht opened 1 year ago

vsht commented 1 year ago

Hi Vitaly,

here's the first real issue we encountered when using feynson with linear propagators: applying symmetrize to

{{{l1^2, l1^2 + 2*gammakin*l1*me*np - 2*gammakin*me^2*u0b - l1*me*nm*u0b, l1^2 + l1*np*(2*gammakin*me - 2*gammakin*me*u0b)}, {l1^2, l1^2 - l1*me*nm*u0b + 2*gammakin*l1*me*np*u0b - 2*gammakin*me^2*u0b^2}}, {l1}, {{np^2, 0}, {nm^2, 0}, {nm*np, 2}}}

yields

[dbg 0.0002s +0.0002s] Family size set: set{2, 3}
[dbg 0.0003s +0.0001s] Preparing family 1
[dbg 0.0003s +0.0000s] > feynman_uf()
[dbg 0.0009s +0.0006s] < feynman_uf(+0.0006s)
[dbg 0.0009s +0.0000s] > bracket()
[dbg 0.0009s +0.0000s] < bracket(+0.0000s)
[dbg 0.0010s +0.0000s] Unique coefficient C0 = 1
[dbg 0.0010s +0.0000s] Unique coefficient C1 = -2*u0b^2*gammakin*me^2
[dbg 0.0010s +0.0000s] Unique coefficient C2 = -2*u0b*gammakin*me^2
[dbg 0.0010s +0.0000s] Preparing family 2
[dbg 0.0010s +0.0000s] > feynman_uf()
[dbg 0.0013s +0.0002s] < feynman_uf(+0.0002s)
[dbg 0.0013s +0.0000s] > bracket()
[dbg 0.0013s +0.0000s] < bracket(+0.0000s)
[dbg 0.0013s +0.0000s] Total interesting sectors: 5
[dbg 0.0014s +0.0001s] Precomputing canonical polynomials of each family
[dbg 0.0015s +0.0001s] Family 1, sector 7 is c80393f2279ec817cdd5c2935fdae89f7809dc1e9f6ec8a359d63956863f4fc6
[dbg 0.0015s +0.0000s] Family 2, sector 3 is 08c653128d03ca86c4522433d2f70dd00a70a033549377d117d1761e4293f66b
[dbg 0.0015s +0.0000s] Computing symmetries for families with 3 propagators
[inf 0.0015s +0.0000s] Family 1 (top sector 7) is unique
[dbg 0.0015s +0.0000s] Computing symmetries for families with 2 propagators
[dbg 0.0016s +0.0000s] Sector 1:3 is 2a7de7702bd30fe5d60de94742721f1042e23d6db98c2a34bafe7af42b0aab30
[dbg 0.0016s +0.0000s] Sector 1:5 is 610f43cc6d52a7b74bdae314bc073e4ec387b3f5f5980aec77c47a7a06dfed7b
[dbg 0.0016s +0.0000s] Sector 1:6 is 08c653128d03ca86c4522433d2f70dd00a70a033549377d117d1761e4293f66b
[inf 0.0016s +0.0000s] Family 2 (top sector 3) is symmetric to family 1, sector 6
[dbg 0.0016s +0.0000s] Fam 2 is {l1^2,-u0b*nm*me*l1+l1^2-2*u0b^2*gammakin*me^2+2*u0b*gammakin*me*np*l1}, sec 3 perm: {0, 1}
[dbg 0.0016s +0.0000s] Fam 1 is {l1^2,-u0b*nm*me*l1+l1^2+2*gammakin*me*np*l1-2*u0b*gammakin*me^2,2*np*(gammakin*me-u0b*gammakin*me)*l1+l1^2}, sec 6 perm: {0, 1}
[dbg 0.0017s +0.0000s]   l1^2 == -u0b*nm*me*l1+l1^2+2*gammakin*me*np*l1-2*u0b*gammakin*me^2
[dbg 0.0017s +0.0000s]   -u0b*nm*me*l1+l1^2-2*u0b^2*gammakin*me^2+2*u0b*gammakin*me*np*l1 == 2*np*(gammakin*me-u0b*gammakin*me)*l1+l1^2
[dbg 0.0017s +0.0000s] > find_momenta_map()
[err 0.0052s +0.0035s *] lincoefficients: u0b*nm*me*l1+$l1^2-l1^2-2*gammakin*me*np*l1+2*u0b*gammakin*me^2 is not linear in $l1

As far as I can see the two topologies cannot be mapped onto each other, but the error message looks somewhat weird. Notice that switching the overall sign in the second propagator of the second family magically removes the error

{{{l1^2, l1^2 + 2*gammakin*l1*me*np - 2*gammakin*me^2*u0b - l1*me*nm*u0b, l1^2 + l1*np*(2*gammakin*me - 2*gammakin*me*u0b)}, {l1^2, -l1^2 + l1*me*nm*u0b - 2*gammakin*l1*me*np*u0b + 2*gammakin*me^2*u0b^2}}, {l1}, {{np^2, 0}, {nm^2, 0}, {nm*np, 2}}}

giving

[dbg 0.0004s +0.0004s] Family size set: set{2, 3}
[dbg 0.0004s +0.0001s] Preparing family 1
[dbg 0.0004s +0.0000s] > feynman_uf()
[dbg 0.0011s +0.0006s] < feynman_uf(+0.0006s)
[dbg 0.0011s +0.0000s] > bracket()
[dbg 0.0011s +0.0000s] < bracket(+0.0000s)
[dbg 0.0011s +0.0000s] Unique coefficient C0 = 1
[dbg 0.0012s +0.0000s] Unique coefficient C1 = -2*u0b^2*gammakin*me^2
[dbg 0.0012s +0.0000s] Unique coefficient C2 = -2*u0b*gammakin*me^2
[dbg 0.0012s +0.0000s] Preparing family 2
[dbg 0.0012s +0.0000s] > feynman_uf()
[dbg 0.0015s +0.0003s] < feynman_uf(+0.0003s)
[dbg 0.0015s +0.0000s] > bracket()
[dbg 0.0016s +0.0000s] < bracket(+0.0000s)
[dbg 0.0016s +0.0000s] Unique coefficient C3 = -1
[dbg 0.0016s +0.0000s] Unique coefficient C4 = 2*u0b^2*gammakin*me^2
[dbg 0.0016s +0.0000s] Total interesting sectors: 5
[dbg 0.0017s +0.0001s] Precomputing canonical polynomials of each family
[dbg 0.0018s +0.0001s] Family 1, sector 7 is c80393f2279ec817cdd5c2935fdae89f7809dc1e9f6ec8a359d63956863f4fc6
[dbg 0.0018s +0.0000s] Family 2, sector 3 is 22dfa9cc8af367179a2dca3b8c9ecf4bffed709ed52c824649cd34867b1fda4d
[dbg 0.0018s +0.0000s] Computing symmetries for families with 3 propagators
[inf 0.0018s +0.0000s] Family 1 (top sector 7) is unique
[dbg 0.0018s +0.0000s] Computing symmetries for families with 2 propagators
[dbg 0.0018s +0.0000s] Sector 1:3 is 2a7de7702bd30fe5d60de94742721f1042e23d6db98c2a34bafe7af42b0aab30
[dbg 0.0019s +0.0000s] Sector 1:5 is 610f43cc6d52a7b74bdae314bc073e4ec387b3f5f5980aec77c47a7a06dfed7b
[dbg 0.0019s +0.0000s] Sector 1:6 is 08c653128d03ca86c4522433d2f70dd00a70a033549377d117d1761e4293f66b
[inf 0.0019s +0.0000s] Family 2 (top sector 3) is unique
[dbg 0.0019s +0.0000s] Canonized 5 sectors out of 5, 0% of hashes wasted
{
 {},
 {}
}
magv commented 1 year ago

These are the issues I meant previously. There is a symmetry in the first example, or at least the code thinks so, it's just that figuring out the momenta map involves solving a system of quadratic equations, which Feynson can only do if they factorize. This might or might not be easy to fix, stay tuned for updates :)

vsht commented 1 year ago

I agree that finding momenta mappings can get ugly for linear propagators: in most cases there is no good way to represent them in terms of some line momenta.

In FeynCalc I try to avoid quadratic equations by simply dropping equations with linear propagators from the system:

https://github.com/FeynCalc/feyncalc/blob/4887e511d7e5e2fee5c11f4276e8f38d337c7060/FeynCalc/LoopIntegrals/FCLoopFindMomentumShifts.m#L151

Since such integrals usually contain also quadratic propagators and the system is overdetermined, this seems to work quite well. Of course, I guess that one could come up with examples where this approach would fail, but I haven't encountered them in real life yet.

vsht commented 1 year ago

Could one perhaps just add an option to skip symmetries that involve solving equations more complicated than linear ones? Or just do this by default?

In this case feynson will recognize less mappings, but at least the topology identification will always go through without any errors. Which is probably what most users care about more rather than having X instead X+1 unique topologies :)

magv commented 1 year ago

So in the example you posted above all the equations are quadratic and unfactorizable. I though of just trying to solve the linear ones, and checking if the solution satisfies the quadratic ones too at the end, but in this example there are no linear ones to fall back to, and if all examples are like this, then my approach would yield no symmetries at all, at which point why even call Feynson?

My hope is that there must be some better way here, I mean these are just quadratic equations, we should be able to solve them.

vsht commented 1 year ago

Sorry, that example was indeed an MWE, here is the actual list of topologies we are getting

{{{k1^2+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},{k1^2,k1^2-2*gkin*k1*meta*n-2*gkin*meta^2*u0b+k1*meta*nb*u0b},{k1^2,-(k1*mqb*nb),k1^2-2*gkin*k1*meta*n*u0b+k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},
{k1^2,-(k1*mqb*nb),k1^2-2*gkin*k1*meta*n-2*gkin*meta^2*u0b+k1*meta*nb*u0b},{k1^2+k1*meta*nb*u0b,k1^2+2*gkin*k1*meta*n,k1^2+2*gkin*k1*meta*n*u0b},{k1^2,k1^2+k1*meta*nb*u0b,k1^2+2*gkin*k1*meta*n},
{k1^2-k1*meta*nb*u0b,k1^2-2*gkin*k1*meta*n+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},{k1^2,k1^2-2*gkin*k1*meta*n+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},
{k1^2,k1^2-k1*meta*nb*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},{k1^2,k1^2-k1*meta*nb*u0b,k1^2-2*gkin*k1*meta*n+2*gkin*k1*meta*n*u0b},{k1^2,k1*mqb*nb,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},
{k1*mqb*nb,k1^2+2*gkin*k1*meta*n-2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},{k1^2,k1^2+2*gkin*k1*meta*n-2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},{k1^2,k1*mqb*nb,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},
{k1*mqb*nb,k1^2+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},{k1^2,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},{k1^2,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},
{k1^2,k1^2+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},{k1^2,k1^2+2*gkin*k1*meta*n*u0b,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},{k1^2,k1*mqb*nb,k1^2+2*gkin*k1*meta*n*u0b-k1*meta*nb*u0b-2*gkin*meta^2*u0b^2},
{k1^2,k1*mqb*nb,k1^2+2*gkin*k1*meta*n-2*gkin*meta^2*u0b-k1*meta*nb*u0b},{k1^2,k1^2-k1*meta*nb*u0b,k1^2-2*gkin*k1*meta*n*u0b}},{k1},{{n^2,0},{nb^2,0},{n*nb,0}}}

With FeynCalc, using the naive method of dropping eikonal propagators from the system of equations I get 5 mappings of the form k1->-k1. (see attachment).

mappings.zip