Customizing Maxima



I am having a problem.

I try to do this and I get major problems.

(%i1) matchdeclare(aa,true,xx,symbolp(xx));
(eq1) done
(%i2) tellsimpafter('diff(unit_step(xx-aa),xx),DiracDelta(xx-aa));
xx+-aa*1 partitions `sum'

-aa*1 Will be matched uniquely since sub-parts would otherwise be ambigious.

(eq2) [derivativerule1,simpderiv]

(%i3) (-x^2/15-25/3)*(unit_step(10+x)-unit_step(5+x));
(eq3) (-x^2/15-25/3)*(unit_step(x+10)-unit_step(x+5))

(%i4) diff(%, x);
Maxima encountered a Lisp error: Error in DEFINITELY-SO [or a callee]: DEFINITELY-SO [or a callee] requires less than 
two arguments.
Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.

If I do it this way instead it works but only if the variable is x.

(%i1) matchdeclare(aa,true);
(eq1) done

(%i2) tellsimpafter('diff(unit_step(x-aa),x),DiracDelta(x-aa));
(eq2) [derivativerule1,simpderiv]

(%i3) (-x^2/15-25/3)*(unit_step(10+x)-unit_step(5+x));
(eq3) (-x^2/15-25/3)*(unit_step(x+10)-unit_step(x+5))

(%i4) diff(%, x);
(eq4) (-x^2/15-25/3)*(DiracDelta(x+10)-DiracDelta(x+5))-(2*x*(unit_step(x+10)-unit_step(x+5)))/15

If the variable is y it does not work.

(%i1) matchdeclare(aa,true);
(eq1) done
(%i2) tellsimpafter('diff(unit_step(x-aa),x),DiracDelta(x-aa));
(eq2) [derivativerule1,simpderiv]
(%i3) (-y^2/15-25/3)*(unit_step(10+y)-unit_step(5+y));
(eq3) (-y^2/15-25/3)*(unit_step(y+10)-unit_step(y+5))
(%i4) diff(%, x);
(eq4) 0

How can I say to Maxima that xx is a variable without getting an error?

Rich