#### QUESTION

`Simplify[b - a]`

results in `-a + b`

. I prefer `b - a`

, which is a bit simpler (3 symbols instead of 4).

Can I make *Mathematica* to think the same way?

I believe one needs to redefine the `ComplexityFunction`

.

#### ANSWER

It is not `Simplify`

that changes `b-a`

to `-a+b`

. It happens automatically, and it cannot generally be prevented except by using `Hold`

or `HoldForm`

which will make it impossible to use the expression for calculations (until you remove the `Hold`

wrapper again). But while you can't prevent changing `b-a`

to `-a+b`

internally, you can change how it will be displayed on screen, by using `TraditionalForm`

.

**Why does Mathematica not consider one form simpler than the other?**

Let's look at the structure of these expressions:

```
In[1]:= Hold[b-a]//FullForm
Out[1]//FullForm= Hold[Plus[b,Times[-1,a]]]
In[2]:= Hold[-a+b]//FullForm
Out[2]//FullForm= Hold[Plus[Times[-1,a],b]]
```

The only difference is the ordering of the terms within `Plus`

, but neither expression has fewer parts than the other. This is the consequence of the particular choice for their internal representation, which is shown above using `FullForm`

.

**Why does Mathematica reorder the terms of Plus?**

`Plus`

has the `Orderless`

attribute. This attribute is used for functions that are commutative. The system will automatically bring any `Orderless`

function to a *canonical form* by sorting its arguments the same way `Sort`

would. See that documentation page for the sorting rules: symbols will generally be sorted alphabetically, so `a`

comes before `b`

.

It's not difficult to see why canonical forms are advantageous to use in computer algebra systems when it is at all possible to define and efficiently compute one. For example, it will make a comparison such as `a+b==b+a`

trivial to carry out efficiently.

**But I don't care what's simpler for a computer, $b-a$ is just more readable for humans!**

You're right about that, that's why the function `TraditionalForm`

will change the way expressions are *displayed*. It won't change their *internal representation*: it will still be `Plus[Times[-1,a],b]`

, i.e. something like `(-1)*a + b`

. However it will change how they're displayed on screen and show $b-a$ for better readability.

I sometimes select the output cell and press `Command`-`Shift`-`T` to automatically convert the cell to `TraditionalForm`

for better readability (e.g. it'll show matrices in 2D form and will order polynomials with higher order terms first).