Summary: foetus - Termination Checker for Simple
July 16, 1998
We introduce a simple functional language foetus (lambda calculus
with tuples, constructors and pattern matching) supplied with a ter-
mination checker. This checker tries to find a well-founded structural
order on the parameters on the given function to prove termination.
The components of the check algorithm are: function call extraction
out of the program text, call graph completion and finding a lexical
order for the function parameters. The HTML version of this paper
contains many ready-to-run Web-based examples.
Since the very beginning of informatics the problem of termination has been
of special interest, for it is part of the problem of program verification for in-
stance. Because the halting problem is undecidable, there is no method that
can prove or disprove termination of all programs, but for several systems
termination checkers have been developed. We have focused on functional
programs and designed the simple language foetus1