Formal Verification of Machine-Code Programs (Distinguished Dissertation)

Price 66.54 - 75.24 USD

EAN/UPC/ISBN Code 9781906124816


Formal program verification provides mathematical methods to increase the assurance of software correctness. Most approaches are either fully automatic and prove only weak properties, or, alternatively, are manual and labour-intensive; few target realistically modelled machine code. The work presented in this dissertation aims to ease the effort required in proving properties of programs on top of detailed models of machine code. The contributions are novel methods for both the verification of existing programs and for automatically constructing correct code. For verification, the problem is reduced, via fully-automatic deduction, to proving properties of recursive functions. For program construction, a compiler maps mathematical functions, via proof, down to multiple carefully modelled commercial machine languages. As a case study in combining bottom-up verification and top-down compilation, formally verified ARM, x86 and PowerPC machine code implementations of a LISP interpreter were created. The automation and proofs have been implemented in the HOL4 theorem prover using specifications of instructions based on machine-code Hoare triples derived mechanically from processor architecture models.