Evaluation in Mathematica: Until no rules apply? Or until the expression

• To: mathgroup at smc.vnet.net
• Subject: [mg82206] Evaluation in Mathematica: Until no rules apply? Or until the expression
• From: Szabolcs Horvát <szhorvat at gmail.com>
• Date: Sun, 14 Oct 2007 06:22:13 -0400 (EDT)

```The documentation says:

"As discussed in "Principles of Evaluation", Mathematica follows the
principle that each expression is evaluated until no further definitions
apply. This means that Mathematica must continue re-evaluating results
until it gets an expression which remains unchanged through the
evaluation procedure. "

This is not very clear.  Does Mathematica evaluate the expression until
no rules apply?  Or does it stop when application of a rule does not
change the expression any more?

A few examples:

In[1]:=
a := a
a // Trace

Out[2]= {}

In[3]:=
b[x] := b[x]
b[x] // Trace

Out[4]= {b[x], b[x]}

In[5]:=
c[p_] := c[p]
c[x] // Trace

During evaluation of In[5]:= \$IterationLimit::itlim: Iteration limit of
4096 exceeded. >>

Out[6]= {c[x],c[x],c[x],c[x],c[x], ... (and so forth)

In[7]:=
d[x /; True] := d[x]
d[x] // Trace

Out[8]= {d[x], d[x]}

In[9]:=
e[p_ /; p===x] := e[x]
e[x] // Trace

Out[10]= {e[x], {x===x, True}, e[x], {x===x, True}, e[x]}

Could someone explain how Mathematica decides when to finish the
evaluation of an expression?

--
Szabolcs

```

• Prev by Date: Re: rule based program for "Deleting repeated members of a list."
• Next by Date: Re: HELP: How to do count to the SUB-LIST
• Previous by thread: Background Color for a Panel
• Next by thread: Implicit plotting issues