Verification Techniques for Low-Level Programs
Samuel D. Pollard
Committee: Boyana Norris (chair), Hank Childs, Zena Ariola
Area Exam(Feb 2019)
Keywords: Formal Methods; Floats; Floating Point Arithmetic; Computer Arithmetic; Verification; Specification

We explore the application of highly expressive logical and automated reasoning techniques to the analysis of computer programs. We begin with an introduction to formal methods by describing different approaches and the strength of the properties they can guarantee. These range from static analyzers, SMT solvers, deductive program provers, and proof assistants. We then explore applications of formal methods to the analysis of intermediate representations, verification of floating point arithmetic, and fine-grained parallelism such as vectorization. Throughout, we focus on verification techniques applied to programs written at the lowest level of abstraction including binary, bytecode, and assembly languages.