Error-Free Software: Know-How and Know-Why of Program Correctness (Wiley Series in Software Engineering Practice)