Skip to main content

Extract DownValues used in function evaluation


Is there a convenient way to find out which DownValues is used when calling a function? As an example, consider the following function:


abs[Complex[0,n_]] := Complex[0,Abs[n]]

abs[n_?NumberQ] := Sign[n] n

abs[n_?NumericQ] /; MemberQ[{-1,0,1}, Sign[n]] := Sign[n] n


abs[x_] /; Internal`SyntacticNegativeQ[x] := -x

abs[x_] := x

which is just some random code. Now, I want to know which DownValues fired when I evaluate abs[N@I]? Obviously, this example is simple enough that I can figure out which DownValues would fire by inspection, assuming the DownValues occur in the order listed above. However, suppose there are many more DownValues, or suppose you don't to spend time perusing the DownValues to figure out which one would fire for a particular input. Is there some simple function that will give me which DownValues has fired?




Comments