Re: Why doesn't this rule work?

*To*: mathgroup at smc.vnet.net*Subject*: [mg32486] Re: Why doesn't this rule work?*From*: "Ersek, Ted R" <ErsekTR at navair.navy.mil>*Date*: Wed, 23 Jan 2002 01:00:04 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

James Jennings wanted to know why the following rule has no effect. In[]:= c-a-b /. n1_. c+n2_. a /; n1==-n2 -> n1 b Out[]= -a-b+c --------------- I don't know why, but I can recommend some ways that do work. In[]:= c-a-b+d /. ((n1_.*c+n2_.*a+others_.)/; n1==-n2 )-> n1*b+others Out[]= d In[]:= c-a-b+d /.{ n_.* c - n_.* a -> n*b, -n_.* c + n_.* a -> -n*b} Out[]= d However, neither of the above will work in a more complicated example such as the one below. For a more robust solution use rule below. In[]:= expr=Exp[p/2+x/2]*c-Exp[(p+x)/2]*a-b+d; expr /.((n1_.*c+n2_.*a+others_.) /;Simplify[n1+n2]===0 )-> n1*b+others Out[]= -b + d + b*E^(Pi/2 + x/2) ---------- Regards, Ted Ersek Get Mathematica tips, tricks from http://www.verbeia.com/mathematica/tips/Tricks.html