> freeof (x_1, expr) Returns true if no subexpression of expr is equal to x_1 or if x_1 occurs only as a dummy variable in expr, and returns false otherwise.
> freeof(bessel_j,bessel_j(n,x));
> true; <- surely a bug.
Agreed. The noun/verb thing is a perpetual headache.... Consider for
example x-nounify(x) (not equal to zero). Anyway.
If we think of the noun form of f as simply an internal trick for
representing the operator of 'f(x), then it makes sense for freeof to
check for both the noun and the verb forms.
Is there any problem with that? Extremely sophisticated users who
want to do things like manipulate Maxima code in subtle ways may have
to write their own freeof, but I think that's OK.
Thoughts?
-s