-- -*- M2 -*-
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 -
    1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 -
    1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 +
    1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 -
    1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 +
    1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 +
    1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 -
    1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 -
    1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 +
    1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 +
    1)*(x1 + 1) };
J = intersect primaryDecomposition I;
assert( I == J )
assert( radical I == radical J )			    -- oops! not good!

end

-- testing
restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
C = primaryDecomposition I
intersect C == I -- true
radical I == I -- true
minimalPrimes I
o8 == C
P = ideal (x5 + 1, x3 - 1, x4 + 1, x1 + 1, x2 - 1)
(gens I) % P == 0
member(P, C)
member(P, minimalPrimes I)
isSubset(I,ideal (x5 + 1, x3 - 1,  x1 + 1, x2 - 1))
(gens I) % ideal (x5 + 1, x3 - 1,  x1 + 1, x2 - 1)
I == radical I

setC = C/(g -> flatten entries gens gb g)//set
member(flatten entries gens gb P, setC) -- false


restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
codim I
see I
C = primaryDecomposition I
intersect C == I -- true
radical I == I -- true

restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
C = primaryDecomposition I
intersect C == I -- true
radical I == I -- false!!

restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
codim I
C = primaryDecomposition I
intersect C == I -- true
radical I == I -- true
intersect decompose I == I -- true here!!

restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
C = primaryDecomposition I
intersect C == I -- true
radical I == I -- true
intersect decompose I == I -- false here

restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
errorDepth=0
decompose I
intersect decompose I == I -- false here

restart
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
gens gb I
intersect decompose I == I -- true

restart
R=ZZ/32003[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
intersect decompose I == I -- false here, so QQ vs ZZ/32003 is not the issue.

restart
errorDepth=0
--R=QQ[x1,x2,x3,x4,x5,x6,x7, MonomialOrder=>Lex];
R=QQ[x1,x2,x3,x4,x5,x6,x7];
I=ideal { (x7 - 1)*(x6 - 1)*(x5 - 1)*(x3 + 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x1 + 1), (x7 - 1)*(x5 + 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 - 1)*(x5 - 1)*(x4 + 1)*(x3 + 1)*(x2 - 1)*(x1 + 1), (x4 - 1)*(x3 - 1)*(x2 - 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x3 + 1), (x7 - 1)*(x6 - 1)*(x4 + 1)*(x3 + 1)*(x2 + 1)*(x1 + 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1)*(x1 - 1), (x7 + 1)*(x6 - 1)*(x3 + 1)*(x2 - 1), (x2 + 1)*(x1 + 1), (x7 + 1)*(x5 + 1)*(x4 - 1)*(x3 - 1)*(x2 - 1), (x7 + 1)*(x6 - 1)*(x4 + 1)*(x3 - 1), (x7 + 1)*(x3 + 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 - 1)*(x4 + 1)*(x3 - 1)*(x2 - 1), (x7 - 1)*(x6 - 1)*(x5 + 1)*(x4 - 1)*(x2 + 1)*(x1 + 1), (x4 - 1)*(x3 - 1), (x7 + 1)*(x5 - 1)*(x4 + 1)*(x1 + 1) };
P = ideal (x5 + 1, x3 - 1, x1 + 1, x2 - 1)
debug Core
decompose I
intersect oo == I -- false
(gens I) % P == 0 -- true
select(decompose I, c -> c == P) -- none
select(decompose I, c -> (gens c) % P == 0) -- at least one c should be contained inside P,

ics = irreducibleCharacteristicSeries I

rawCharSeries raw gens I
re = rawIdealReorder raw gens I
re' = inversePermutation re
R1 = QQ[(gens R)_re, MonomialOrder=>Lex]
R2 = QQ[gens R, MonomialOrder=>Lex]
f1 = map(R1,R,(gens R1)_re')
f2 = map(R,R1,(gens R)_re)
f1*f2
f2*f1
J = f1 I

rawIdealReorder raw gens J
rawCharSeries raw gens J
L = (map(R2,R1,vars R2)) J
L = sub(L, R)

P1 = f1 P
P1 = (map(R2,R1,vars R2)) P1
P2 = sub(P1, R)
(gens L) % P2


(map(R,R1,vars R)) (f1 P)
rawIdealReorder raw gens L
rawCharSeries raw gens L

see = method()
see Ideal := (I) -> netList I_*

-- BOILING DOWN BUG:
-- The following is giving, I believe, an incorrect answer for the characteristic series of L
R=QQ[x1,x2,x3,x4,x5,x6,x7, MonomialOrder=>Lex];
debug Core
L = ideal(x1*x2*x3*x4*x6*x7-x1*x2*x3*x4*x6+x1*x2*x3*x4*x7-x1*x2*x3*x6*x7-x1*x2*x4*x6*x7-x1*x3*x4*x6*x7-x2*x3*x4*x6*x7-x1*x2*x3*x4+x1*x2*x3*x6+x1*x2*x4*x6+x1*x3*x4*x6+x2*x3*x4*x6-x1*x2*x3*x7-x1*x2*x4*x7-x1*x3*x4*x7-x2*x3*x4*x7+x1*x2*x6*x7+x1*x3*x6*x7+x2*x3*x6*x7+x1*x4*x6*x7+x2*x4*x6*x7+x3*x4*x6*x7+x1*x2*x3+x1*x2*x4+x1*x3*x4+x2*x3*x4-x1*x2*x6-x1*x3*x6-x2*x3*x6-x1*x4*x6-x2*x4*x6-x3*x4*x6+x1*x2*x7+x1*x3*x7+x2*x3*x7+x1*x4*x7+x2*x4*x7+x3*x4*x7-x1*x6*x7-x2*x6*x7-x3*x6*x7-x4*x6*x7-x1*x2-x1*x3-x2*x3-x1*x4-x2*x4-x3*x4+x1*x6+x2*x6+x3*x6+x4*x6-x1*x7-x2*x7-x3*x7-x4*x7+x6*x7+x1+x2+x3+x4-x6+x7-1,
    x1*x2*x3*x5*x7-x1*x2*x3*x5+x1*x2*x3*x7+x1*x2*x5*x7-x1*x3*x5*x7-x2*x3*x5*x7-x1*x2*x3-x1*x2*x5+x1*x3*x5+x2*x3*x5+x1*x2*x7-x1*x3*x7-x2*x3*x7-x1*x5*x7-x2*x5*x7+x3*x5*x7-x1*x2+x1*x3+x2*x3+x1*x5+x2*x5-x3*x5-x1*x7-x2*x7+x3*x7+x5*x7+x1+x2-x3-x5+x7-1,
    x1*x3*x4*x5*x6*x7-x1*x3*x4*x5*x6-x1*x3*x4*x5*x7+x1*x3*x4*x6*x7-x1*x3*x5*x6*x7-x1*x4*x5*x6*x7+x3*x4*x5*x6*x7+x1*x3*x4*x5-x1*x3*x4*x6+x1*x3*x5*x6+x1*x4*x5*x6-x3*x4*x5*x6-x1*x3*x4*x7+x1*x3*x5*x7+x1*x4*x5*x7-x3*x4*x5*x7-x1*x3*x6*x7-x1*x4*x6*x7+x3*x4*x6*x7+x1*x5*x6*x7-x3*x5*x6*x7-x4*x5*x6*x7+x1*x3*x4-x1*x3*x5-x1*x4*x5+x3*x4*x5+x1*x3*x6+x1*x4*x6-x3*x4*x6-x1*x5*x6+x3*x5*x6+x4*x5*x6+x1*x3*x7+x1*x4*x7-x3*x4*x7-x1*x5*x7+x3*x5*x7+x4*x5*x7+x1*x6*x7-x3*x6*x7-x4*x6*x7+x5*x6*x7-x1*x3-x1*x4+x3*x4+x1*x5-x3*x5-x4*x5-x1*x6+x3*x6+x4*x6-x5*x6-x1*x7+x3*x7+x4*x7-x5*x7+x6*x7+x1-x3-x4+x5-x6-x7+1,
    x1*x3*x4*x5*x6*x7-x1*x3*x4*x5*x6+x1*x3*x4*x5*x7+x1*x3*x4*x6*x7-x1*x3*x5*x6*x7+x1*x4*x5*x6*x7-x3*x4*x5*x6*x7-x1*x3*x4*x5-x1*x3*x4*x6+x1*x3*x5*x6-x1*x4*x5*x6+x3*x4*x5*x6+x1*x3*x4*x7-x1*x3*x5*x7+x1*x4*x5*x7-x3*x4*x5*x7-x1*x3*x6*x7+x1*x4*x6*x7-x3*x4*x6*x7-x1*x5*x6*x7+x3*x5*x6*x7-x4*x5*x6*x7-x1*x3*x4+x1*x3*x5-x1*x4*x5+x3*x4*x5+x1*x3*x6-x1*x4*x6+x3*x4*x6+x1*x5*x6-x3*x5*x6+x4*x5*x6-x1*x3*x7+x1*x4*x7-x3*x4*x7-x1*x5*x7+x3*x5*x7-x4*x5*x7-x1*x6*x7+x3*x6*x7-x4*x6*x7+x5*x6*x7+x1*x3-x1*x4+x3*x4+x1*x5-x3*x5+x4*x5+x1*x6-x3*x6+x4*x6-x5*x6-x1*x7+x3*x7-x4*x7+x5*x7+x6*x7+x1-x3+x4-x5-x6+x7-1,
    x3*x4*x5*x6-x3*x4*x5-x3*x4*x6-x3*x5*x6+x4*x5*x6+x3*x4+x3*x5-x4*x5+x3*x6-x4*x6-x5*x6-x3+x4+x5+x6-1,
    x1*x2*x5*x6*x7+x1*x2*x5*x6+x1*x2*x5*x7-x1*x2*x6*x7-x1*x5*x6*x7+x2*x5*x6*x7+x1*x2*x5-x1*x2*x6-x1*x5*x6+x2*x5*x6-x1*x2*x7-x1*x5*x7+x2*x5*x7+x1*x6*x7-x2*x6*x7-x5*x6*x7-x1*x2-x1*x5+x2*x5+x1*x6-x2*x6-x5*x6+x1*x7-x2*x7-x5*x7+x6*x7+x1-x2-x5+x6+x7+1,
    x2*x3*x4*x5*x6*x7-x2*x3*x4*x5*x6+x2*x3*x4*x5*x7+x2*x3*x4*x6*x7+x2*x3*x5*x6*x7+x2*x4*x5*x6*x7-x3*x4*x5*x6*x7-x2*x3*x4*x5-x2*x3*x4*x6-x2*x3*x5*x6-x2*x4*x5*x6+x3*x4*x5*x6+x2*x3*x4*x7+x2*x3*x5*x7+x2*x4*x5*x7-x3*x4*x5*x7+x2*x3*x6*x7+x2*x4*x6*x7-x3*x4*x6*x7+x2*x5*x6*x7-x3*x5*x6*x7-x4*x5*x6*x7-x2*x3*x4-x2*x3*x5-x2*x4*x5+x3*x4*x5-x2*x3*x6-x2*x4*x6+x3*x4*x6-x2*x5*x6+x3*x5*x6+x4*x5*x6+x2*x3*x7+x2*x4*x7-x3*x4*x7+x2*x5*x7-x3*x5*x7-x4*x5*x7+x2*x6*x7-x3*x6*x7-x4*x6*x7-x5*x6*x7-x2*x3-x2*x4+x3*x4-x2*x5+x3*x5+x4*x5-x2*x6+x3*x6+x4*x6+x5*x6+x2*x7-x3*x7-x4*x7-x5*x7-x6*x7-x2+x3+x4+x5+x6-x7+1,
    x2*x3*x4*x5*x6*x7+x2*x3*x4*x5*x6-x2*x3*x4*x5*x7+x2*x3*x4*x6*x7-x2*x3*x5*x6*x7-x2*x4*x5*x6*x7-x3*x4*x5*x6*x7-x2*x3*x4*x5+x2*x3*x4*x6-x2*x3*x5*x6-x2*x4*x5*x6-x3*x4*x5*x6-x2*x3*x4*x7+x2*x3*x5*x7+x2*x4*x5*x7+x3*x4*x5*x7-x2*x3*x6*x7-x2*x4*x6*x7-x3*x4*x6*x7+x2*x5*x6*x7+x3*x5*x6*x7+x4*x5*x6*x7-x2*x3*x4+x2*x3*x5+x2*x4*x5+x3*x4*x5-x2*x3*x6-x2*x4*x6-x3*x4*x6+x2*x5*x6+x3*x5*x6+x4*x5*x6+x2*x3*x7+x2*x4*x7+x3*x4*x7-x2*x5*x7-x3*x5*x7-x4*x5*x7+x2*x6*x7+x3*x6*x7+x4*x6*x7-x5*x6*x7+x2*x3+x2*x4+x3*x4-x2*x5-x3*x5-x4*x5+x2*x6+x3*x6+x4*x6-x5*x6-x2*x7-x3*x7-x4*x7+x5*x7-x6*x7-x2-x3-x4+x5-x6+x7+1,
    x2*x4*x6*x7+x2*x4*x6+x2*x4*x7-x2*x6*x7-x4*x6*x7+x2*x4-x2*x6-x4*x6-x2*x7-x4*x7+x6*x7-x2-x4+x6+x7+1,
    x3*x4+x3+x4+1,
    x1*x4*x5*x6*x7+x1*x4*x5*x6-x1*x4*x5*x7-x1*x4*x6*x7-x1*x5*x6*x7+x4*x5*x6*x7-x1*x4*x5-x1*x4*x6-x1*x5*x6+x4*x5*x6+x1*x4*x7+x1*x5*x7-x4*x5*x7+x1*x6*x7-x4*x6*x7-x5*x6*x7+x1*x4+x1*x5-x4*x5+x1*x6-x4*x6-x5*x6-x1*x7+x4*x7+x5*x7+x6*x7-x1+x4+x5+x6-x7-1,
    x2*x5*x6*x7+x2*x5*x6-x2*x5*x7+x2*x6*x7-x5*x6*x7-x2*x5+x2*x6-x5*x6-x2*x7+x5*x7-x6*x7-x2+x5-x6+x7+1,
    x4*x6*x7+x4*x6+x4*x7-x6*x7+x4-x6-x7-1,
    x1*x2*x4*x5*x6*x7-x1*x2*x4*x5*x6-x1*x2*x4*x5*x7+x1*x2*x4*x6*x7-x1*x2*x5*x6*x7-x1*x4*x5*x6*x7-x2*x4*x5*x6*x7+x1*x2*x4*x5-x1*x2*x4*x6+x1*x2*x5*x6+x1*x4*x5*x6+x2*x4*x5*x6-x1*x2*x4*x7+x1*x2*x5*x7+x1*x4*x5*x7+x2*x4*x5*x7-x1*x2*x6*x7-x1*x4*x6*x7-x2*x4*x6*x7+x1*x5*x6*x7+x2*x5*x6*x7+x4*x5*x6*x7+x1*x2*x4-x1*x2*x5-x1*x4*x5-x2*x4*x5+x1*x2*x6+x1*x4*x6+x2*x4*x6-x1*x5*x6-x2*x5*x6-x4*x5*x6+x1*x2*x7+x1*x4*x7+x2*x4*x7-x1*x5*x7-x2*x5*x7-x4*x5*x7+x1*x6*x7+x2*x6*x7+x4*x6*x7-x5*x6*x7-x1*x2-x1*x4-x2*x4+x1*x5+x2*x5+x4*x5-x1*x6-x2*x6-x4*x6+x5*x6-x1*x7-x2*x7-x4*x7+x5*x7-x6*x7+x1+x2+x4-x5+x6+x7-1,
    x1*x2*x3*x4*x5*x7-x1*x2*x3*x4*x5-x1*x2*x3*x4*x7+x1*x2*x3*x5*x7+x1*x2*x4*x5*x7-x1*x3*x4*x5*x7+x2*x3*x4*x5*x7+x1*x2*x3*x4-x1*x2*x3*x5-x1*x2*x4*x5+x1*x3*x4*x5-x2*x3*x4*x5-x1*x2*x3*x7-x1*x2*x4*x7+x1*x3*x4*x7-x2*x3*x4*x7+x1*x2*x5*x7-x1*x3*x5*x7+x2*x3*x5*x7-x1*x4*x5*x7+x2*x4*x5*x7-x3*x4*x5*x7+x1*x2*x3+x1*x2*x4-x1*x3*x4+x2*x3*x4-x1*x2*x5+x1*x3*x5-x2*x3*x5+x1*x4*x5-x2*x4*x5+x3*x4*x5-x1*x2*x7+x1*x3*x7-x2*x3*x7+x1*x4*x7-x2*x4*x7+x3*x4*x7-x1*x5*x7+x2*x5*x7-x3*x5*x7-x4*x5*x7+x1*x2-x1*x3+x2*x3-x1*x4+x2*x4-x3*x4+x1*x5-x2*x5+x3*x5+x4*x5+x1*x7-x2*x7+x3*x7+x4*x7-x5*x7-x1+x2-x3-x4+x5+x7-1,
    x5*x6-x5-x6+1,
    x1*x3*x5*x7+x1*x3*x5+x1*x3*x7+x1*x5*x7-x3*x5*x7+x1*x3+x1*x5-x3*x5+x1*x7-x3*x7-x5*x7+x1-x3-x5-x7-1)
P = ideal(x1+1,x6-1,x3+1,x4-1)
intersect decompose L == L

rawIdealReorder raw gens L  -- identity, so no reordering is being done
rawCharSeries raw gens L -- this is WRONG
netList oo

R1=QQ[x1,x2,x3,x4,x5,x6,x7, MonomialOrder=>Lex];
L1 = sub(L, R1)
rawIdealReorder raw gens L1
rawCharSeries raw gens L1 -- this is also WRONG, it seems

-- new attempt to boil it down:
-- Dan, I think that rawCharSeries is giving an incorrect answer here.
-- Could you run this on your machine and see if you have a problem?
restart
errorDepth=0
debug Core
R = QQ[x2, x7, x6, x1, x4, x3, x5, MonomialOrder=>Lex]
I = ideal(x4*x3-x4-x3+1,x2*x1+x2+x1+1,x7*x6*x3-x7*x6-x7*x3+x7+x6*x3-x6-x3+1,x2*x7*x3+x2*x7+x2*x3+x2-x7*x3-x7-x3-1,x2*x6*x5-x2*x6-x2*x5+x2+x6*x1*x5-x6*x1-x1*x5+x1,x2*x7*x5+x2*x7+x2*x3*x5+x2*x3+2*x7*x1-x7*x5+x7-x1*x4*x5+x1*x4+2*x1*x3-x1*x5+x1-x4*x5+x4-x3*x5+x3-x5+1,x1*x4*x5-x1*x4+x1*x3*x5-x1*x3+x4*x5-x4+x3*x5-x3,x7*x6*x4*x5+x7*x6*x4-x7*x6*x5-x7*x6-x7*x4*x5-x7*x4+x7*x5+x7+x6*x4*x5+x6*x4-x6*x5-x6-x4*x5-x4+x5+1,x7*x1*x4*x5-x7*x1*x4+x7*x1*x5-x7*x1+x7*x4*x5-x7*x4+x7*x5-x7+x1*x4*x5-x1*x4+x1*x5-x1+x4*x5-x4+x5-1,x6*x1*x4*x5-x6*x1*x4+x6*x1*x5-x6*x1+x6*x4*x5-x6*x4+x6*x5-x6-x1*x4*x5+x1*x4-x1*x5+x1-x4*x5+x4-x5+1,x2*x6*x3*x5-x2*x6*x3-x2*x6*x5+x2*x6-x2*x3*x5+x2*x3+x2*x5-x2-x6*x3*x5+x6*x3+x6*x5-x6+x3*x5-x3-x5+1)
rawIdealReorder raw gens I  -- identity, so no reordering is being done
C = rawCharSeries raw gens I -- this is WRONG (seems to me to be wrong, at least)
C1 = C/(i -> map(R,i))
C2 = for i in C1 list saturate(ideal i, product flatten entries last topCoefficients i)
assert(intersect C2 == I) -- BUG: this should not fail (we think we are sure that I is radical!)
P = ideal (x5 + 1, x3 - 1, x1 + 1, x2 - 1)
assert((gens I) % P == 0)
-- one of the C2 components must (I think!) be P: (or be contained in P: i.e. C2 really should contain
-- the minimal primes of I).
for i in C2 list ((gens i) % P)
assert(# select(C2, i -> isSubset(i, P)) > 0) -- at least one of the primes in the list should contain P
assert(I == intersect decompose I)

-- check that the saturations creating C2 are correct:
ideal C1_0
see  oo
topCoefficients C1_0
factor (ideal C1_0)_3

ideal C1_1
see oo
factor (ideal C1_1)_3

ideal C1_2
see oo
factor (ideal C1_2)_4

ideal C1_3
see oo
factor (ideal C1_3)_2
factor (ideal C1_3)_3
topCoefficients C1_3

ideal C1_7
see oo
factor (ideal C1_7)_4
topCoefficients C1_7

ideal C1_10
see oo
factor (ideal C1_10)_4
topCoefficients C1_10
