Re: Why doesn't this rule work?

*To*: mathgroup at smc.vnet.net*Subject*: [mg32458] Re: [mg32447] Why doesn't this rule work?*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Tue, 22 Jan 2002 03:19:22 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

I think the best way is to use RuleCondition instead of Rule and Condition as you did. (Unfortunately RuleCondition, one of the most useful Mathematica functions in this sort of situations, is undocumented...) In[1]:= c-a-b/.n1_. c+n2_. a:>RuleCondition[n1 b,n1==-n2] Out[1]= 0 Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Monday, January 21, 2002, at 04:54 PM, James Jennings wrote: > Suppose I want to simplify expressions linear in a, b, and c where a+b=c > -- something of this sort. > > In[]:= a+b /. a+b -> c > > Out[]= c > > In[]:= a+b+c /. a+b -> c > > Out[]= 2 c > > With more complicated coefficients I can use: > > In[]:= -2 a - 2 b /. n_. a+n_. b -> n c > > Out[]= -2 c > > In[]:= -a-b+c /. n_. a+n_. b -> n c > > Out[]= 0 > > I also want to apply rules based on c-a=b > > In[]:= c-a /. n1_. c+n2_. a /; n1==-n2 -> n1 b > > Out[]= b > > The problem comes with I apply the above rule to longer expressions. > > In[]:= c-a-b /. n1_. c+n2_. a /; n1==-n2 -> n1 b > > Out[]= -a-b+c > > Why didn't that work? I had thought that since Plus[] is Orderless, my > rule ought to be applied to all pieces of my expression, but it doesn't > appear to be. > > --- > > Before someone suggests that I should just set c = a+b and be done with > it, my actual problem involved 12 objects like a, b, and c, where 16 > distinct triplets add up like a+b=c. I'm looking for rules that will > keep my expressions as short as possible, even if they aren't unique. > > Thanks. > James > > >