  A method is given that "inverts" a logic grammar and displays it from the
point of view of the logical form, rather than from that of the word string.
LR-compiling techniques are used to allow a recursive-descent generation
algorithm to perform "functor merging" much in the same way as an LR parser
performs prefix merging.
  This is an improvement on the semantic-head-driven generator that results in
a much smaller search space. The amount of semantic lookahead can be varied,
and appropriate tradeoff points between table size and resulting nondeterminism
can be found automatically.
