Theories of Programming: Top−Down and Bottom−Up and Meeting in the Middle - Hoare, C (1999)