where name is a new function symbol, formals is its list of
formal parameters, and output is either a symbol (indicating
that the function returns one result) or a term of the form
(mv s1 ... sn), where each si is a symbol (indicating that the
function returns n results). Whether and where the symbol
state occurs in formals and output indicates how the
function handles state. It should be the case that
(name formals output) is in fact a signature (see signature).

Note that with the old style notation it is impossible to stub-out
a function that uses any single-threaded object other than state.
The old style is preserved for compatibility with earlier versions of
ACL2.