Logical construction of programs by Warnier