Web Interface for CASS

Termination analysis

This analysis assigns True to an operation f if all its evaluations on ground argument terms are finite.

The current method used in this analysis is quite simple. It checks whether the arguments in all recursive calls of an operation are smaller than the arguments passed to the operation. Indirect calls are not considered. Therefore, the operation

length []     = 0
length (x:xs) = 1 + length xs

is classified as terminating, whereas the semantically equivalent operation

length []     = 0
length (x:xs) = incLength xs

incLength xs = 1 + length xs

is classified as possibly non-terminating.

Operations containing free variables in their definitions are also classified as possibly non-terminating since a free variable might reduce to arbitrarily large constructor terms (in case of recursive data types).