  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. This can be done by
removing all spurious nondeterminism for input sufficiently close to the
examples of a training corpus, and large portions of it for other input, while
preserving completeness.
