       Re: Re: Adding new rules to Simplify

• To: mathgroup at smc.vnet.net
• Subject: [mg56379] Re: [mg56341] Re: Adding new rules to Simplify
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Sat, 23 Apr 2005 01:16:11 -0400 (EDT)
• References: <27457333.1114080708731.JavaMail.jakarta@nitrogen.mathforum.org> <200504221023.GAA18791@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On 22 Apr 2005, at 19:23, John Billingham wrote:

> Here's another one!
>
> r1[x_ /; ! FreeQ[x, f]] := x /. f[y_] -> a[y]/b[y];
> r1[x_] := x;
>
> r2[x_ /; ! FreeQ[x, g]] := x /. g[y_] -> b[y]/a[y];
> r2[x_] := x;
>
> Simplify[f[X] g[X], TransformationFunctions -> {r1, r2}]
>
> gives
>
> f(X) g(X)
>
>
> I would have hoped to get 1 here, particularly since
>
> r1[r2[f[X]g[X]]]
>
> gives me 1 as expected!
>
> So I tell it to Simplify using just two rules, the successive
> application of which gives 1, but Mathematica fails to simplify at
> all.
>
> What's going on here??
>
> John
>
>

Again, it won't work without a suitable complexity function:

In:=
Simplify[f[X] g[X], TransformationFunctions -> {r1, \
r2},ComplexityFunction->(Count[#,f[_]|g[_],Infinity]&)]

Out=
1

What happens is that whenever Simplify performs just one of the
transformations the default complexity actually increases, so the
transformation is abandoned. You need to apply both transformations
before the default complexity goes down but Simplify never gets that
far. So this is why you need to carefully choose the ComplexityFunction
as well as TransformationFunctions.

Andrzej Kozlowski
Chiba, Japan
http://www.akikoz.net/andrzej/index.html
http://www.mimuw.edu.pl/~akoz/

```

• Prev by Date: Re: Can I make permanent font settings in Mathematica 5
• Next by Date: Re: symbolic matrix calculation doesn't work