How can I handle Operator Algebra ?
- To: mathgroup at smc.vnet.net
 - Subject: [mg6564] How can I handle Operator Algebra ?
 - From: "Daitaro Hagihara" <daiyanh at mindspring.com>
 - Date: Tue, 1 Apr 1997 19:01:00 -0500 (EST)
 - Sender: owner-wri-mathgroup at wolfram.com
 
It turned out to be rather non-intuitive.  This is the reverse of
Wouter's fatty acid function posted awhile back.  Anyway, the following
works too (after trying out some ridiculous constructs):
Mma[3]? {-(z (D[#1, y] & )) + y (D[#1, z] & ),
         z (D[#1, x] & ) - x (D[#1, z] & ),
         -(y (D[#1, x] & )) + x (D[#1, y] & )} //.
{a_ Function[b_]->Function[a b],
 a_+Function[b_]->Function[a+b],
 Function[Function[b_]]->Function[b]}
{-z D[#1, y] + y D[#1, z] & , z D[#1, x] + -x D[#1, z] & , 
 
  -y D[#1, x] + x D[#1, y] & }
Mma[4]? %[Sqrt[x^2+y^2+z^2]]//Through
{0, 0, 0}
The question is, how can one modify Function in order to do the
simplifications?  I could not modify Function without causing infinite
recursions.  "Collecting" Function heads over pluses and times and even
exponential and other transcendental functions isn't such a bizarre
thing to do.  Moreover, good old Simplify gives the following answer:
Mma[7]? {-(z (D[#1, y] & )) + y (D[#1, z] & ),
         z (D[#1, x] & ) - x (D[#1, z] & ),
         -(y (D[#1, x] & )) + x (D[#1, y] & )}//Simplify
{(y - z) (0 & ), (-x + z) (0 & ), (x - y) (0 & )}
I cannot think of a situation where collecting Function heads causes
problems.  This ought to be a built-in feature, I think.  Never
realized this before until you posted the question.
Daitaro Hagihara