Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2002
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Why doesn't this rule work?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg32451] Re: Why doesn't this rule work?
  • From: "Allan Hayes" <hay at haystack.demon.co.uk>
  • Date: Tue, 22 Jan 2002 03:19:11 -0500 (EST)
  • References: <a2ghu1$ki$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

James,

I haven't sorted out what is happening but it seems to be due to the initial
matching, before the condition is tested. If we move the condition to the
right side of the rule (and make the necessary change ot RuleDelayed)
everything works:

    c - a - b /. (n1_.)c + (n2_.)a :> n1b /; n1 == -n2

        0

Also we have,

    Simplify[c - a - b, c - a == b]

        0

--
Allan

---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565


"James Jennings" <djeimz at no.spam.megaseattle.com> wrote in message
news:a2ghu1$ki$1 at smc.vnet.net...
> 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
>




  • Prev by Date: Re: FrameLabel text rotation problem in LINUX
  • Next by Date: RE: Translations
  • Previous by thread: Re: Why doesn't this rule work?
  • Next by thread: Re: Why doesn't this rule work?