Backhouse, R., & Hoogendijk, P. (1997). Elements of a Mathematical Theory of Program Construction.