Question: Why won't assume and assuming work consistently?

I am trying to determine when one inequality implies another inequality and I am finding that assume and assuming aren't working consistently for me. I've put the code for my test run below. It seems to work the first time through when I assume mylist[1], but when I assume mylist[2] it always returns false. If I explicitly test is(x>-4) it returns true as it should but if I ask it to determine is(mylist[5]) (which is x>-4 once mylist is overwritten) it returns false? Is there a reason for this? I'm eventually going to need to put it all into a loop that works for any list--is there a way that will guarantee that it will work consistently?

mylist:=[x<3, x<9, x>0, x>1/2, x<2, x>-4];
interface(showassumed=0):
printlevel:=4:
assume(mylist[1]);
for i from 2 to nops(mylist) do
if is(mylist[i]) then
anode[i]:=true;
else
anode[i]:=false;
end if;
end do;
newlist:=[mylist[1]];
for i from 2 to nops(mylist) do
if anode[i]=false then
newlist:=[op(newlist), mylist[i]];
end if;
end do;
mylist:=newlist;

assume(mylist[2]);
for i from 3 to nops(mylist) do
if is(mylist[i]) then
anode[i]:=true;
else
anode[i]:=false;
end if;
end do;
newlist:=[mylist[1], mylist[2]];
for i from 3 to nops(mylist) do
if anode[i]=false then
newlist:=[op(newlist), mylist[i]];
end if;
end do;
mylist:=newlist;


Please Wait...