Getting around symbol favoritism of Simplify and FullSimplify
There is an old mathgroup discussion on this. The issue is that Simplify
uses a Groebner basis and this is dependent on lexical order. The suggestion for getting around this was to use this code from Adam Strzebonski.
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]]
Then we have
VOISimplify[{a, b, c}, b + c, b + c == a]
a
However, checking all lexical orders could be expensive... I am no expert on this but just remember I had a similar problem in 2005. It is probably time to have further discussions on this issue.