Program Construction - Calucating Implementations from Specifications by Roland C. Backhouse