A Practical Theory of Programming

Programs are predicates, programming is proving, and termination is timing.