//This is the ideal Fourier invariants. ring rQ = 0,(q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20),dp; ideal Invariants = q15*q19-q14*q20, q10*q19-q9*q20, q4*q19-q3*q20, q15*q18-q13*q20, q14*q18-q13*q19, q10*q18-q8*q20, q9*q18-q8*q19, q4*q18-q2*q20, q15*q17-q12*q19, q10*q17-q7*q18, q5*q17-q2*q19, q5*q17-q3*q18, q15*q16-q11*q20, q14*q16-q11*q19, q13*q16-q11*q18, q13*q16-q12*q17, q10*q16-q6*q20, q9*q16-q6*q19, q9*q16-q7*q17, q8*q16-q6*q18, q5*q16-q4*q17, q4*q16-q1*q20, q3*q16-q1*q19, q2*q16-q1*q18, q10*q14-q9*q15, q4*q14-q3*q15, q10*q13-q8*q15, q9*q13-q8*q14, q3*q13-q2*q14, q9*q12-q7*q13, q5*q12-q2*q15, q5*q12-q4*q13, q10*q11-q7*q12, q10*q11-q6*q15, q9*q11-q6*q14, q8*q11-q6*q13, q5*q11-q3*q12, q4*q11-q1*q15, q3*q11-q1*q14, q2*q11-q1*q13, q4*q8-q2*q10, q3*q8-q2*q9, q5*q7-q4*q9, q5*q7-q3*q10, q5*q6-q2*q7, q4*q6-q1*q10, q3*q6-q1*q9, q2*q6-q1*q8, q16*q18*q19-q17^2*q20, q12^2*q14-q11*q13*q15, q7^2*q8-q6*q9*q10, q2*q3*q4-q1*q5^2; // This is the inverse of the Fourier transform. matrix ptoq[20][20] = 1/64,3/64,3/64,3/64,3/32,3/64,3/32,1/64,3/64,3/64,3/64,3/32,3/64,1/64,3/64,3/64,3/32,3/64,3/64,1/64, 3/64,9/64,-3/64,-3/64,-3/32,9/64,-3/32,3/64,-3/64,-3/64,3/64,3/32,3/64,-3/64,-9/64,3/64,3/32,3/64,-9/64,-3/64, 3/64,-3/64,9/64,-3/64,-3/32,3/64,3/32,-3/64,3/64,-9/64,9/64,-3/32,-3/64,3/64,-3/64,3/64,3/32,-9/64,3/64,-3/64, 3/64,-3/64,-3/64,9/64,-3/32,3/64,3/32,-3/64,-9/64,3/64,3/64,3/32,-9/64,-3/64,3/64,9/64,-3/32,-3/64,-3/64,3/64, 3/64,9/64,-3/64,-3/64,-3/32,9/64,-3/32,3/64,-3/64,-3/64,-3/64,-3/32,-3/64,3/64,9/64,-3/64,-3/32,-3/64,9/64,3/64, 3/32,-3/32,-3/32,-3/32,3/16,3/32,-3/16,-3/32,3/32,3/32,3/32,-3/16,3/32,-3/32,3/32,-3/32,3/16,-3/32,-3/32,3/32, 3/32,-3/32,-3/32,-3/32,3/16,3/32,-3/16,-3/32,3/32,3/32,-3/32,3/16,-3/32,3/32,-3/32,3/32,-3/16,3/32,3/32,-3/32, 3/64,-3/64,9/64,-3/64,-3/32,-3/64,-3/32,3/64,-3/64,9/64,9/64,-3/32,-3/64,3/64,-3/64,-3/64,-3/32,9/64,-3/64,3/64, 3/32,-3/32,-3/32,-3/32,3/16,-3/32,3/16,3/32,-3/32,-3/32,3/32,-3/16,3/32,-3/32,3/32,3/32,-3/16,3/32,3/32,-3/32, 3/64,-3/64,-3/64,9/64,-3/32,-3/64,-3/32,3/64,9/64,-3/64,-3/64,-3/32,9/64,3/64,-3/64,9/64,-3/32,-3/64,-3/64,3/64, 1/64,3/64,3/64,3/64,3/32,3/64,3/32,1/64,3/64,3/64,-3/64,-3/32,-3/64,-1/64,-3/64,-3/64,-3/32,-3/64,-3/64,-1/64, 3/64,-3/64,-3/64,9/64,-3/32,3/64,3/32,-3/64,-9/64,3/64,-3/64,-3/32,9/64,3/64,-3/64,-9/64,3/32,3/64,3/64,-3/64, 3/64,-3/64,9/64,-3/64,-3/32,3/64,3/32,-3/64,3/64,-9/64,-9/64,3/32,3/64,-3/64,3/64,-3/64,-3/32,9/64,-3/64,3/64, 3/64,-3/64,-3/64,9/64,-3/32,-3/64,-3/32,3/64,9/64,-3/64,3/64,3/32,-9/64,-3/64,3/64,-9/64,3/32,3/64,3/64,-3/64, 3/32,-3/32,-3/32,-3/32,3/16,-3/32,3/16,3/32,-3/32,-3/32,-3/32,3/16,-3/32,3/32,-3/32,-3/32,3/16,-3/32,-3/32,3/32, 3/64,-3/64,9/64,-3/64,-3/32,-3/64,-3/32,3/64,-3/64,9/64,-9/64,3/32,3/64,-3/64,3/64,3/64,3/32,-9/64,3/64,-3/64, 1/64,3/64,3/64,3/64,3/32,-3/64,-3/32,-1/64,-3/64,-3/64,3/64,3/32,3/64,1/64,3/64,-3/64,-3/32,-3/64,-3/64,-1/64, 3/64,9/64,-3/64,-3/64,-3/32,-9/64,3/32,-3/64,3/64,3/64,3/64,3/32,3/64,-3/64,-9/64,-3/64,-3/32,-3/64,9/64,3/64, 3/64,9/64,-3/64,-3/64,-3/32,-9/64,3/32,-3/64,3/64,3/64,-3/64,-3/32,-3/64,3/64,9/64,3/64,3/32,3/64,-9/64,-3/64, 1/64,3/64,3/64,3/64,3/32,-3/64,-3/32,-1/64,-3/64,-3/64,-3/64,-3/32,-3/64,-1/64,-3/64,3/64,3/32,3/64,3/64,1/64; // This is the ring of probability distributions. ring rP = 0,(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20),dp; //This is the Fourier transform. matrix qtop[20][20] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,-1/3,-1/3,1,-1/3,-1/3,-1/3,-1/3,-1/3,1,-1/3,-1/3,-1/3,-1/3,-1/3,1,1,1,1, 1,-1/3,1,-1/3,-1/3,-1/3,-1/3,1,-1/3,-1/3,1,-1/3,1,-1/3,-1/3,1,1,-1/3,-1/3,1, 1,-1/3,-1/3,1,-1/3,-1/3,-1/3,-1/3,-1/3,1,1,1,-1/3,1,-1/3,-1/3,1,-1/3,-1/3,1, 1,-1/3,-1/3,-1/3,-1/3,1/3,1/3,-1/3,1/3,-1/3,1,-1/3,-1/3,-1/3,1/3,-1/3,1,-1/3,-1/3,1, 1,1,1/3,1/3,1,1/3,1/3,-1/3,-1/3,-1/3,1,1/3,1/3,-1/3,-1/3,-1/3,-1,-1,-1,-1, 1,-1/3,1/3,1/3,-1/3,-1/3,-1/3,-1/3,1/3,-1/3,1,1/3,1/3,-1/3,1/3,-1/3,-1,1/3,1/3,-1, 1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,1,-1,-1,-1,-1, 1,-1/3,1/3,-1,-1/3,1/3,1/3,-1/3,-1/3,1,1,-1,1/3,1,-1/3,-1/3,-1,1/3,1/3,-1, 1,-1/3,-1,1/3,-1/3,1/3,1/3,1,-1/3,-1/3,1,1/3,-1,-1/3,-1/3,1,-1,1/3,1/3,-1, 1,1/3,1,1/3,-1/3,1/3,-1/3,1,1/3,-1/3,-1,-1/3,-1,1/3,-1/3,-1,1,1/3,-1/3,-1, 1,1/3,-1/3,1/3,-1/3,-1/3,1/3,-1/3,-1/3,-1/3,-1,-1/3,1/3,1/3,1/3,1/3,1,1/3,-1/3,-1, 1,1/3,-1/3,-1,-1/3,1/3,-1/3,-1/3,1/3,1,-1,1,1/3,-1,-1/3,1/3,1,1/3,-1/3,-1, 1,-1,1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,1,-1, 1,-1,-1/3,1/3,1,1/3,-1/3,-1/3,1/3,-1/3,-1,-1/3,1/3,1/3,-1/3,1/3,1,-1,1,-1, 1,1/3,1/3,1,-1/3,-1/3,1/3,-1/3,1/3,1,-1,-1,-1/3,-1,-1/3,1/3,-1,-1/3,1/3,1, 1,1/3,1/3,-1/3,-1/3,1/3,-1/3,-1/3,-1/3,-1/3,-1,1/3,-1/3,1/3,1/3,1/3,-1,-1/3,1/3,1, 1,1/3,-1,-1/3,-1/3,-1/3,1/3,1,1/3,-1/3,-1,1/3,1,1/3,-1/3,-1,-1,-1/3,1/3,1, 1,-1,1/3,-1/3,1,-1/3,1/3,-1/3,1/3,-1/3,-1,1/3,-1/3,1/3,-1/3,1/3,-1,1,-1,1, 1,-1,-1,1,1,1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1; ideal Fourier = qtop*transpose(maxideal(1)); // This is the list of polynomial invariants. map F = rQ, Fourier; ideal PInvariants = F(Invariants); // This is the polynomial parametrization. ring r = 0,(b0,b1,b2,b3,e0,e1,e2,e3),dp; ideal P = b0^2*e0^4+b0^2*e1^4+b0^2*e2^4+b0^2*e3^4+2*b0*b1*e0^3*e1+2*b0*b1*e0*e1^3+2*b0*b1*e2^3*e3+2*b0*b1*e2*e3^3+2*b0*b2*e0^3*e2+2*b0*b2*e0*e2^3+2*b0*b2*e1^3*e3+2*b0*b2*e1*e3^3+2*b0*b3*e0^3*e3+2*b0*b3*e0*e3^3+2*b0*b3*e1^3*e2+2*b0*b3*e1*e2^3+b1^2*e0^4+b1^2*e1^4+b1^2*e2^4+b1^2*e3^4+2*b1*b2*e0^3*e3+2*b1*b2*e0*e3^3+2*b1*b2*e1^3*e2+2*b1*b2*e1*e2^3+2*b1*b3*e0^3*e2+2*b1*b3*e0*e2^3+2*b1*b3*e1^3*e3+2*b1*b3*e1*e3^3+b2^2*e0^4+b2^2*e1^4+b2^2*e2^4+b2^2*e3^4+2*b2*b3*e0^3*e1+2*b2*b3*e0*e1^3+2*b2*b3*e2^3*e3+2*b2*b3*e2*e3^3+b3^2*e0^4+b3^2*e1^4+b3^2*e2^4+b3^2*e3^4, 3*b0^2*e0^3*e1+3*b0^2*e0*e1^3+3*b0^2*e2^3*e3+3*b0^2*e2*e3^3+12*b0*b1*e0^2*e1^2+12*b0*b1*e2^2*e3^2+6*b0*b2*e0^2*e1*e2+6*b0*b2*e0*e1^2*e3+6*b0*b2*e0*e2^2*e3+6*b0*b2*e1*e2*e3^2+6*b0*b3*e0^2*e1*e3+6*b0*b3*e0*e1^2*e2+6*b0*b3*e0*e2*e3^2+6*b0*b3*e1*e2^2*e3+3*b1^2*e0^3*e1+3*b1^2*e0*e1^3+3*b1^2*e2^3*e3+3*b1^2*e2*e3^3+6*b1*b2*e0^2*e1*e3+6*b1*b2*e0*e1^2*e2+6*b1*b2*e0*e2*e3^2+6*b1*b2*e1*e2^2*e3+6*b1*b3*e0^2*e1*e2+6*b1*b3*e0*e1^2*e3+6*b1*b3*e0*e2^2*e3+6*b1*b3*e1*e2*e3^2+3*b2^2*e0^3*e1+3*b2^2*e0*e1^3+3*b2^2*e2^3*e3+3*b2^2*e2*e3^3+12*b2*b3*e0^2*e1^2+12*b2*b3*e2^2*e3^2+3*b3^2*e0^3*e1+3*b3^2*e0*e1^3+3*b3^2*e2^3*e3+3*b3^2*e2*e3^3, 3*b0^2*e0^3*e2+3*b0^2*e0*e2^3+3*b0^2*e1^3*e3+3*b0^2*e1*e3^3+6*b0*b1*e0^2*e1*e2+6*b0*b1*e0*e1^2*e3+6*b0*b1*e0*e2^2*e3+6*b0*b1*e1*e2*e3^2+12*b0*b2*e0^2*e2^2+12*b0*b2*e1^2*e3^2+6*b0*b3*e0^2*e2*e3+6*b0*b3*e0*e1*e2^2+6*b0*b3*e0*e1*e3^2+6*b0*b3*e1^2*e2*e3+3*b1^2*e0^3*e2+3*b1^2*e0*e2^3+3*b1^2*e1^3*e3+3*b1^2*e1*e3^3+6*b1*b2*e0^2*e2*e3+6*b1*b2*e0*e1*e2^2+6*b1*b2*e0*e1*e3^2+6*b1*b2*e1^2*e2*e3+12*b1*b3*e0^2*e2^2+12*b1*b3*e1^2*e3^2+3*b2^2*e0^3*e2+3*b2^2*e0*e2^3+3*b2^2*e1^3*e3+3*b2^2*e1*e3^3+6*b2*b3*e0^2*e1*e2+6*b2*b3*e0*e1^2*e3+6*b2*b3*e0*e2^2*e3+6*b2*b3*e1*e2*e3^2+3*b3^2*e0^3*e2+3*b3^2*e0*e2^3+3*b3^2*e1^3*e3+3*b3^2*e1*e3^3, 3*b0^2*e0^3*e3+3*b0^2*e0*e3^3+3*b0^2*e1^3*e2+3*b0^2*e1*e2^3+6*b0*b1*e0^2*e1*e3+6*b0*b1*e0*e1^2*e2+6*b0*b1*e0*e2*e3^2+6*b0*b1*e1*e2^2*e3+6*b0*b2*e0^2*e2*e3+6*b0*b2*e0*e1*e2^2+6*b0*b2*e0*e1*e3^2+6*b0*b2*e1^2*e2*e3+12*b0*b3*e0^2*e3^2+12*b0*b3*e1^2*e2^2+3*b1^2*e0^3*e3+3*b1^2*e0*e3^3+3*b1^2*e1^3*e2+3*b1^2*e1*e2^3+12*b1*b2*e0^2*e3^2+12*b1*b2*e1^2*e2^2+6*b1*b3*e0^2*e2*e3+6*b1*b3*e0*e1*e2^2+6*b1*b3*e0*e1*e3^2+6*b1*b3*e1^2*e2*e3+3*b2^2*e0^3*e3+3*b2^2*e0*e3^3+3*b2^2*e1^3*e2+3*b2^2*e1*e2^3+6*b2*b3*e0^2*e1*e3+6*b2*b3*e0*e1^2*e2+6*b2*b3*e0*e2*e3^2+6*b2*b3*e1*e2^2*e3+3*b3^2*e0^3*e3+3*b3^2*e0*e3^3+3*b3^2*e1^3*e2+3*b3^2*e1*e2^3, 6*b0^2*e0^2*e1^2+6*b0^2*e2^2*e3^2+6*b0*b1*e0^3*e1+6*b0*b1*e0*e1^3+6*b0*b1*e2^3*e3+6*b0*b1*e2*e3^3+6*b0*b2*e0^2*e1*e3+6*b0*b2*e0*e1^2*e2+6*b0*b2*e0*e2*e3^2+6*b0*b2*e1*e2^2*e3+6*b0*b3*e0^2*e1*e2+6*b0*b3*e0*e1^2*e3+6*b0*b3*e0*e2^2*e3+6*b0*b3*e1*e2*e3^2+6*b1^2*e0^2*e1^2+6*b1^2*e2^2*e3^2+6*b1*b2*e0^2*e1*e2+6*b1*b2*e0*e1^2*e3+6*b1*b2*e0*e2^2*e3+6*b1*b2*e1*e2*e3^2+6*b1*b3*e0^2*e1*e3+6*b1*b3*e0*e1^2*e2+6*b1*b3*e0*e2*e3^2+6*b1*b3*e1*e2^2*e3+6*b2^2*e0^2*e1^2+6*b2^2*e2^2*e3^2+6*b2*b3*e0^3*e1+6*b2*b3*e0*e1^3+6*b2*b3*e2^3*e3+6*b2*b3*e2*e3^3+6*b3^2*e0^2*e1^2+6*b3^2*e2^2*e3^2, 6*b0^2*e0^2*e1*e2+6*b0^2*e0*e1^2*e3+6*b0^2*e0*e2^2*e3+6*b0^2*e1*e2*e3^2+12*b0*b1*e0^2*e1*e3+12*b0*b1*e0*e1^2*e2+12*b0*b1*e0*e2*e3^2+12*b0*b1*e1*e2^2*e3+12*b0*b2*e0^2*e2*e3+12*b0*b2*e0*e1*e2^2+12*b0*b2*e0*e1*e3^2+12*b0*b2*e1^2*e2*e3+48*b0*b3*e0*e1*e2*e3+6*b1^2*e0^2*e1*e2+6*b1^2*e0*e1^2*e3+6*b1^2*e0*e2^2*e3+6*b1^2*e1*e2*e3^2+48*b1*b2*e0*e1*e2*e3+12*b1*b3*e0^2*e2*e3+12*b1*b3*e0*e1*e2^2+12*b1*b3*e0*e1*e3^2+12*b1*b3*e1^2*e2*e3+6*b2^2*e0^2*e1*e2+6*b2^2*e0*e1^2*e3+6*b2^2*e0*e2^2*e3+6*b2^2*e1*e2*e3^2+12*b2*b3*e0^2*e1*e3+12*b2*b3*e0*e1^2*e2+12*b2*b3*e0*e2*e3^2+12*b2*b3*e1*e2^2*e3+6*b3^2*e0^2*e1*e2+6*b3^2*e0*e1^2*e3+6*b3^2*e0*e2^2*e3+6*b3^2*e1*e2*e3^2, 6*b0^2*e0^2*e1*e3+6*b0^2*e0*e1^2*e2+6*b0^2*e0*e2*e3^2+6*b0^2*e1*e2^2*e3+12*b0*b1*e0^2*e1*e2+12*b0*b1*e0*e1^2*e3+12*b0*b1*e0*e2^2*e3+12*b0*b1*e1*e2*e3^2+48*b0*b2*e0*e1*e2*e3+12*b0*b3*e0^2*e2*e3+12*b0*b3*e0*e1*e2^2+12*b0*b3*e0*e1*e3^2+12*b0*b3*e1^2*e2*e3+6*b1^2*e0^2*e1*e3+6*b1^2*e0*e1^2*e2+6*b1^2*e0*e2*e3^2+6*b1^2*e1*e2^2*e3+12*b1*b2*e0^2*e2*e3+12*b1*b2*e0*e1*e2^2+12*b1*b2*e0*e1*e3^2+12*b1*b2*e1^2*e2*e3+48*b1*b3*e0*e1*e2*e3+6*b2^2*e0^2*e1*e3+6*b2^2*e0*e1^2*e2+6*b2^2*e0*e2*e3^2+6*b2^2*e1*e2^2*e3+12*b2*b3*e0^2*e1*e2+12*b2*b3*e0*e1^2*e3+12*b2*b3*e0*e2^2*e3+12*b2*b3*e1*e2*e3^2+6*b3^2*e0^2*e1*e3+6*b3^2*e0*e1^2*e2+6*b3^2*e0*e2*e3^2+6*b3^2*e1*e2^2*e3, 6*b0^2*e0^2*e2^2+6*b0^2*e1^2*e3^2+6*b0*b1*e0^2*e2*e3+6*b0*b1*e0*e1*e2^2+6*b0*b1*e0*e1*e3^2+6*b0*b1*e1^2*e2*e3+6*b0*b2*e0^3*e2+6*b0*b2*e0*e2^3+6*b0*b2*e1^3*e3+6*b0*b2*e1*e3^3+6*b0*b3*e0^2*e1*e2+6*b0*b3*e0*e1^2*e3+6*b0*b3*e0*e2^2*e3+6*b0*b3*e1*e2*e3^2+6*b1^2*e0^2*e2^2+6*b1^2*e1^2*e3^2+6*b1*b2*e0^2*e1*e2+6*b1*b2*e0*e1^2*e3+6*b1*b2*e0*e2^2*e3+6*b1*b2*e1*e2*e3^2+6*b1*b3*e0^3*e2+6*b1*b3*e0*e2^3+6*b1*b3*e1^3*e3+6*b1*b3*e1*e3^3+6*b2^2*e0^2*e2^2+6*b2^2*e1^2*e3^2+6*b2*b3*e0^2*e2*e3+6*b2*b3*e0*e1*e2^2+6*b2*b3*e0*e1*e3^2+6*b2*b3*e1^2*e2*e3+6*b3^2*e0^2*e2^2+6*b3^2*e1^2*e3^2, 6*b0^2*e0^2*e2*e3+6*b0^2*e0*e1*e2^2+6*b0^2*e0*e1*e3^2+6*b0^2*e1^2*e2*e3+48*b0*b1*e0*e1*e2*e3+12*b0*b2*e0^2*e1*e2+12*b0*b2*e0*e1^2*e3+12*b0*b2*e0*e2^2*e3+12*b0*b2*e1*e2*e3^2+12*b0*b3*e0^2*e1*e3+12*b0*b3*e0*e1^2*e2+12*b0*b3*e0*e2*e3^2+12*b0*b3*e1*e2^2*e3+6*b1^2*e0^2*e2*e3+6*b1^2*e0*e1*e2^2+6*b1^2*e0*e1*e3^2+6*b1^2*e1^2*e2*e3+12*b1*b2*e0^2*e1*e3+12*b1*b2*e0*e1^2*e2+12*b1*b2*e0*e2*e3^2+12*b1*b2*e1*e2^2*e3+12*b1*b3*e0^2*e1*e2+12*b1*b3*e0*e1^2*e3+12*b1*b3*e0*e2^2*e3+12*b1*b3*e1*e2*e3^2+6*b2^2*e0^2*e2*e3+6*b2^2*e0*e1*e2^2+6*b2^2*e0*e1*e3^2+6*b2^2*e1^2*e2*e3+48*b2*b3*e0*e1*e2*e3+6*b3^2*e0^2*e2*e3+6*b3^2*e0*e1*e2^2+6*b3^2*e0*e1*e3^2+6*b3^2*e1^2*e2*e3, 6*b0^2*e0^2*e3^2+6*b0^2*e1^2*e2^2+6*b0*b1*e0^2*e2*e3+6*b0*b1*e0*e1*e2^2+6*b0*b1*e0*e1*e3^2+6*b0*b1*e1^2*e2*e3+6*b0*b2*e0^2*e1*e3+6*b0*b2*e0*e1^2*e2+6*b0*b2*e0*e2*e3^2+6*b0*b2*e1*e2^2*e3+6*b0*b3*e0^3*e3+6*b0*b3*e0*e3^3+6*b0*b3*e1^3*e2+6*b0*b3*e1*e2^3+6*b1^2*e0^2*e3^2+6*b1^2*e1^2*e2^2+6*b1*b2*e0^3*e3+6*b1*b2*e0*e3^3+6*b1*b2*e1^3*e2+6*b1*b2*e1*e2^3+6*b1*b3*e0^2*e1*e3+6*b1*b3*e0*e1^2*e2+6*b1*b3*e0*e2*e3^2+6*b1*b3*e1*e2^2*e3+6*b2^2*e0^2*e3^2+6*b2^2*e1^2*e2^2+6*b2*b3*e0^2*e2*e3+6*b2*b3*e0*e1*e2^2+6*b2*b3*e0*e1*e3^2+6*b2*b3*e1^2*e2*e3+6*b3^2*e0^2*e3^2+6*b3^2*e1^2*e2^2, b0^2*e0^3*e1+b0^2*e0*e1^3+b0^2*e2^3*e3+b0^2*e2*e3^3+2*b0*b1*e0^4+2*b0*b1*e1^4+2*b0*b1*e2^4+2*b0*b1*e3^4+2*b0*b2*e0^3*e3+2*b0*b2*e0*e3^3+2*b0*b2*e1^3*e2+2*b0*b2*e1*e2^3+2*b0*b3*e0^3*e2+2*b0*b3*e0*e2^3+2*b0*b3*e1^3*e3+2*b0*b3*e1*e3^3+b1^2*e0^3*e1+b1^2*e0*e1^3+b1^2*e2^3*e3+b1^2*e2*e3^3+2*b1*b2*e0^3*e2+2*b1*b2*e0*e2^3+2*b1*b2*e1^3*e3+2*b1*b2*e1*e3^3+2*b1*b3*e0^3*e3+2*b1*b3*e0*e3^3+2*b1*b3*e1^3*e2+2*b1*b3*e1*e2^3+b2^2*e0^3*e1+b2^2*e0*e1^3+b2^2*e2^3*e3+b2^2*e2*e3^3+2*b2*b3*e0^4+2*b2*b3*e1^4+2*b2*b3*e2^4+2*b2*b3*e3^4+b3^2*e0^3*e1+b3^2*e0*e1^3+b3^2*e2^3*e3+b3^2*e2*e3^3, 3*b0^2*e0^2*e1*e3+3*b0^2*e0*e1^2*e2+3*b0^2*e0*e2*e3^2+3*b0^2*e1*e2^2*e3+6*b0*b1*e0^3*e3+6*b0*b1*e0*e3^3+6*b0*b1*e1^3*e2+6*b0*b1*e1*e2^3+12*b0*b2*e0^2*e3^2+12*b0*b2*e1^2*e2^2+6*b0*b3*e0^2*e2*e3+6*b0*b3*e0*e1*e2^2+6*b0*b3*e0*e1*e3^2+6*b0*b3*e1^2*e2*e3+3*b1^2*e0^2*e1*e3+3*b1^2*e0*e1^2*e2+3*b1^2*e0*e2*e3^2+3*b1^2*e1*e2^2*e3+6*b1*b2*e0^2*e2*e3+6*b1*b2*e0*e1*e2^2+6*b1*b2*e0*e1*e3^2+6*b1*b2*e1^2*e2*e3+12*b1*b3*e0^2*e3^2+12*b1*b3*e1^2*e2^2+3*b2^2*e0^2*e1*e3+3*b2^2*e0*e1^2*e2+3*b2^2*e0*e2*e3^2+3*b2^2*e1*e2^2*e3+6*b2*b3*e0^3*e3+6*b2*b3*e0*e3^3+6*b2*b3*e1^3*e2+6*b2*b3*e1*e2^3+3*b3^2*e0^2*e1*e3+3*b3^2*e0*e1^2*e2+3*b3^2*e0*e2*e3^2+3*b3^2*e1*e2^2*e3, 3*b0^2*e0^2*e1*e2+3*b0^2*e0*e1^2*e3+3*b0^2*e0*e2^2*e3+3*b0^2*e1*e2*e3^2+6*b0*b1*e0^3*e2+6*b0*b1*e0*e2^3+6*b0*b1*e1^3*e3+6*b0*b1*e1*e3^3+6*b0*b2*e0^2*e2*e3+6*b0*b2*e0*e1*e2^2+6*b0*b2*e0*e1*e3^2+6*b0*b2*e1^2*e2*e3+12*b0*b3*e0^2*e2^2+12*b0*b3*e1^2*e3^2+3*b1^2*e0^2*e1*e2+3*b1^2*e0*e1^2*e3+3*b1^2*e0*e2^2*e3+3*b1^2*e1*e2*e3^2+12*b1*b2*e0^2*e2^2+12*b1*b2*e1^2*e3^2+6*b1*b3*e0^2*e2*e3+6*b1*b3*e0*e1*e2^2+6*b1*b3*e0*e1*e3^2+6*b1*b3*e1^2*e2*e3+3*b2^2*e0^2*e1*e2+3*b2^2*e0*e1^2*e3+3*b2^2*e0*e2^2*e3+3*b2^2*e1*e2*e3^2+6*b2*b3*e0^3*e2+6*b2*b3*e0*e2^3+6*b2*b3*e1^3*e3+6*b2*b3*e1*e3^3+3*b3^2*e0^2*e1*e2+3*b3^2*e0*e1^2*e3+3*b3^2*e0*e2^2*e3+3*b3^2*e1*e2*e3^2, 3*b0^2*e0^2*e2*e3+3*b0^2*e0*e1*e2^2+3*b0^2*e0*e1*e3^2+3*b0^2*e1^2*e2*e3+12*b0*b1*e0^2*e3^2+12*b0*b1*e1^2*e2^2+6*b0*b2*e0^3*e3+6*b0*b2*e0*e3^3+6*b0*b2*e1^3*e2+6*b0*b2*e1*e2^3+6*b0*b3*e0^2*e1*e3+6*b0*b3*e0*e1^2*e2+6*b0*b3*e0*e2*e3^2+6*b0*b3*e1*e2^2*e3+3*b1^2*e0^2*e2*e3+3*b1^2*e0*e1*e2^2+3*b1^2*e0*e1*e3^2+3*b1^2*e1^2*e2*e3+6*b1*b2*e0^2*e1*e3+6*b1*b2*e0*e1^2*e2+6*b1*b2*e0*e2*e3^2+6*b1*b2*e1*e2^2*e3+6*b1*b3*e0^3*e3+6*b1*b3*e0*e3^3+6*b1*b3*e1^3*e2+6*b1*b3*e1*e2^3+3*b2^2*e0^2*e2*e3+3*b2^2*e0*e1*e2^2+3*b2^2*e0*e1*e3^2+3*b2^2*e1^2*e2*e3+12*b2*b3*e0^2*e3^2+12*b2*b3*e1^2*e2^2+3*b3^2*e0^2*e2*e3+3*b3^2*e0*e1*e2^2+3*b3^2*e0*e1*e3^2+3*b3^2*e1^2*e2*e3, 24*b0^2*e0*e1*e2*e3+12*b0*b1*e0^2*e2*e3+12*b0*b1*e0*e1*e2^2+12*b0*b1*e0*e1*e3^2+12*b0*b1*e1^2*e2*e3+12*b0*b2*e0^2*e1*e3+12*b0*b2*e0*e1^2*e2+12*b0*b2*e0*e2*e3^2+12*b0*b2*e1*e2^2*e3+12*b0*b3*e0^2*e1*e2+12*b0*b3*e0*e1^2*e3+12*b0*b3*e0*e2^2*e3+12*b0*b3*e1*e2*e3^2+24*b1^2*e0*e1*e2*e3+12*b1*b2*e0^2*e1*e2+12*b1*b2*e0*e1^2*e3+12*b1*b2*e0*e2^2*e3+12*b1*b2*e1*e2*e3^2+12*b1*b3*e0^2*e1*e3+12*b1*b3*e0*e1^2*e2+12*b1*b3*e0*e2*e3^2+12*b1*b3*e1*e2^2*e3+24*b2^2*e0*e1*e2*e3+12*b2*b3*e0^2*e2*e3+12*b2*b3*e0*e1*e2^2+12*b2*b3*e0*e1*e3^2+12*b2*b3*e1^2*e2*e3+24*b3^2*e0*e1*e2*e3, 3*b0^2*e0^2*e2*e3+3*b0^2*e0*e1*e2^2+3*b0^2*e0*e1*e3^2+3*b0^2*e1^2*e2*e3+12*b0*b1*e0^2*e2^2+12*b0*b1*e1^2*e3^2+6*b0*b2*e0^2*e1*e2+6*b0*b2*e0*e1^2*e3+6*b0*b2*e0*e2^2*e3+6*b0*b2*e1*e2*e3^2+6*b0*b3*e0^3*e2+6*b0*b3*e0*e2^3+6*b0*b3*e1^3*e3+6*b0*b3*e1*e3^3+3*b1^2*e0^2*e2*e3+3*b1^2*e0*e1*e2^2+3*b1^2*e0*e1*e3^2+3*b1^2*e1^2*e2*e3+6*b1*b2*e0^3*e2+6*b1*b2*e0*e2^3+6*b1*b2*e1^3*e3+6*b1*b2*e1*e3^3+6*b1*b3*e0^2*e1*e2+6*b1*b3*e0*e1^2*e3+6*b1*b3*e0*e2^2*e3+6*b1*b3*e1*e2*e3^2+3*b2^2*e0^2*e2*e3+3*b2^2*e0*e1*e2^2+3*b2^2*e0*e1*e3^2+3*b2^2*e1^2*e2*e3+12*b2*b3*e0^2*e2^2+12*b2*b3*e1^2*e3^2+3*b3^2*e0^2*e2*e3+3*b3^2*e0*e1*e2^2+3*b3^2*e0*e1*e3^2+3*b3^2*e1^2*e2*e3, b0^2*e0^3*e2+b0^2*e0*e2^3+b0^2*e1^3*e3+b0^2*e1*e3^3+2*b0*b1*e0^3*e3+2*b0*b1*e0*e3^3+2*b0*b1*e1^3*e2+2*b0*b1*e1*e2^3+2*b0*b2*e0^4+2*b0*b2*e1^4+2*b0*b2*e2^4+2*b0*b2*e3^4+2*b0*b3*e0^3*e1+2*b0*b3*e0*e1^3+2*b0*b3*e2^3*e3+2*b0*b3*e2*e3^3+b1^2*e0^3*e2+b1^2*e0*e2^3+b1^2*e1^3*e3+b1^2*e1*e3^3+2*b1*b2*e0^3*e1+2*b1*b2*e0*e1^3+2*b1*b2*e2^3*e3+2*b1*b2*e2*e3^3+2*b1*b3*e0^4+2*b1*b3*e1^4+2*b1*b3*e2^4+2*b1*b3*e3^4+b2^2*e0^3*e2+b2^2*e0*e2^3+b2^2*e1^3*e3+b2^2*e1*e3^3+2*b2*b3*e0^3*e3+2*b2*b3*e0*e3^3+2*b2*b3*e1^3*e2+2*b2*b3*e1*e2^3+b3^2*e0^3*e2+b3^2*e0*e2^3+b3^2*e1^3*e3+b3^2*e1*e3^3, 3*b0^2*e0^2*e1*e2+3*b0^2*e0*e1^2*e3+3*b0^2*e0*e2^2*e3+3*b0^2*e1*e2*e3^2+6*b0*b1*e0^2*e1*e3+6*b0*b1*e0*e1^2*e2+6*b0*b1*e0*e2*e3^2+6*b0*b1*e1*e2^2*e3+6*b0*b2*e0^3*e1+6*b0*b2*e0*e1^3+6*b0*b2*e2^3*e3+6*b0*b2*e2*e3^3+12*b0*b3*e0^2*e1^2+12*b0*b3*e2^2*e3^2+3*b1^2*e0^2*e1*e2+3*b1^2*e0*e1^2*e3+3*b1^2*e0*e2^2*e3+3*b1^2*e1*e2*e3^2+12*b1*b2*e0^2*e1^2+12*b1*b2*e2^2*e3^2+6*b1*b3*e0^3*e1+6*b1*b3*e0*e1^3+6*b1*b3*e2^3*e3+6*b1*b3*e2*e3^3+3*b2^2*e0^2*e1*e2+3*b2^2*e0*e1^2*e3+3*b2^2*e0*e2^2*e3+3*b2^2*e1*e2*e3^2+6*b2*b3*e0^2*e1*e3+6*b2*b3*e0*e1^2*e2+6*b2*b3*e0*e2*e3^2+6*b2*b3*e1*e2^2*e3+3*b3^2*e0^2*e1*e2+3*b3^2*e0*e1^2*e3+3*b3^2*e0*e2^2*e3+3*b3^2*e1*e2*e3^2, 3*b0^2*e0^2*e1*e3+3*b0^2*e0*e1^2*e2+3*b0^2*e0*e2*e3^2+3*b0^2*e1*e2^2*e3+6*b0*b1*e0^2*e1*e2+6*b0*b1*e0*e1^2*e3+6*b0*b1*e0*e2^2*e3+6*b0*b1*e1*e2*e3^2+12*b0*b2*e0^2*e1^2+12*b0*b2*e2^2*e3^2+6*b0*b3*e0^3*e1+6*b0*b3*e0*e1^3+6*b0*b3*e2^3*e3+6*b0*b3*e2*e3^3+3*b1^2*e0^2*e1*e3+3*b1^2*e0*e1^2*e2+3*b1^2*e0*e2*e3^2+3*b1^2*e1*e2^2*e3+6*b1*b2*e0^3*e1+6*b1*b2*e0*e1^3+6*b1*b2*e2^3*e3+6*b1*b2*e2*e3^3+12*b1*b3*e0^2*e1^2+12*b1*b3*e2^2*e3^2+3*b2^2*e0^2*e1*e3+3*b2^2*e0*e1^2*e2+3*b2^2*e0*e2*e3^2+3*b2^2*e1*e2^2*e3+6*b2*b3*e0^2*e1*e2+6*b2*b3*e0*e1^2*e3+6*b2*b3*e0*e2^2*e3+6*b2*b3*e1*e2*e3^2+3*b3^2*e0^2*e1*e3+3*b3^2*e0*e1^2*e2+3*b3^2*e0*e2*e3^2+3*b3^2*e1*e2^2*e3, b0^2*e0^3*e3+b0^2*e0*e3^3+b0^2*e1^3*e2+b0^2*e1*e2^3+2*b0*b1*e0^3*e2+2*b0*b1*e0*e2^3+2*b0*b1*e1^3*e3+2*b0*b1*e1*e3^3+2*b0*b2*e0^3*e1+2*b0*b2*e0*e1^3+2*b0*b2*e2^3*e3+2*b0*b2*e2*e3^3+2*b0*b3*e0^4+2*b0*b3*e1^4+2*b0*b3*e2^4+2*b0*b3*e3^4+b1^2*e0^3*e3+b1^2*e0*e3^3+b1^2*e1^3*e2+b1^2*e1*e2^3+2*b1*b2*e0^4+2*b1*b2*e1^4+2*b1*b2*e2^4+2*b1*b2*e3^4+2*b1*b3*e0^3*e1+2*b1*b3*e0*e1^3+2*b1*b3*e2^3*e3+2*b1*b3*e2*e3^3+b2^2*e0^3*e3+b2^2*e0*e3^3+b2^2*e1^3*e2+b2^2*e1*e2^3+2*b2*b3*e0^3*e2+2*b2*b3*e0*e2^3+2*b2*b3*e1^3*e3+2*b2*b3*e1*e3^3+b3^2*e0^3*e3+b3^2*e0*e3^3+b3^2*e1^3*e2+b3^2*e1*e2^3; // This checks that the polynomial parametrization // lies on the probability simplex. // It requires suma.sing. Most likely, you should // change the directory where you saved this file. // If you do have this file, you should uncomment // the following two lines. // < "/home/lgp/singular/suma.sing"; // Suma(Substitute(3,P)); // This checks that the PInvariants vanish at // the polynomial parametrization. map Evaluate = rP, P; // The following command takes a lot of space and time to // finish for larger models. // ideal Z = Evaluate(PInvariants); setring rP; ideal Z; int i; for (i=1; i<= size(PInvariants); i++) { i; Z = PInvariants[i]; setring r; Evaluate(Z); setring rP; }