Team: Tycon Mismatch
Program: (\x.x)

Language: SML '97
Compiler: MLton-20010706

Structure of the program
--------------------------------------------------

This program runs a number of optimizations repeatedly, until the
output reaches a local minimum, or it judges that there is not enough
time to safely continue. Optimizations are described in opts/README or
in their source code; highlights include:

Useless and Redundant tag removal, <PL> shortcuts, overlap inversion,
tag hoisting, color nesting optimizations, and others.

Owing to our work in certifying compilers (and apprehensive of the
warnings in the task description), we attempt to ensure correctness at
all costs. To do so, we run a semantic validator against the
intermediate expressions after each optimization pass. Rogue,
malfunctioning optimizations are disabled, and non-optimizations
(those passes that make the tree larger!) are ignored. Our program
spends most of its time verifying its own work. (try -unsafe
if curious)

Features of this program:

TWO intermediate languages (one linear and one nested).
TWO validators (one for each of the two intermediate languages).
A separate program FindFail, which finds small examples for
   which an optimization fails. (given a potentially huge, failing
   example)
A random SML/NG document generator.
Exciting status reports. (try -debug-driver)

 - Perry Cheng
   Tom Murphy
   Charlie Smart
   Dave Swasey
   Joe Vanderwaart
