Many gfan functions can be sped up and give smaller output when symmetries of the ideal are given. Permuations are specified as sequences of variables. Not all permuations need to be listed; only permutations that generate all of the symmetries.
A possible caveat is that the permuatations must be appled to the output to get the entire result.
i1 : R = QQ[a,b,c]; |
i2 : I = ideal(a+b,b+c); o2 : Ideal of R |
i3 : gfan(I) LP algorithm being used: "cddgmp". o3 = ({{b, a}, {c, a}, {c, b}}, {{b + c, a - c}, {b + c, a + b}, {- a + c, a ------------------------------------------------------------------------ + b}}) o3 : Sequence |
i4 : gfan(I, Symmetries => {(c,b,a)}) LP algorithm being used: "cddgmp". o4 = ({{b, a}, {c, a}}, {{b + c, a - c}, {b + c, a + b}}) o4 : Sequence |
Note that the use of symmetries above reduces the amount of output. The permutations must be appled to the output to get the complete result.
i5 : R = QQ[a,b,c,d,e]; |
i6 : I = ideal"a+b+c+d,ab+bc+cd+da,abc+bcd+cda+dab,abcd-e4" o6 = ideal (a + b + c + d, a*b + b*c + a*d + c*d, a*b*c + a*b*d + a*c*d + ------------------------------------------------------------------------ 4 b*c*d, a*b*c*d - e ) o6 : Ideal of R |
i7 : #universalGroebnerBasis(I) LP algorithm being used: "cddgmp". o7 = 75 |
i8 : #universalGroebnerBasis(I, Symmetries => {(b,c,d,a,e)}) LP algorithm being used: "cddgmp". o8 = 27 |
The object Symmetries is a symbol.