programs differ in how they terminate

1 - base version; termination by quiescence (or timeout (hack))
2 - termination by checking width of remaining computation
    (susceptible to roundoff error)
3 - similar to 2, but no roundoff error (assuming reasonable number of
    pieces)
4 - using extra messages to synchronize

the other tests can be deleted; (I believe) they just illustrate bad
things that can occur when run out of memory.
(However, those symptoms should be recorded somewhere in a list of
debugging hints.)

memory
resolve
resolve2
