unprotect conjugate?



On 1/31/08, Edwin Woollett <woollett at charter.net> wrote:

> I want to teach maxima how to properly treat the derivative of the conjugate
> function, with the end result that I will get the behavior:
>
> diff(  conjugate( f(x) ), x );   ==>  conjugate(   'diff( f( x ), x,  1)   )

Here is such a rule.

declare (e, complex);
matchdeclare (e, all, u, mapatom);
tellsimpafter ('diff (conjugate (e), u), conjugate (diff (e, u)));

This depends rather sensitively on Maxima's assumptions about
how diff and conjugate work; e.g. there must be a quote mark on diff
but not on conjugate. I hope we can eventually regularize some things
so that making up basic rules like this doesn't depend on peculiar
factoids ... Anyway here are a couple of examples of the rule in action.

diff (conjugate (f(x)), x);
 => conjugate('diff(f(x),x,1))

diff (conjugate (f(x) + g(x)), x);
 => conjugate('diff(g(x),x,1))+conjugate('diff(f(x),x,1))

Is that the intended effect?

> Is there a way to "unprotect" system functions like conjugate  so this rule
> can be  implemented for any function f(x)?

As it happens, Maxima doesn't protect built-in functions.
You can make rules for or redefine any built-in function.

HTH

Robert Dodier