Question about declare and properties of functions versus variables



"declare" says that some properties are for functions and some are for variables.  In particular, real, scalar, and imaginary apply to variables. I have this:

/* XXX "ip" and "qp" are functions, so does "real", "scalar", or "imaginary"
 * apply?
 */
declare (ip,[real,scalar,evenfun]);
declare (qp,[imaginary,scalar,oddfun]);

However, then I take rectform of them, and maxima seems to know that ip is strictly real, but not that qp is strictly imaginary:

(%i10) rectform(qp(k));
(%o10)               realpart(qp(k)) + %i imagpart(qp(k))
(%i11) rectform(ip(k));
(%o11)                               ip(k)

What don't I understand?

(Maxima 5.23.2 http://maxima.sourceforge.net
using Lisp SBCL 1.0.40-1.fc14)

Peter
-----------------
Peter Dufault
HD Associates, Inc.      Software and System Engineering