Frechet derivative of a differential operator in maxima?



Is there a package that computes the Frechet derivative of a
differential operator? I think it would be relatively easy to define
such a thing, but I admit I'm just beginning to get my head around the
definition. It seems as though defining such a maxima function
requires that a series of "depends" clauses be used to force diff to
emit noun forms for certain derivatives.

eg:

depends(U,x);
depends(delta,x);
operator: diff(U,x,2) - diff(U,x) + U^2 ;

foo: (subst(U+eps*delta,U,operator)-operator)/eps;
ev(foo,diff);
ratexpand(%,eps);
limit(%,eps,0);

			  2
			 d delta   ddelta
(%o17) 			 ------- - ------ + 2 delta U
			     2	     dx
			   dx


How would one go about implementing this in general in maxima while
remaining both idempotent, and "referentially transparent" (that is
your program wouldn't alter the global environment or behave
differently the second time through etc) It seems that the depends
clauses make it difficult.


-- 
Daniel Lakeland
dlakelan at street-artists.org
http://www.street-artists.org/~dlakelan