featurep(e, real)



I've been thinking more about how featurep( ., real) should work:

The function rectform contains the logic that featurep( . , real) needs. 
Duplication is bad.  Thus I'm leaning towards making 

featurep(e, real) := freeof(%i, rectform(e)). 

As rectform improves, so will featurep(., real).  That's a good thing. I 
see
no compelling reason for featurep(., real) to partially duplicate the 
knowledge
contained in rectform. 

(2) Rectform should obey the value of domain. Thus making featurep also 
obey
the value of domain.

(3) For a function that maps the reals to the reals and the complex 
numbers to the
complex numbers, we should have something like

declare(F, real_domain,  reals)
declare(F, real_codomain, reals)
declare(F, complex_domain, complex)
declare(F, complex_codomain, complex)

And ...

declare(log10, real_domain, (0,inf))
declare(G, real_codomain,  reals)

And rectform should heed these declarations.

(4) Maxima should signal domain errors ASAP.  If I start to fill my car
up with diesel fuel, I want a error message before the first drop. I don't
an engine light  to come on in Ogallala, Nebraska (seconds before the 
fire). So yes,  signum(%i)  should signal an error.  As for cos(a # b), 
well
GIGO, I suppose.

Barton