Rigorous software development : an introduction to program verification - Almeida, Jose Bacelar (Undergraduate topics in computer science, 2011)