       Re: algebraic substitution rules

• To: mathgroup at smc.vnet.net
• Subject: [mg30747] Re: algebraic substitution rules
• From: "Allan Hayes" <hay at haystack.demon.co.uk>
• Date: Sun, 9 Sep 2001 03:26:42 -0400 (EDT)
• References: <9ncfq6\$pt5\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Your example below does not work for two reasons:

1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2,
a_->Expand[a]}

1 + x^2 + x^3 + x^4

1) because -> (Rule) is used instead of :>(RuleDelayed),  Expand[a]
evaluates to a, giving
a ->a  before the replacement is attempted.
A simple example is

x(1+x)/.a_->Expand[a]

x*(1 + x)

This is corrected by using :> which prevents the evaluation of the right
side before replacement is attempted (hence the name "RuleDelayed").

x(1+x)/.a_:>Expand[a]

x + x^2

However this still does not work on your example:

1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2,
a_:>Expand[a]}

1 + x^2 + x^3 + x^4

This is because

2) When the replacement is attempted it is first tried on the whole
expression 1+x^2+x^3+x^4. The rule a_:>Expand[a] applies and replaces it
with Expand[1+x^2+x^3+x^4], which gives 1+x^2+x^3+x^4. The process then
terminates - it does not look inside the result of a replacement

We can use a two-step replacement

1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2}/.
a_:>Expand[a]

3 + 4*x + 2*x^2

or

Expand[1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2}]

3 + 4*x + 2*x^2

--
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

"Cattiaux Isabelle" <Isabelle.Cattiaux at univ-valenciennes.fr> wrote in
message news:9ncfq6\$pt5\$1 at smc.vnet.net...
>
> Hi,
>
>   Could someone tell me why the first substitution rule
>  works and the second doesn't
>
> In:==
> 1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2}
>
> Out==
> 2 + x + x(1 + x)+ (1 + x)^2
>
> In:==
> 1+x^2+x^3+x^4 /. {x^2->1+x ,x^3->x(1+x) ,x^4->(1+x)^2,a_->Expand[a]}
>
> Out==
> 1 + x^2 + x^3 + x^4
>
> --
> Isabelle Cattiaux-Huillard
> Universite de Valenciennes
>

```

• Prev by Date: RE: algebraic substitution rules
• Next by Date: Re: algebraic substitution rules
• Previous by thread: RE: algebraic substitution rules
• Next by thread: Re: algebraic substitution rules