Making Definitions
The replacement operator
allows you to apply transformation rules to a specific expression. Often, however, you want to have transformation rules automatically applied whenever possible.
You can do this by assigning explicit values to Mathematica expressions and patterns. Each assignment specifies a transformation rule to be applied whenever an expression of the appropriate form occurs.
| expr/.lhs->rhs | apply a transformation rule to a specific expression |
| lhs=rhs | assign a value which defines a transformation rule to be used whenever possible |
Manual and automatic application of transformation rules.
This applies a transformation rule for

to a specific expression.
| Out[1]= |  |
By assigning a value to

, you tell
Mathematica to apply a transformation rule for

whenever possible.
| Out[2]= |  |
Now

is transformed automatically.
| Out[3]= |  |
You should realize that except inside constructs like Module and Block, all assignments you make in a Mathematica session are permanent. They continue to be used for the duration of the session, unless you explicitly clear or overwrite them.
The fact that assignments are permanent means that they must be made with care. Probably the single most common mistake in using Mathematica is to make an assignment for a variable like
at one point in your session, and then later to use
having forgotten about the assignment you made.
There are several ways to avoid this kind of mistake. First, you should avoid using assignments whenever possible, and instead use more controlled constructs such as the
replacement operator. Second, you should explicitly use the deassignment operator
or the function Clear to remove values you have assigned when you have finished with them.
Another important way to avoid mistakes is to think particularly carefully before assigning values to variables with common or simple names. You will often want to use a variable such as
as a symbolic parameter. But if you make an assignment such as
, then
will be replaced by
whenever it occurs, and you can no longer use
as a symbolic parameter.
In general, you should be sure not to assign permanent values to any variables that you might want to use for more than one purpose. If at one point in your session you wanted the variable
to stand for the speed of light, you might assign it a value such as
. But then you cannot use
later in your session to stand, say, for an undetermined coefficient. One way to avoid this kind of problem is to make assignments only for variables with more explicit names, such as
.
| x=. | remove the value assigned to the object x |
| Clear[x,y,...] | clear all the values of x, y, ... |
Removing assignments.
This does not give what you might expect, because

still has the value you assigned it above.
| Out[4]= |  |
This removes any value assigned to

.
Now this gives the result you expect.
| Out[6]= |  |