Principles of Evaluation
The fundamental operation that
Mathematica performs is
evaluation. Whenever you enter an expression,
Mathematica evaluates the expression, then returns the result.
Evaluation in
Mathematica works by applying a sequence of definitions. The definitions can either be ones you explicitly entered, or ones that are built into
Mathematica.
Thus, for example,
Mathematica evaluates the expression

using a built-in procedure for adding integers. Similarly,
Mathematica evaluates the algebraic expression

using a built-in simplification procedure. If you had made the definition

, then
Mathematica would use this definition to reduce

to

.
The two most central concepts in
Mathematica are probably
expressions and
evaluation.
"Expressions" discusses how all the different kinds of objects that
Mathematica handles are represented in a uniform way using expressions. This tutorial describes how all the operations that
Mathematica can perform can also be viewed in a uniform way as examples of evaluation.
| Computation |  |
| Simplification |  |
| Execution |  |
Some interpretations of evaluation.
Mathematica is an
infinite evaluation system. When you enter an expression,
Mathematica will keep on using definitions it knows until it gets a result to which no definitions apply.
This defines

in terms of

, and then defines

.
| Out[1]= |  |
If you ask for

,
Mathematica uses all the definitions it knows to give you a result.
| Out[2]= |  |
Here is a recursive definition in which the factorial function is defined in terms of itself.
If you ask for

,
Mathematica will keep on applying the definitions you have given until the result it gets no longer changes.
| Out[4]= |  |
When
Mathematica has used all the definitions it knows, it gives whatever expression it has obtained as the result. Sometimes the result may be an object such as a number. But usually the result is an expression in which some objects are represented in a symbolic form.
Mathematica uses its built-in definitions for simplifying sums, but knows no definitions for

, so leaves this in symbolic form.
| Out[5]= |  |
Mathematica follows the principle of applying definitions until the result it gets no longer changes. This means that if you take the final result that
Mathematica gives, and enter it as
Mathematica input, you will get back the same result again. (There are some subtle cases discussed in
"Controlling Infinite Evaluation" in which this does not occur.)
If you type in a result from
Mathematica, you get back the same expression again.
| Out[6]= |  |
At any given time,
Mathematica can only use those definitions that it knows at that time. If you add more definitions later, however,
Mathematica will be able to use these. The results you get from
Mathematica may change in this case.
Here is a new definition for the function

.
| Out[7]= |  |
With the new definition, the results you get can change.
| Out[8]= |  |
The simplest examples of evaluation involve using definitions such as

which transform one expression directly into another. But evaluation is also the process used to execute programs written in
Mathematica. Thus, for example, if you have a procedure consisting of a sequence of
Mathematica expressions, some perhaps representing conditionals and loops, the execution of this procedure corresponds to the evaluation of these expressions. Sometimes the evaluation process may involve evaluating a particular expression several times, as in a loop.
The expression
Print
is evaluated three times during the evaluation of the
Do expression.