It runs amazingly fast.
Thanks a lot.

It runs amazingly fast.
Thanks a lot.

I found a tricky problem when using your method:
f := a00*x^123+a45*x^233+a02*x^123+a67*x^156+a47*x^67;
C := [coeffs(f,x,'M')]: # coefficients
M := [M]: # monomials
I got what "M" is:
[x^233, x^67, x^123, x^156]
which is not sorted from low degree to high degree.
As a result, the corresponding coefficients are not sorted.
I am wondering whether there is a way to fix it.
Thanks a lot.
Gepo

I found a tricky problem when using your method:
f := a00*x^123+a45*x^233+a02*x^123+a67*x^156+a47*x^67;
C := [coeffs(f,x,'M')]: # coefficients
M := [M]: # monomials
I got what "M" is:
[x^233, x^67, x^123, x^156]
which is not sorted from low degree to high degree.
As a result, the corresponding coefficients are not sorted.
I am wondering whether there is a way to fix it.
Thanks a lot.
Gepo

I run a large problem over Maple12 and Singular. The problem is a modulo 2 computation.
The result is Maple takes 9 seconds to finish it while Singular is still running over one hour.
I did not evaluate Magma, because I cannot find a trial version or free version.

I did run some experiments using Singular which was much slower than Maple for large problems.
How about Magma?

Pagan's statement is correct. I did not express my question clearly.
What I want is polynomials only containing all subsets of the set of given variables (including the whole set itself, but without empty subset).
So, take your example,
> L:=[a+b+c,x+ab+d^3,y+c,a+b,a+b+c*d];
3
L := [a + b + c, x + ab + d , y + c, a + b, a + b + c d]
> select(f->indets(f)={a,b,c}, L); ---------------------------------->not. not including ALL subsets.
[a + b + c]
> select(f->(indets(f) minus {a,b,c})={}, L);---------------------->is what I want.
[a + b + c, a + b]
> select(f->({a,b,c} minus indets(f))={}, L);----------------------->not, because "d" is included.
[a + b + c, a + b + c d]
Thanks so much.
Gepo

thanks, both methods work.
But I think the first method is more flexible, because I can increase or decrease any number variables.
select(f->indets(f)={a,b,c}, L);

For Robert's reply, I did get why "cnt" makes the order of entries of list "essentially random".

For Robert's reply, I did get why "cnt" makes the order of entries of list "essentially random".

Mohsen's method works. I have no idea why I put that extra line:)
thanks a lot.
Gepo

Mohsen's method works. I have no idea why I put that extra line:)
thanks a lot.
Gepo