Programming from specifications (2nd ed.)