You can't *prove* a basic theorem of this sort in set theory (which is essentially an axiom of Boolean algebra) by asking Maple if it agrees. All you are doing is verifying it against whatever has been implemented in Maple - which of course we hope (generally with justification) is correct.

I think you will need to explain what you want a little more carefully. What exactly do you have and what do you want to produce from it. An example would be good.
Toby

George,
Thanks - yes indeed - under XP Maple 10.04 Classic it works as you might expect.
But under Maple Standard the behaviour is as I describe. I think it is a bug.
This sort of thing is tiresome. Perhaps I should just stick to the Classic Interface. (Who needs all this silly 2-d input anyway?)
Toby

Something like f := x-> add( X[k]*x^(nops(L)-k) , k = 1..nops(L) ); I should think , depending on exactly what your set-up is.

Sounds like somebody's homework!

It depends what you mean by square root. A positive real number has two square roots. However the usual convention is that by sqrt(x) (where sqrt stands for the usual special symbol that I can't reproduce here) one means just the positive one. This is not a fact about maths, it's a fact about how we choose to use the words.
In fact everyone knows at some level that by sqrt(x) we mean the positive one because in the quadratic formula we write
-b PLUS OR MINUS sqrt(b^2-4*a*c)
and if sqrt stood for both square roots then we wouldn't need the "plus or Minus".
So sqrt in maple correctly reproduces the meaning of the usual symbol for positive real numbers.

seq( fsolve(x^n - add(x^i,i=0..n-1)=0, x), n=2..12);
will give you numerical approx solutions. Or do you think there are interesting exact solns?

Just rethought what has been here for an hour or two. So your question is that if you (say) pput two quats in a list
L := [a,b];
L[1] * L[2];
uses the overloaded *.
But when they are in Vectors (like your A and B) A . B generates A[1] * B[1] which for some reason uses the original (not overloaded) *
I see what you are asking and I'm not immediately sure what the answer is.
Toby

I don't know what you are trying to do with those definitions of A and B. Vector([b]) does not produce a 4-dim vector corresponding to b - it produces a 1-dim vector whose one element is the quaternion. If you want to extract the 4-dim vector you'll need to add some code to the module to do it.
Toby

I doubt you can do that directly because 2*(p^2+2) is automatically simplified to 2*p^2 + 4.
You could create a procedure that returned [2, p^2+2] or something though.