TRANS.html -- ACL2 Version 6.3

## TRANS

print the macroexpansion of a form

    Major Section:  OTHER

    Examples:
    :trans (list a b c)
    :trans (caddr x)
    :trans (cond (p q) (r))

This function takes one argument, an alleged term, and translates it, expanding the macros in it completely. Either an error is caused or the formal meaning of the term is printed. We also print the ``output signature'' which indicates how many results are returned and which are single-threaded objects. For example, a term that returns one ordinary object (e.g., an object other than `STATE` or a user-defined single-threaded object (see defstobj)) has the output signature

    => *

A term that returns the single-threaded object `STATE` has the output signature

    => STATE

and a term that returns four results might have the output signature

    => (MV $MEM * * STATE)

This signature indicates that the first result is the (user defined) single-threaded object `$MEM`, that the next two results are ordinary, and that the last result is `STATE`.

See trans! for a corresponding command that does not enforce restrictions of single-threaded objects.

It is sometimes more convenient to use `trans1` which is like trans but which only does top-level macroexpansion.

For more, see term.