restart; with(LinearAlgebra): # Define indeterminates QParam := [q1,q2,q3,q4,q5,q6,q7,q8]: PParam := Matrix([[p1],[p2],[p3],[p4],[p5],[p6],[p7],[p8],[p9],[p10],[p11]]): # Special Fourier parameterization and inverse F := Matrix([[1,1,1,1,1,1,1,1,1,1,1], [1,1/3,1/9,-1/9,1/3,-1/9,-1/3,1,1/3,1/9,-1/9], [1,0,-1/3,0,0,0,1/3,1,0,-1/3,0], [1,-1/3,5/21,1/21,-1/3,1/21,-1/7,1,-1/3,5/21,1/21], [1,2/3,1/3,1/3,0,0,0,-1/3,-1/3,-1/3,-1/3], [1,1/3,-1/9,0,-1/3,-1/9,0,-1/3,0,1/9,2/9], [1,0,-1/21,-1/7,2/21,2/21,0,-1/3,-1/21,1/21,-1/21], [1,-1/3,1/15,2/15,1/15,-1/15,0,-1/3,2/15,-1/15,0]]): FI := Matrix([ [1/256,9/128,3/32,21/256,3/64,9/64,21/64,15/64], [3/64,9/32,0,-21/64,3/8,9/16,0,-15/16], [9/128,9/64,-9/16,45/128,9/32,-9/32,-9/32,9/32], [9/64,-9/32,0,9/64,9/16,0,-27/16,9/8], [3/64,9/32,0,-21/64,0,-9/16,3/8,3/16], [9/32,-9/16,0,9/32,0,-9/8,9/4,-9/8], [3/32,-9/16,3/4,-9/32,0,0,0,0], [3/256,27/128,9/32,63/256,-3/64,-9/64,-21/64,-15/64], [3/32,9/16,0,-21/32,-3/8,0,-3/8,3/4], [9/128,9/64,-9/16,45/128,-9/32,9/32,9/32,-9/32], [9/64,-9/32,0,9/64,-9/16,9/8,-9/16,0] ]): # List of polynomial parametrizations P0 := [ b0^2*f0^5+3*b0^2*f1^5+6*b0*b1*f0^4*f1+6*b0*b1*f0*f1^4+12*b0*b1*f1^5+3*b1^2*f0^5+6*b1^2*f0^4*f1+6*b1^2*f0*f1^4+21*b1^2*f1^5, 12*b0^2*f0^4*f1+12*b0^2*f0*f1^4+24*b0^2*f1^5+72*b0*b1*f0^3*f1^2+24*b0*b1*f0^2*f1^3+96*b0*b1*f0*f1^4+96*b0*b1*f1^5+36*b1^2*f0^4*f1+72*b1^2*f0^3*f1^2+24*b1^2*f0^2*f1^3+132*b1^2*f0*f1^4+168*b1^2*f1^5, 18*b0^2*f0^3*f1^2+18*b0^2*f0^2*f1^3+36*b0^2*f1^5+36*b0*b1*f0^3*f1^2+180*b0*b1*f0^2*f1^3+72*b0*b1*f0*f1^4+144*b0*b1*f1^5+90*b1^2*f0^3*f1^2+234*b1^2*f0^2*f1^3+72*b1^2*f0*f1^4+252*b1^2*f1^5, 36*b0^2*f0^3*f1^2+72*b0^2*f0*f1^4+36*b0^2*f1^5+360*b0*b1*f0^2*f1^3+360*b0*b1*f0*f1^4+144*b0*b1*f1^5+108*b1^2*f0^3*f1^2+360*b1^2*f0^2*f1^3+576*b1^2*f0*f1^4+252*b1^2*f1^5, 12*b0^2*f0^3*f1^2+12*b0^2*f0^2*f1^3+24*b0^2*f1^5+24*b0*b1*f0^4*f1+48*b0*b1*f0^3*f1^2+120*b0*b1*f0*f1^4+96*b0*b1*f1^5+24*b1^2*f0^4*f1+84*b1^2*f0^3*f1^2+36*b1^2*f0^2*f1^3+120*b1^2*f0*f1^4+168*b1^2*f1^5, 144*b0^2*f0^2*f1^3+72*b0^2*f0*f1^4+72*b0^2*f1^5+144*b0*b1*f0^3*f1^2+432*b0*b1*f0^2*f1^3+864*b0*b1*f0*f1^4+288*b0*b1*f1^5+144*b1^2*f0^3*f1^2+864*b1^2*f0^2*f1^3+1080*b1^2*f0*f1^4+504*b1^2*f1^5, 24*b0^2*f0^2*f1^3+72*b0^2*f0*f1^4+144*b0*b1*f0^2*f1^3+432*b0*b1*f0*f1^4+216*b1^2*f0^2*f1^3+648*b1^2*f0*f1^4, 3*b0^2*f0^4*f1+3*b0^2*f0*f1^4+6*b0^2*f1^5+6*b0*b1*f0^5+12*b0*b1*f0^4*f1+12*b0*b1*f0*f1^4+42*b0*b1*f1^5+6*b1^2*f0^5+21*b1^2*f0^4*f1+21*b1^2*f0*f1^4+60*b1^2*f1^5, 24*b0^2*f0^3*f1^2+48*b0^2*f0*f1^4+24*b0^2*f1^5+48*b0*b1*f0^4*f1+96*b0*b1*f0^3*f1^2+48*b0*b1*f0^2*f1^3+144*b0*b1*f0*f1^4+240*b0*b1*f1^5+48*b1^2*f0^4*f1+168*b1^2*f0^3*f1^2+48*b1^2*f0^2*f1^3+288*b1^2*f0*f1^4+312*b1^2*f1^5, 36*b0^2*f0^2*f1^3+18*b0^2*f0*f1^4+18*b0^2*f1^5+72*b0*b1*f0^3*f1^2+144*b0*b1*f0^2*f1^3+36*b0*b1*f0*f1^4+180*b0*b1*f1^5+72*b1^2*f0^3*f1^2+252*b1^2*f0^2*f1^3+90*b1^2*f0*f1^4+234*b1^2*f1^5, 36*b0^2*f0^2*f1^3+108*b0^2*f0*f1^4+72*b0*b1*f0^3*f1^2+288*b0*b1*f0^2*f1^3+288*b0*b1*f0*f1^4+216*b0*b1*f1^5+72*b1^2*f0^3*f1^2+396*b1^2*f0^2*f1^3+612*b1^2*f0*f1^4+216*b1^2*f1^5]: # Substitutions based on the model P := P0: P := subs(b0 = 1-3*b1, P): P := subs(f0 = 1-3*f1, P): # Check that the polynomial parametrization lies in the probability simplex suma := 0: for i from 1 to nops(P) do suma := suma + P[i]: od: normal(expand(suma)); # Ideal of Invariants in Fourier coordinates Invariants := Matrix([ q7^2-q6*q8, q6*q7-q5*q8, q4*q7-q3*q8, q3*q7-q2*q8, q6^2-q5*q7, q4*q6-q2*q8, q3*q6-q2*q7, q2*q6-q1*q8, q4*q5-q2*q7, q3*q5-q1*q8, q2*q5-q1*q7, q3^2-q2*q4, q2^2-q1*q4]): # Ideal of Invariants in probability coordinates Fourier := MatrixMatrixMultiply(F,PParam): PInvariants := Invariants: for i from 1 to nops(QParam) do PInvariants := subs(QParam[i] = Fourier[i, 1], PInvariants): od: # Evaluation of Invariants at the polynomial/rational parametrization num := op(PInvariants[1,1..-1])[1]: for j from 1 to num do coordpoly := PInvariants[1, j]: for i from 1 to op(PParam[1..-1,1])[1] do coordpoly := subs(PParam[i, 1] = P0[i], coordpoly): od: coordpoly :=expand(coordpoly): lprint(j,coordpoly); od: