ESP: path-sensitive program verification in polynomial time
An axiomatic basis for computer programming