We can think of rendering rules as producing a particular
``display'' of a given structured object. Thus, in a system
like La)TeX, the author of a macro picks a specific layout for
objects appearing in the document. This choice, once made,
holds throughout the rendering of the document. On an
interactive system like AsTeR , the listener can pick different
ways of ``hearing'' the same object[+].

In CS611, a course on advanced programming languages, we
work with proof trees. Proof trees typically have a set of
premises that lead to a conclusion. A typical rendering of a
proof tree is:

We know that [tex2html_wrap5762]; Hence we infer
[tex2html_wrap5764].

On the other hand, another rendering rule might ``display''
the same structure as:

We can conclude [tex2html_wrap5766] because we know
[tex2html_wrap5768].

This has the effect of inverting a proof tree. We perform such
actions all the time when perusing written material. On the
other hand, when listening to recorded books on tape, a
listener is tied down to the one rendering order that the
reader chose to use. In contrast, AsTeR allows the listener to
determine the rendering order by activating different rules,
thus enabling better comprehension of complex material.

Here is another example from the same course. The following
rules show different ways of rendering occurrences of operator
subst (textual substitution). They allow the listener
to ``look'' at a particular expression from different
perspectives. [tex2html_wrap5770] denotes [tex2html_wrap5772]
with [tex2html_wrap5774] replaced by [tex2html_wrap5776]. The
linear ``display'' used to layout this expression on paper is
just one possible linearization of operator subst.
When speaking this expression, the description can be
formulated in several ways.

[tex2html_wrap5778] is written using macro
\subst, a macro that takes three arguments. AsTeR
is first extended to recognize this macro call into object
subst having three arguments as follows:

[LVerbatim1562]

Instances of \subst occurring in the document
are now represented as instances of object subst.
Object subst has its argument slot set to a list
containing the result of processing the arguments to the
\subst call. Function argument can be
used to access these within rendering rules. Here are some AFL
rules to generate different renderings of this object.