Web Interface for CASS

Productivity analysis

This analysis computes some information about the termination or productivity of an operation.

An operation is considered as being productive if it cannot perform an infinite number of steps without producing outermost constructors.

This analysis assigns to an operation an abstract value indicating whether the function is terminating, looping, or productive. In the latter case, the abstract value contains the top-level calls, i.e., operations that are called at the top-level without an outermost constructor.

For instance, consider the operations

loop = id loop
ones = 1 : ones

loop is classified as looping whereas ones is productive.