First, thanks for the feedback -- I do appreciate it!
When I try to use the definition for "flat" in Maple 9; it "compiles"; but does not work with polynomial expressions. I get the following error back when I try to use it:
"Error, (in type/specop) testing against an invalid type"
However, it appears to work beautifully in Maple 11.
When I try subsindets(expr, integer, 1), I get a different answer than I expect
(in my example; it should return -2*x1*x2*x3, and instead it returns 4*x1*x2*x3).
Not sure what is going on there.
Recall: expr was 1-(1*x1*x2)*(1-x1*x3)*(1-x2*x3)
I will have to spend some time to learn subsindets, and specop
before I really understand what is going on in "flat". :) My guess is
it is replacing x||i^k by x||i; by replacing k by 1 (checking that k is a
positive integer). But those are functions I have not really seen
previously. Probably very good tools for the Maple toolbag though.