This is an implementation of MiniML, agreeing with the forthcoming report
cited below.
Authors: Spiro Michaylov and Frank Pfenning

    Spiro Michaylov and Frank Pfenning. Natural
    semantics and some of its meta-theory in Elf. In
    Lars Halln"as, editor, Extensions of Logic
    Programming. Springer-Verlag LNCS. To appear. A
    preliminary version is available as Technical
    Report MPI--I--91--211, Max-Planck-Institute for
    Computer Science, Saarbr"ucken, Germany, August
    1991.


The file "modules.txt" contains a version using the (hypothetical) Elf module
calculus.  Not all signatures have thus been translated.  This may be out of
date, since it is not loadable.

WARNING: loading some of the verification code currently generates warnings.
	 Elf is correct: the code is underspecified---this illustrates the
	 sort of problems which can arise from underspecification.

WARNING: the code for the subject reduction theorem
	 currently (Thu Aug 20 15:19:09 1992) contains a bug!
	 A fix has been implemented in the Computation & Deduction
	 course notes, but needs to be translated into this notation.
	 An example which exhibits the bug (which is in sbst_let)
	 is

 ?- sigma [P:   of (let (lam [x] x) ([f] let (app f f) ([g] app g g))) T]
    sigma [D:neval (let (lam [x] x) ([f] let (app f f) ([g] app g g))) V]
    sr D P Q.
 no

The file "load.sml" contains some examples at the end.
A short sample transcript:

==================================================
- use "load.sml";
  ... defines functions load and loadall ...
- load ();
  ... loads the core of the examples ...
- top ();
?- neval (app (app (lam [x] (lam [y] (app x y))) pred) (app s z)) V.

V <- z .

Query <-
 neval_app_lam (neval_app_preds (neval_app_s neval_z neval_s) neval_pred)
   (neval_app_s neval_z neval_s) (neval_app_lam neval_lam neval_pred neval_lam) .
;
no more solutions
?- ^Dval it = () : unit
-
==================================================
