A straightforward implementation of natural deduction for first-order logic,
encompassing system NJ plus the rule of indirect proof.

Author: Frank Pfenning

The signature fol.elf is given in such a way that types can always be
synthesized and never need to be inherited.  This is not necessary,
only a certain style of definition.

fol.elf - first-order logic in natural deduction.

prolog.elf - a Prolog-like interpreter for a subset of first-order logic.
preds.elf - a few predicates to simplify examples.
proofs.elf - a modified interpret to construct proofs.
ptfm.elf - a translation from prolog execution traces to natural deductions.

nnf.elf - a program for conversion of a formula to negation normal form.
