Terminating and Productive Functions
Abstraction is a cornerstone of programming a complex
software system. Without it, a complex software system is a complicated
software system. In this talk, an important abstraction tool is
considered: function totality. It covers termination and productivity.
If a supposedly terminating program is not total, it can lead to a
program crash or an infinite loop. Furthermore, a non-total program
that needs to run forever can end up in a deadlock. This talk covers
techniques for achieving function totality.