Re: Simplifying an expression in light of relationships between variables?

*To*: mathgroup at smc.vnet.net*Subject*: [mg54273] Re: [mg54263] Simplifying an expression in light of relationships between variables?*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Wed, 16 Feb 2005 14:35:54 -0500 (EST)*References*: <200502150251.VAA27353@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

*This message was transferred with a trial version of CommuniGate(tm) Pro* On 15 Feb 2005, at 03:51, Steve W. Brewer wrote: > Suppose I have a few variables that are related in the following way: > > d == a + b > e == c + d > > > > I want Simplify and FullSimplify to consider these relationships when > performing simplification. For example: > > FullSimplify[a + b] > > d > > > > FullSimplify[d - b] > > a > > > > FullSimplify[a + b + c] > > e > > > > FullSimplify[e - c] > > d > > > > FullSimplify[e - c - b] > > a > > > > Is there a straightforward way to get this behavior? I've tried > experimenting with TransformationFunctions, but it looks like I need to > include every possible permutation for it to work, for example: > > TransformationFunctions -> > {Automatic, > # /. (d -> a + b)&, > # /. (a + b -> d)&, > # /. (a -> d - b)&, > # /. (d - b -> a)&, > # /. (b -> d - a)&, > # /. (d - a -> b)&, > ... } > > > > This is unwieldy even in this simple example, and it rapidly becomes > unmanageable as the number of variables and relationships increases. > > > Is there an easier way? > > > In an earlier thread Adam Strzebonski of WRI posted a function (Variable Order Independent Simplify) that does this: VOISimplify[vars_, expr_, assum_:True] := Module[{perm, ee, best}, perm = Permutations[vars]; ee = (FullSimplify @@ ({expr, assum} /. Thread[vars -> #])) & /@ perm; best = Sort[Transpose[{LeafCount /@ ee, ee, perm}]][[1]]; best[[2]] /. Thread[best[[3]] -> vars]] VOISimplify[{a,b,c,d},d-b,{d==a+b,e==c+d}] a VOISimplify[{a, b, c, d}, a + b + c, {d == a + b, e == c + d}] e Andrzej Kozlowski Chiba, Japan http://www.akikoz.net/~andrzej/ http://www.mimuw.edu.pl/~akoz/

**References**:**Simplifying an expression in light of relationships between variables?***From:*"Steve W. Brewer" <ste-ve@ka-tech.com>