The size-change analyzer is a prototype termination analyzer for first-order functional programs, based on Lee, Jones and Ben-Amram's paper at the international conference on Principles of Programming Languages in 2001. It is due to Carl C. Frederiksen. Jones, Lee and Frederiksen are participants of the DAEDALUS project at DIKU.
The size-change termination analysis has been developed as part of a wider effort to implement common "progress" reasoning efficiently. DIKU's participation in DAEDALUS is to study termination analysis as a first step towards the long-term goal of liveness analysis for infinite state systems, applied to the accessibility and responsiveness of concurrent and distributed programs (with dynamic migrating processes).
A program satisfies size-change termination (SCT) if every infinite function-call sequence that respects program control flow would give rise to some "bad" dataflow, specifically, an infinite sequence of parameter values whose sizes decrease infinitely.
Algorithmically:
If SCT is satisfied, the program is definitely terminating (for all inputs and all functions), else it is not known whether the program is terminating.
Test suites are available on the analyzer webpage. They show the generality of the size-change reasoning. For example, indirect recursion, lexical descent and functions that permute their arguments are handled automatically.