Manipulating Value Lists

DownValues[f]give the list of downvalues of f
UpValues[f]give the list of upvalues of f
DownValues[f]=rulesset the downvalues of f
UpValues[f]=rulesset the upvalues of f

Finding and setting values of symbols.

Mathematica effectively stores all definitions you give as lists of transformation rules. When a particular symbol is encountered, the lists of rules associated with it are tried.

Under most circumstances, you do not need direct access to the actual transformation rules associated with definitions you have given. Instead, you can simply use and lhs=. to add and remove rules. In some cases, however, you may find it useful to have direct access to the actual rules.

Here is a definition for .
In[1]:=
Click for copyable input
This gives the explicit rule corresponding to the definition you made for .
In[2]:=
Click for copyable input
Out[2]=

Notice that the rules returned by DownValues and UpValues are set up so that neither their left- nor right-hand sides get evaluated. The left-hand sides are wrapped in HoldPattern, and the rules are delayed, so that the right-hand sides are not immediately evaluated.

As discussed in "Making Definitions for Functions", Mathematica tries to order definitions so that more specific ones appear before more general ones. In general, however, there is no unique way to make this ordering, and you may want to choose a different ordering from the one that Mathematica chooses by default. You can do this by reordering the list of rules obtained from DownValues or UpValues.

Here are some definitions for the object .
In[3]:=
Click for copyable input
This shows the default ordering used for the definitions.
In[4]:=
Click for copyable input
Out[4]=
This reverses the order of the definitions for .
In[5]:=
Click for copyable input
Out[5]=
New to Mathematica? Find your learning path »
Have a question? Ask support »