abstract interpretation alan turing alonzo church axiomatic semantics coverity decision problem denotational semantics documentation generator dynamic program analysis formal methods formal semantics of programming languages formal verification halting problem hardware hoare logic java modeling language klocwork list of tools for static code analysis model checking operational semantics podcast program comprehension reverse engineering software metric software testing source code static analysis symbolic program analysis