Lambda is a program for solving lambda definability problems of order
at most two.

The Lambda distribution consists of:

* The PDF for the paper "Mechanizing Logical Relations", by Alley
Stoughton, which describes the theory on which Lambda is based and
explains what the program does.  This paper appears in the proceedings
of the Ninth International Conference on the Mathematical Foundations
of Programming Semantics, Lecture Notes in Computer Science, vol. 802,
pp. 359-377, Springer-Verlag, 1994.  The paper's abstract is:

  We give an algorithm for deciding whether there exists a definable
  element of a finite model of an applied typed lambda calculus that
  passes certain tests, in the special case when all the constants and
  test arguments are of order at most one.  When there is such an
  element, the algorithm outputs a term that passes the tests;
  otherwise, the algorithm outputs a logical relation that demonstrates
  the nonexistence of such an element.  Several example applications of
  the C implementation of this algorithm are considered.

* A short manual page describing Lambda.

* The implementation of Lambda.  Lambda is written in ANSI C, with the
exception of its lexical analyzer and parser, which are written in Lex
(Flex) and Yacc (Bison) source, respectively.  It uses one UNIX System
V system call.  The C programs that it generates also conform to the
ANSI standard; they use several UNIX System V system calls in order to
implement checkpointing.  The makefile that is included with the
distribution is set up to use GCC, the GNU C Compiler, but can be
easily changed to use another ANSI C Compiler.  Also, the makefile is
set up to use Flex and Bison, but can be easily changed to use Lex and
Yacc instead.

* A number of example lambda definability problems, together with
their solutions.

------------------------------------------------------------------------------

Comments and reports of problems should be e-mailed to
Alley.Stoughton@gmail.com.
