Tuples, functions, ghost functions and higher order functions

Software verification depends on clearly specified functions with well defined properties. Functions can be objects by themselves, i.e. they should be first class values.

Tuples can be used to treat functions with zero, one or more arguments and one or more return values uniformly. The article Tuples and functions demonstrate the versatility of tuples.

Functions might be computable or not computable. Clearly, in actual computations only computable functions can be used. However on the assertions level (when one reasons about computations) not computable functions are a powerful tool (as long as the functions are well defined). Ghost functions can be defined to fill this gap.

Higher order functions (i.e. functions that take functions as arguments and/or return functions as values) are standard in functional programming style. Higher order functions help to reason about software and can structure the assertions needed.

The article Ghost functions and higher order functions describes the basic concepts.