The functions "is" and "assume" ignore the complex
declaration
(C1) declare(x,complex);
(D1) DONE
(C2) is(x^2 + 1 > 0);
(D2) TRUE
This isn't correct. Additionally, assume doesn't
care that x is complex and it allows the
assumption
(C3) assume(x > 1);
(D3) [x > 1]
(C4) build_info();
Maxima version: 5.9.0
Maxima build date: 19:10 2/9/2003
host type: i686-pc-mingw32
lisp-implementation-type: Kyoto Common Lisp
lisp-implementation-version: GCL-2-5.0
Until things like this are fixed, at least the
documentation for declare should clearly
state the limitations of declaring a symbol
to be complex. The functions realpart &
friends are the only ones I know of that
make use of it; for example
(C5) rectform(x);
(D5) REALPART(x) + %
IMAGPART(x)
(C6)
Barton
Logged In: YES
user_id=588346
Note by the way that besides the above problems,
declare/featurep have some important bugs (see bug report
767401).
Checking the code, the Complex declaration is also used in
simpexpt: abs(rrr)^2 => rrr^2, while abs(ccc)^2 doesn't.
Similarly, (rrr^2)^(1/3)=>rrr^(2/3), while (ccc^2)^(1/3)
=>abs(ccc)^(1/3).
For the record:
The first problem is no longer present. We get:
(%i1) declare(z,complex)$
(%i2) is(z^2+1>0);
(%o2) unknown
(%i3) is(x^2+1>0);
(%o3) true
But the following is still possible:
(%i4) assume(z>1);
(%o4) [z > 1]
(%i5) is(z^2+1>0);
(%o5) true
Dieter Kaiser