restart; with(LinearAlgebra): with(Groebner): # Define indeterminates QParam := [q1, q2, q3, q4, q5]: PParam := Matrix([[p1],[p2],[p3],[p4],[p5]]): # Special Fourier parameterization and inverse F := Matrix([ [1,1,1,1,1], [1,-1,1,1,-1], [1,0,-1,0,0], [1,1,1,-1,-1], [1,-1,1,-1,1] ]): FI := Matrix([ [1/8,1/8,1/2,1/8,1/8], [1/4,-1/4,0,1/4,-1/4], [1/8,1/8,-1/2,1/8,1/8], [1/4,1/4,0,-1/4,-1/4], [1/4,-1/4,0,-1/4,1/4] ]): # List of polynomial parametrizations P0 := [ 1/(d0^2-d1^2)*b0^2*d0^3*f0^3+1/(d0^2-d1^2)*b0^2*d0^3*f1^3-1/(d0^2-d1^2)*b0^2*d0^2*d1*f0^2*f1-1/(d0^2-d1^2)*b0^2*d0^2*d1*f0*f1^2+1/(d0^2-d1^2)*b0^2*d0*d1^2*f0^2*f1+1/(d0^2-d1^2)*b0^2*d0*d1^2*f0*f1^2-1/(d0^2-d1^2)*b0^2*d1^3*f0^3-1/(d0^2-d1^2)*b0^2*d1^3*f1^3+2/(d0^2-d1^2)*b0*b1*d0^3*f0^2*f1+2/(d0^2-d1^2)*b0*b1*d0^3*f0*f1^2-2/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^3-2/(d0^2-d1^2)*b0*b1*d0^2*d1*f1^3+2/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^3+2/(d0^2-d1^2)*b0*b1*d0*d1^2*f1^3-2/(d0^2-d1^2)*b0*b1*d1^3*f0^2*f1-2/(d0^2-d1^2)*b0*b1*d1^3*f0*f1^2+1/(d0^2-d1^2)*b1^2*d0^3*f0^3+1/(d0^2-d1^2)*b1^2*d0^3*f1^3-1/(d0^2-d1^2)*b1^2*d0^2*d1*f0^2*f1-1/(d0^2-d1^2)*b1^2*d0^2*d1*f0*f1^2+1/(d0^2-d1^2)*b1^2*d0*d1^2*f0^2*f1+1/(d0^2-d1^2)*b1^2*d0*d1^2*f0*f1^2-1/(d0^2-d1^2)*b1^2*d1^3*f0^3-1/(d0^2-d1^2)*b1^2*d1^3*f1^3, 2/(d0^2-d1^2)*b0^2*d0^3*f0^2*f1+2/(d0^2-d1^2)*b0^2*d0^3*f0*f1^2-2/(d0^2-d1^2)*b0^2*d0^2*d1*f0^2*f1-2/(d0^2-d1^2)*b0^2*d0^2*d1*f0*f1^2+2/(d0^2-d1^2)*b0^2*d0*d1^2*f0^2*f1+2/(d0^2-d1^2)*b0^2*d0*d1^2*f0*f1^2-2/(d0^2-d1^2)*b0^2*d1^3*f0^2*f1-2/(d0^2-d1^2)*b0^2*d1^3*f0*f1^2+4/(d0^2-d1^2)*b0*b1*d0^3*f0^2*f1+4/(d0^2-d1^2)*b0*b1*d0^3*f0*f1^2-4/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^2*f1-4/(d0^2-d1^2)*b0*b1*d0^2*d1*f0*f1^2+4/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^2*f1+4/(d0^2-d1^2)*b0*b1*d0*d1^2*f0*f1^2-4/(d0^2-d1^2)*b0*b1*d1^3*f0^2*f1-4/(d0^2-d1^2)*b0*b1*d1^3*f0*f1^2+2/(d0^2-d1^2)*b1^2*d0^3*f0^2*f1+2/(d0^2-d1^2)*b1^2*d0^3*f0*f1^2-2/(d0^2-d1^2)*b1^2*d0^2*d1*f0^2*f1-2/(d0^2-d1^2)*b1^2*d0^2*d1*f0*f1^2+2/(d0^2-d1^2)*b1^2*d0*d1^2*f0^2*f1+2/(d0^2-d1^2)*b1^2*d0*d1^2*f0*f1^2-2/(d0^2-d1^2)*b1^2*d1^3*f0^2*f1-2/(d0^2-d1^2)*b1^2*d1^3*f0*f1^2, 1/(d0^2-d1^2)*b0^2*d0^3*f0^2*f1+1/(d0^2-d1^2)*b0^2*d0^3*f0*f1^2-1/(d0^2-d1^2)*b0^2*d0^2*d1*f0^3-1/(d0^2-d1^2)*b0^2*d0^2*d1*f1^3+1/(d0^2-d1^2)*b0^2*d0*d1^2*f0^3+1/(d0^2-d1^2)*b0^2*d0*d1^2*f1^3-1/(d0^2-d1^2)*b0^2*d1^3*f0^2*f1-1/(d0^2-d1^2)*b0^2*d1^3*f0*f1^2+2/(d0^2-d1^2)*b0*b1*d0^3*f0^3+2/(d0^2-d1^2)*b0*b1*d0^3*f1^3-2/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^2*f1-2/(d0^2-d1^2)*b0*b1*d0^2*d1*f0*f1^2+2/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^2*f1+2/(d0^2-d1^2)*b0*b1*d0*d1^2*f0*f1^2-2/(d0^2-d1^2)*b0*b1*d1^3*f0^3-2/(d0^2-d1^2)*b0*b1*d1^3*f1^3+1/(d0^2-d1^2)*b1^2*d0^3*f0^2*f1+1/(d0^2-d1^2)*b1^2*d0^3*f0*f1^2-1/(d0^2-d1^2)*b1^2*d0^2*d1*f0^3-1/(d0^2-d1^2)*b1^2*d0^2*d1*f1^3+1/(d0^2-d1^2)*b1^2*d0*d1^2*f0^3+1/(d0^2-d1^2)*b1^2*d0*d1^2*f1^3-1/(d0^2-d1^2)*b1^2*d1^3*f0^2*f1-1/(d0^2-d1^2)*b1^2*d1^3*f0*f1^2, 2/(d0^2-d1^2)*b0^2*d0^2*d1*f0^3+2/(d0^2-d1^2)*b0^2*d0^2*d1*f0^2*f1+2/(d0^2-d1^2)*b0^2*d0^2*d1*f0*f1^2+2/(d0^2-d1^2)*b0^2*d0^2*d1*f1^3-2/(d0^2-d1^2)*b0^2*d0*d1^2*f0^3-2/(d0^2-d1^2)*b0^2*d0*d1^2*f0^2*f1-2/(d0^2-d1^2)*b0^2*d0*d1^2*f0*f1^2-2/(d0^2-d1^2)*b0^2*d0*d1^2*f1^3+4/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^3+4/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^2*f1+4/(d0^2-d1^2)*b0*b1*d0^2*d1*f0*f1^2+4/(d0^2-d1^2)*b0*b1*d0^2*d1*f1^3-4/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^3-4/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^2*f1-4/(d0^2-d1^2)*b0*b1*d0*d1^2*f0*f1^2-4/(d0^2-d1^2)*b0*b1*d0*d1^2*f1^3+2/(d0^2-d1^2)*b1^2*d0^2*d1*f0^3+2/(d0^2-d1^2)*b1^2*d0^2*d1*f0^2*f1+2/(d0^2-d1^2)*b1^2*d0^2*d1*f0*f1^2+2/(d0^2-d1^2)*b1^2*d0^2*d1*f1^3-2/(d0^2-d1^2)*b1^2*d0*d1^2*f0^3-2/(d0^2-d1^2)*b1^2*d0*d1^2*f0^2*f1-2/(d0^2-d1^2)*b1^2*d0*d1^2*f0*f1^2-2/(d0^2-d1^2)*b1^2*d0*d1^2*f1^3, 4/(d0^2-d1^2)*b0^2*d0^2*d1*f0^2*f1+4/(d0^2-d1^2)*b0^2*d0^2*d1*f0*f1^2-4/(d0^2-d1^2)*b0^2*d0*d1^2*f0^2*f1-4/(d0^2-d1^2)*b0^2*d0*d1^2*f0*f1^2+8/(d0^2-d1^2)*b0*b1*d0^2*d1*f0^2*f1+8/(d0^2-d1^2)*b0*b1*d0^2*d1*f0*f1^2-8/(d0^2-d1^2)*b0*b1*d0*d1^2*f0^2*f1-8/(d0^2-d1^2)*b0*b1*d0*d1^2*f0*f1^2+4/(d0^2-d1^2)*b1^2*d0^2*d1*f0^2*f1+4/(d0^2-d1^2)*b1^2*d0^2*d1*f0*f1^2-4/(d0^2-d1^2)*b1^2*d0*d1^2*f0^2*f1-4/(d0^2-d1^2)*b1^2*d0*d1^2*f0*f1^2 ]: # Substitutions based on the model P := P0: P := subs(d0 = 1-d1, P): P := subs(b0 = 1-b1, P): P := subs(f0 = 1-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([ q2*q4-q1*q5 ]): # 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: