<<AMBREv1.2.m

<<PlanarityTest.m

(* 
   File available at:http://www.us.edu.pl/~gluza/planarity
"Some Remarks on Non-planar Feynman Diagrams",  
K.Bielas,I.Dubovyk,J.Gluza,T.Riemann, Acta Phys.Polon.B44 (2013) 11,2249
  arXiv:1312.5603 [hep-ph]
*)

DESCRIPTION:

function PlanarityTest returns True if diagram is planar and False otherwise

OPTIONS :

PrintResult -> True/False - turns on/off printing of the text message “The Diagram is planar/non-planar” (default value - True).

TestAlgorithm -> 1 or 2 - allows to change testing algorithm  (default value - 1); 1 - for Method I, 2 - for Method II (see below) .

DrawGraph -> True/False - turns on/off drawing of the input diagram  (default value - False). Drawing function is based on Method I.

VertexLegNum -> 4 or 5 - allows to change the maximal degree of vertices for Method I (default value - 4).

RESTRICTIONS:

All momenta incoming.

Vertices with maximally 5 legs. This restriction is valid only for Method I. Due to performance reasons maximal degree of vertices is set up by default to 4, if graph has 5-legs vertices, corresponding message will appear.

Basic scalar integrals, for tensor integrals tensor structer should be stripped away first.

AMBRE should be loaded first.

REMARK:

Drawing option works well with Mathematica 8.0, a bug with Mathematica 9.0 appears when two vertices are connected via more than two lines
(reported to Wolfram).

EXAMPLES:

Method I is based on Laplacian and adjacency matrices and PlanarQ function (from Combinatorica package).

Method II is based on dual variables.

Example 1: 4 loop tadpole a)

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2+k1,m,n2] PR[k2+k3+k4,m,n3] PR[k4,0,n4] PR[k3,0,n5]},{k3,k4,k2,k1},DrawGraph->True];

PlanarityTest[{PR[k1,m,n1] PR[k2+k1,m,n2] PR[k2+k3+k4,m,n3] PR[k4,0,n4] PR[k3,0,n5]},{k3,k4,k2,k1},DrawGraph->True,VertexLegNum->5];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2+k1,m,n2] PR[k2+k3+k4,m,n3] PR[k4,0,n4] PR[k3,0,n5]},{k3,k4,k2,k1},TestAlgorithm->2];

Example 2: 4 loop tadpole b)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2+k4,m,n2] PR[k2,m,n3] PR[k2-k1,m,n4] PR[k3,0,n5] PR[k2-k1+k3,0,n6] PR[k4,0,n7] PR[k2-k1+k4,0,n8]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2+k4,m,n2] PR[k2,m,n3] PR[k2-k1,m,n4] PR[k3,0,n5] PR[k2-k1+k3,0,n6] PR[k4,0,n7] PR[k2-k1+k4,0,n8]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 3: 4 loop tadpole c)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1-k2,0,n2] PR[k4-k1,0,n3] PR[k4-k1-k3,0,n4] PR[k4-k2-k3,0,n5] PR[k4-k2,0,n6] PR[k2,0,n7] PR[k3,0,n8] PR[k4,0,n9]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1-k2,0,n2] PR[k4-k1,0,n3] PR[k4-k1-k3,0,n4] PR[k4-k2-k3,0,n5] PR[k4-k2,0,n6] PR[k2,0,n7] PR[k3,0,n8] PR[k4,0,n9]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 4: 4 loop tadpole d)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k1+k3,0,n5] PR[k1+k4,0,n6] PR[k2+k4,0,n7] PR[k2-k3+k4,0,n8]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k1+k3,0,n5] PR[k1+k4,0,n6] PR[k2+k4,0,n7] PR[k2-k3+k4,0,n8]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 5: 5 loop tadpole

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k2-k5,0,n6] PR[k1-k2-k4,0,n7] PR[k1+k3-k5,0,n8] PR[k1+k3-k4-k5,0,n9]},{k1,k2,k3,k4,k5},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k2-k5,0,n6] PR[k1-k2-k4,0,n7] PR[k1+k3-k5,0,n8] PR[k1+k3-k4-k5,0,n9]},{k1,k2,k3,k4,k5},TestAlgorithm->2];

Example 6: 6 loop tadpole

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k6,0,n6] PR[k3-k5,0,n7] PR[k4-k6,0,n8] PR[k2+k5-k4,0,n9] PR[k1-k3+k4-k6,0,n10] PR[k1-k2+k4-k5-k6,0,n11]},{k1,k2,k3,k4,k5,k6},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k6,0,n6] PR[k3-k5,0,n7] PR[k4-k6,0,n8] PR[k2+k5-k4,0,n9] PR[k1-k3+k4-k6,0,n10] PR[k1-k2+k4-k5-k6,0,n11]},{k1,k2,k3,k4,k5,k6},TestAlgorithm->2];

Example 7: 7 loop tadpole

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k6,0,n6] PR[k7,0,n7] PR[k1+k2+k5,0,n8] PR[k1+k4+k6,0,n9] PR[k6+k3-k2,0,n10] PR[k1+k2+k5+k7-k3,0,n11] PR[k1+k4+k5+k7+k6,0,n12]},{k1,k2,k3,k4,k5,k6,k7},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k4,0,n4] PR[k5,0,n5] PR[k6,0,n6] PR[k7,0,n7] PR[k1+k2+k5,0,n8] PR[k1+k4+k6,0,n9] PR[k6+k3-k2,0,n10] PR[k1+k2+k5+k7-k3,0,n11] PR[k1+k4+k5+k7+k6,0,n12]},{k1,k2,k3,k4,k5,k6,k7},TestAlgorithm->2]//AbsoluteTiming

Example 8: 2 loop sunset diagram

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+k2+p,0,n2] PR[k2,0,n3]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+k2+p,0,n2] PR[k2,0,n3]},{k1,k2},TestAlgorithm->2];

Example 9: 3 loop self self-energy diagram (non-planar)

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2,0,n2] PR[k3,m,n3] PR[k1+p,m,n4] PR[k1-k2+p,0,n5] PR[k3-p,m,n6] PR[k1-k2+k3,0,n7] PR[k2-k3,0,n8]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2,0,n2] PR[k3,m,n3] PR[k1+p,m,n4] PR[k1-k2+p,0,n5] PR[k3-p,m,n6] PR[k1-k2+k3,0,n7] PR[k2-k3,0,n8]},{k1,k2,k3},TestAlgorithm->2];

Example 10: four loop self self-energy diagram a)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+k3,0,n2] PR[k1+k2+k3+k4,0,n3] PR[k3,m1,n4] PR[k2+k4,m3,n5] PR[k2+k3+k4,m2,n6] PR[k4,0,n7] PR[k4+p,0,n8] PR[k2,0,n9] PR[k3+k4,0,n10] PR[k3+k4+p,0,n11]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+k3,0,n2] PR[k1+k2+k3+k4,0,n3] PR[k3,m1,n4] PR[k2+k4,m3,n5] PR[k2+k3+k4,m2,n6] PR[k4,0,n7] PR[k4+p,0,n8] PR[k2,0,n9] PR[k3+k4,0,n10] PR[k3+k4+p,0,n11]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 11: four loop self self-energy diagram b)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k2-k1,0,n3] PR[k2,0,n4] PR[k4,0,n5] PR[k2+k4+p1,0,n6] PR[k3,0,n7] PR[k3-k2-k4,0,n8] PR[k3+p1,0,n9]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k2-k1,0,n3] PR[k2,0,n4] PR[k4,0,n5] PR[k2+k4+p1,0,n6] PR[k3,0,n7] PR[k3-k2-k4,0,n8] PR[k3+p1,0,n9]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 12: 2 loop vertex + one loop tadpoles

Method I

PlanarityTest[{PR[k1,MW,n1] PR[k1-k2,MZ,n2] PR[k2,MW,n3] PR[k1+p1,MT,n4] PR[k1+p1+p2,MW,n5] PR[k2+p1+p2,MW,n6] PR[k3+p1,0,n7] PR[k4,0,n8]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,MW,n1] PR[k1-k2,MZ,n2] PR[k2,MW,n3] PR[k1+p1,MT,n4] PR[k1+p1+p2,MW,n5] PR[k2+p1+p2,MW,n6] PR[k3+p1,0,n7] PR[k4,0,n8]},{k1,k2,k3,k4},TestAlgorithm->2];

PlanarityTest[{PR[k1,MW,n1] PR[k1-k2,MZ,n2] PR[k2,MW,n3] PR[k1+p1,MT,n4] PR[k1+p1+p2,MW,n5] PR[k2+p1+p2,MW,n6] PR[k3+p1,0,n7] PR[k4,0,n8]},{k1,k2,k3,k4},TestAlgorithm->1];

Example 13: 2 loop vertex (non-planar)

Method I

PlanarityTest[{PR[k1,0,n1] PR[p1-k1,0,n2] PR[p1-k1-k2,0,n3] PR[p2+k1+k2,0,n4] PR[p2+k2,0,n5] PR[k2,0,n6]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[p1-k1,0,n2] PR[p1-k1-k2,0,n3] PR[p2+k1+k2,0,n4] PR[p2+k2,0,n5] PR[k2,0,n6]},{k1,k2},TestAlgorithm->2];

Example 14: 2 loop vertex

Method I

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},TestAlgorithm->2];

Example 15: 3 loop vertex a)

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+p2,m,n4] PR[k1-k2-p2,0,n5] PR[k1+p1,m,n6] PR[k3-k1-p1,m,n7] PR[k3-p1-p2,0,n8] PR[k3-k2-p1-p2,m,n9]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+p2,m,n4] PR[k1-k2-p2,0,n5] PR[k1+p1,m,n6] PR[k3-k1-p1,m,n7] PR[k3-p1-p2,0,n8] PR[k3-k2-p1-p2,m,n9]},{k1,k2,k3},TestAlgorithm->2];

Example 16: 3 loop vertex b)

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+p2,m,n4] PR[k1+p1,m,n5] PR[k3-k1-p1,0,n6] PR[k1-k2-p2,m,n7] PR[k3+k2-k1-p1,0,n8] PR[k3+k2-k1+p2,m,n9]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+p2,m,n4] PR[k1+p1,m,n5] PR[k3-k1-p1,0,n6] PR[k1-k2-p2,m,n7] PR[k3+k2-k1-p1,0,n8] PR[k3+k2-k1+p2,m,n9]},{k1,k2,k3},TestAlgorithm->2];

Example 17: 3 loop vertex c)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k3+p2,0,n3] PR[k2+k3+p2,0,n4] PR[k1+k2,0,n5] PR[k1+k2+k3+p1+p2,0,n6] PR[k1+k2+k3,0,n7] PR[k2,0,n8] PR[k3,0,n9]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k3+p2,0,n3] PR[k2+k3+p2,0,n4] PR[k1+k2,0,n5] PR[k1+k2+k3+p1+p2,0,n6] PR[k1+k2+k3,0,n7] PR[k2,0,n8] PR[k3,0,n9]},{k1,k2,k3},TestAlgorithm->2];

Example 18:  3 loop vertex d)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1-p2,0,n4] PR[k1+p1,0,n5] PR[k1+k2-k3+p1,0,n6] PR[k3-p1-p2,0,n7]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1-p2,0,n4] PR[k1+p1,0,n5] PR[k1+k2-k3+p1,0,n6] PR[k3-p1-p2,0,n7]},{k1,k2,k3},TestAlgorithm->2];

Example 19:  3 loop vertex e)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k2-p1,0,n4] PR[k2-p1-p2,0,n5] PR[k1+k2+k3,0,n6] PR[k1+k2-p1-p2,0,n7]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k2-p1,0,n4] PR[k2-p1-p2,0,n5] PR[k1+k2+k3,0,n6] PR[k1+k2-p1-p2,0,n7]},{k1,k2,k3},TestAlgorithm->2];

Example 20:  3 loop vertex f)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1-p2,0,n4] PR[k1+p1-k3,0,n5] PR[k1+k2+p1,0,n6] PR[k1+k2-p2,0,n7]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1-p2,0,n4] PR[k1+p1-k3,0,n5] PR[k1+k2+p1,0,n6] PR[k1+k2-p2,0,n7]},{k1,k2,k3},TestAlgorithm->2];

Example 21:  3 loop vertex g)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p1,0,n4] PR[k3-k1+p2,0,n5] PR[k1+k2-k3+p1,0,n6]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p1,0,n4] PR[k3-k1+p2,0,n5] PR[k1+k2-k3+p1,0,n6]},{k1,k2,k3},TestAlgorithm->2];

Example 22:  3 loop vertex h)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1+k3,0,n4] PR[k2-k1+p1,0,n5] PR[k2-k1-k3-p2,0,n6]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k1+k3,0,n4] PR[k2-k1+p1,0,n5] PR[k2-k1-k3-p2,0,n6]},{k1,k2,k3},TestAlgorithm->2];

Example 23: 4 loop vertex

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k1+k2+p1,0,n3] PR[k1+k2+k3+p1,0,n4] PR[k1+k2+k3+p1+p2,0,n5] PR[k1+k2+k3+k4+p1+p2,0,n6] PR[k1+k2+k3+k4,0,n7] PR[k2+k3+k4,0,n8] PR[k2+k4,0,n9] PR[k2,0,n10] PR[k3,0,n11] PR[k4,0,n12]},{k1,k2,k3,k4},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k1+k2+p1,0,n3] PR[k1+k2+k3+p1,0,n4] PR[k1+k2+k3+p1+p2,0,n5] PR[k1+k2+k3+k4+p1+p2,0,n6] PR[k1+k2+k3+k4,0,n7] PR[k2+k3+k4,0,n8] PR[k2+k4,0,n9] PR[k2,0,n10] PR[k3,0,n11] PR[k4,0,n12]},{k1,k2,k3,k4},TestAlgorithm->2];

Example 24: double box (non-planar)

Method I

PlanarityTest[{PR[k1+k2+p1+p2+p3,0,n1] PR[k1+k2,0,n2] PR[k1,0,n3] PR[k1+p1,0,n4] PR[k1+p1+p2,0,n5] PR[k2+p3,0,n6] PR[k2,0,n7]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1+k2+p1+p2+p3,0,n1] PR[k1+k2,0,n2] PR[k1,0,n3] PR[k1+p1,0,n4] PR[k1+p1+p2,0,n5] PR[k2+p3,0,n6] PR[k2,0,n7]},{k1,k2},TestAlgorithm->2];

Example 25: double box

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k1+p1+p2,0,n3] PR[-k1+k2,0,n4] PR[k2,0,n5] PR[k2+p1+p2,0,n6] PR[k2-p3,0,n7]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1+p1,0,n2] PR[k1+p1+p2,0,n3] PR[-k1+k2,0,n4] PR[k2,0,n5] PR[k2+p1+p2,0,n6] PR[k2-p3,0,n7]},{k1,k2},TestAlgorithm->2];

Example 26: pentagon

Method I

PlanarityTest[{PR[p1+k1,0,n1] PR[p1+p5+k1,m,n2] PR[p1+p5+p4+k1,m,n3] PR[p1+p5+p4+p3+k1,0,n4] PR[k1,m,n5]},{k1},DrawGraph->True];

Method II

PlanarityTest[{PR[p1+k1,0,n1] PR[p1+p5+k1,m,n2] PR[p1+p5+p4+k1,m,n3] PR[p1+p5+p4+p3+k1,0,n4] PR[k1,m,n5]},{k1},TestAlgorithm->2];

Example 27: 2 loop pentabox

Method I

PlanarityTest[{PR[k1,0,n1] PR[k1-k2,0,n2] PR[k1+p1+p2,0,n3] PR[k1-p4-p5,0,n4] PR[k1-p5,0,n5] PR[k2,0,n6] PR[k2+p1,0,n7] PR[k2+p1+p2,0,n8]},{k2,k1},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1-k2,0,n2] PR[k1+p1+p2,0,n3] PR[k1-p4-p5,0,n4] PR[k1-p5,0,n5] PR[k2,0,n6] PR[k2+p1,0,n7] PR[k2+p1+p2,0,n8]},{k2,k1},TestAlgorithm->2];

Example 28: product of diagrams

Method I

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},TestAlgorithm->2];

Example 29: product of diagrams

Method I

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,0 W,n1] PR[k2,0,n2] PR[k1-p2,0,n3] PR[p1+p2-k1,0,n4] PR[p1+p2-k2,0,n5]},{k1,k2},TestAlgorithm->2];

Example 30: one loop vertex with 2 loop tadpole attached

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p2,0,n4] PR[k1+k2,0,n5] PR[k3+p1,0,n6]},{k1,k2,k3},DrawGraph->True];

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p2,0,n4] PR[k1+k2,0,n5] PR[k3+p1,0,n6]},{k1,k2,k3},DrawGraph->True,VertexLegNum->5];

PlanarityTest[{PR[k1,0,n1] PR[k1,0,n11] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p2,0,n4] PR[k1+k2,0,n5] PR[k3+p1,0,n6]},{k1,k2,k3},DrawGraph->True,VertexLegNum->5];

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k3,0,n3] PR[k3-p2,0,n4] PR[k1+k2,0,n5] PR[k3+p1,0,n6]},{k1,k2,k3},TestAlgorithm->2];

Example 31: 2 loop vertex with a bubble

Method I

PlanarityTest[{PR[k1,m,n1] PR[p1+k1,0,n2] PR[k2,m,n3] PR[k2-k1-p1,m,n4] PR[k1+p1+p2,m,n5]},{k1,k2},DrawGraph->True];

PlanarityTest[{PR[k1,m,n1] PR[p1+k1,0,n2]PR[p1+k1,0,n21] PR[k2,m,n3] PR[k2-k1-p1,m,n4] PR[k1+p1+p2,m,n5]},{k1,k2},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[p1+k1,0,n2] PR[k2,m,n3] PR[k2-k1-p1,m,n4] PR[k1+p1,0,n5] PR[k1+p1+p2,m,n6]},{k1,k2},TestAlgorithm->2];

Example 32: 3 loop vertex with 2 loop self-energy insertion

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+k3-k1,m,n4] PR[k1+p1,m,n5] PR[k1-p2,0,n6]},{k1,k2,k3},DrawGraph->True];

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+k3-k1,m,n4] PR[k1+p1,m,n5] PR[k1-p2,0,n6]},{k1,k2,k3},DrawGraph->True,VertexLegNum->5];

PlanarityTest[{PR[k1,m,n1] PR[k1,m,n12] PR[k2,m,n2] PR[k3,m,n3] PR[k2+k3-k1,m,n4] PR[k1+p1,m,n5] PR[k1-p2,0,n6]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k3,m,n3] PR[k2+k3-k1,m,n4] PR[k1+p1,m,n5] PR[k1-p2,0,n6]},{k1,k2,k3},TestAlgorithm->2];

Example 33: vertex + bubbles a)

Method I

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k2-k1-p1,m,n3] PR[k3,m,n4] PR[k3-k1-p1,m,n5] PR[k1+p1,0,n6] PR[k1+p1+p2,m,n7]},{k1,k2,k3},DrawGraph->True];

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k2-k1-p1,m,n3] PR[k3,m,n4] PR[k3-k1-p1,m,n5] PR[k1+p1,0,n6] PR[k1+p1,0,n61] PR[k1+p1+p2,m,n7]},{k1,k2,k3},DrawGraph->True];

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k2-k1-p1,m,n3] PR[k3,m,n4] PR[k3-k1-p1,m,n5] PR[k1+p1,0,n6] PR[k1+p1,0,n61] PR[k1+p1,0,n62]PR[k1+p1+p2,m,n7]},{k1,k2,k3},DrawGraph->True];

Method II

PlanarityTest[{PR[k1,m,n1] PR[k2,m,n2] PR[k2-k1-p1,m,n3] PR[k3,m,n4] PR[k3-k1-p1,m,n5] PR[k1+p1,0,n6] PR[k1+p1,0,n61] PR[k1+p1,0,n62]PR[k1+p1+p2,m,n7]},{k1,k2,k3},TestAlgorithm->2];

Example 34: vertex + bubbles b)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7]  PR[k1-p1,0,n8] PR[k1-p1-p2,0,n9]},{k1,k2,k3,k4},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1] PR[k1,0,n11] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7]  PR[k1-p1,0,n8] PR[k1-p1-p2,0,n9]},{k1,k2,k3,k4},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1] PR[k1,0,n11] PR[k1,0,n12] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7]  PR[k1-p1,0,n8] PR[k1-p1-p2,0,n9]},{k1,k2,k3,k4},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1] PR[k1,0,n11] PR[k1,0,n12] PR[k1,0,n13] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7]  PR[k1-p1,0,n8] PR[k1-p1-p2,0,n9]},{k1,k2,k3,k4},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k1,0,n11] PR[k1,0,n12] PR[k1,0,n13] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7]  PR[k1-p1,0,n8] PR[k1-p1-p2,0,n9]},{k1,k2,k3,k4},TestAlgorithm->2]//AbsoluteTiming

Example 35: vertex + bubbles c)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7] PR[k5,0,n8] PR[k5+k1,0,n9] PR[k1-p1,0,n10] PR[k1-p1-p2,0,n11]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1]PR[k1,0,n11] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7] PR[k5,0,n8] PR[k5+k1,0,n9] PR[k1-p1,0,n10] PR[k1-p1-p2,0,n11]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1]PR[k1,0,n11]PR[k1,0,n12] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7] PR[k5,0,n8] PR[k5+k1,0,n9] PR[k1-p1,0,n10] PR[k1-p1-p2,0,n11]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

PlanarityTest[{PR[k1,0,n1]PR[k1,0,n11]PR[k1,0,n12]PR[k1,0,n13] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7] PR[k5,0,n8] PR[k5+k1,0,n9] PR[k1-p1,0,n10] PR[k1-p1-p2,0,n11]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1]PR[k1,0,n11]PR[k1,0,n12]PR[k1,0,n13] PR[k2,0,n2] PR[k2-k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k1,0,n7] PR[k5,0,n8] PR[k5+k1,0,n9] PR[k1-p1,0,n10] PR[k1-p1-p2,0,n11]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 36: vertex + a)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k3,0,n7] PR[k1+k3-k4,0,n8] PR[k5,0,n9] PR[k5+k1,0,n10] PR[k1-p1,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k4,0,n6] PR[k4-k3,0,n7] PR[k1+k3-k4,0,n8] PR[k5,0,n9] PR[k5+k1,0,n10] PR[k1-p1,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 37: vertex + b)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k3+k2,0,n5] PR[k1+k3+k2,0,n6] PR[k4,0,n7] PR[k1-k4,0,n8] PR[k5,0,n9] PR[k5-k4,0,n10] PR[k1-k4+k5,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k3+k2,0,n5] PR[k1+k3+k2,0,n6] PR[k4,0,n7] PR[k1-k4,0,n8] PR[k5,0,n9] PR[k5-k4,0,n10] PR[k1-k4+k5,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 38: vertex + c)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[-k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k1+k3-k4,0,n6] PR[k4,0,n7] PR[k4-k5,0,n8] PR[k5,0,n9] PR[k4-k3,0,n10] PR[k1-p2,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[-k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k1+k3-k4,0,n6] PR[k4,0,n7] PR[k4-k5,0,n8] PR[k5,0,n9] PR[k4-k3,0,n10] PR[k1-p2,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 39: vertex + d)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[-k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k1+k3+k4,0,n6] PR[k4,0,n7] PR[k3+k5,0,n8] PR[k5,0,n9] PR[k3+k4+k5,0,n10] PR[k1+k3+k4+k5,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[-k2+k1,0,n3] PR[k3,0,n4] PR[k3+k1,0,n5] PR[k1+k3+k4,0,n6] PR[k4,0,n7] PR[k3+k5,0,n8] PR[k5,0,n9] PR[k3+k4+k5,0,n10] PR[k1+k3+k4+k5,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 40: vertex + e)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k1+k2+k3+k4,0,n6] PR[k4,0,n7] PR[k1+k2+k3+k4+k5,0,n8] PR[k5,0,n9] PR[k1+k3,0,n10] PR[k1-p2,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k1+k2+k3+k4,0,n6] PR[k4,0,n7] PR[k1+k2+k3+k4+k5,0,n8] PR[k5,0,n9] PR[k1+k3,0,n10] PR[k1-p2,0,n11] PR[k1-p1-p2,0,n12]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 41: vertex + f)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2-k3+k1,0,n5] PR[k3+k4,0,n6] PR[k4,0,n7] PR[k3+k4+k5,0,n8] PR[k5,0,n9] PR[k4+k5,0,n10] PR[k3-k2,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2-k3+k1,0,n5] PR[k3+k4,0,n6] PR[k4,0,n7] PR[k3+k4+k5,0,n8] PR[k5,0,n9] PR[k4+k5,0,n10] PR[k3-k2,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 42: vertex + g)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k3+k2,0,n6] PR[k4,0,n7] PR[k3+k4+k2,0,n8] PR[k5,0,n9] PR[k1+k2+k4+k3,0,n10] PR[k5-k4,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k3+k2,0,n6] PR[k4,0,n7] PR[k3+k4+k2,0,n8] PR[k5,0,n9] PR[k1+k2+k4+k3,0,n10] PR[k5-k4,0,n11] PR[k1-p2,0,n12] PR[k1-p1-p2,0,n13]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 43: vertex + h)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k4+k2,0,n6] PR[k4,0,n7] PR[-k5+k4+k2,0,n8] PR[k5,0,n9] PR[k1+k2-k5+k3,0,n10] PR[k1+k2+k3+k4-k5,0,n11] PR[k2+k3+k4-k5,0,n12] PR[k1-p2,0,n13] PR[k1-p1-p2,0,n14]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k4+k2,0,n6] PR[k4,0,n7] PR[-k5+k4+k2,0,n8] PR[k5,0,n9] PR[k1+k2-k5+k3,0,n10] PR[k1+k2+k3+k4-k5,0,n11] PR[k2+k3+k4-k5,0,n12] PR[k1-p2,0,n13] PR[k1-p1-p2,0,n14]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming

Example 44: vertex + k)

Method I

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k4-k2,0,n6] PR[k4,0,n7] PR[k1+k4+k3,0,n8] PR[k5,0,n9] PR[k1+k5+k3,0,n10] PR[-k4+k5,0,n11] PR[k1+k5,0,n12] PR[k1-p2,0,n13] PR[k1-p1-p2,0,n14]},{k1,k2,k3,k4,k5},DrawGraph->True]//AbsoluteTiming

Method II

PlanarityTest[{PR[k1,0,n1] PR[k2,0,n2] PR[k2+k1,0,n3] PR[k3,0,n4] PR[k2+k3+k1,0,n5] PR[k4-k2,0,n6] PR[k4,0,n7] PR[k1+k4+k3,0,n8] PR[k5,0,n9] PR[k1+k5+k3,0,n10] PR[-k4+k5,0,n11] PR[k1+k5,0,n12] PR[k1-p2,0,n13] PR[k1-p1-p2,0,n14]},{k1,k2,k3,k4,k5},TestAlgorithm->2]//AbsoluteTiming