I report on an experience using the Coq proof assistant to develop a program verification tool with a machine-checkable proof of full correctness. The verifier is able to prove memory safety of x86 machine code programs compiled from code that uses algebraic datatypes. The tool’s soundness theorem is expressed in terms of the bit-level semantics of x86 programs, so its correctness depends on very few assumptions. I take advantage of Coq’s support for programming with dependent types and modules in the structure of my development. The approach is based on developing a library of reusable functors for transforming a verifier at one level of abstraction into a verifier at a lower level. Using this library, it’s possible to prototype a verifier...
Abstract. Guaranteeing correctness of compilation is a major precondition for correct software. Code...
Abstract. A certified program analysis is an analysis whose implementation is accompanied by a check...
Guaranteeing correctness of compilation is a ma jor precondition for correct software. Code generati...
Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof...
Today’s software systems often use many different computation features and span different abstractio...
This paper reports on the development and formal certification (proof of semantic preservation) of a...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
Thesis (Ph.D.)--University of Washington, 2018Modern computer systems rely on the correctness of at ...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
We present a program verification framework based on coinduction, which makes it feasible to verif...
Compilers, and especially optimizing compilers, are complicated programs. Bugs in compilers happen, ...
For software development projects with very high correctness requirements (including safety requirem...
Machine-checked using Coq 8.6. Contents: Generic Utility Concepts Util: Notations for lists...
In this tool description paper we present a certifying code generation phase. Our code generation ph...
Guaranteeing correctness of compilation is a major precondition for correct software. Code generatio...
Abstract. Guaranteeing correctness of compilation is a major precondition for correct software. Code...
Abstract. A certified program analysis is an analysis whose implementation is accompanied by a check...
Guaranteeing correctness of compilation is a ma jor precondition for correct software. Code generati...
Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof...
Today’s software systems often use many different computation features and span different abstractio...
This paper reports on the development and formal certification (proof of semantic preservation) of a...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
Thesis (Ph.D.)--University of Washington, 2018Modern computer systems rely on the correctness of at ...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
We present a program verification framework based on coinduction, which makes it feasible to verif...
Compilers, and especially optimizing compilers, are complicated programs. Bugs in compilers happen, ...
For software development projects with very high correctness requirements (including safety requirem...
Machine-checked using Coq 8.6. Contents: Generic Utility Concepts Util: Notations for lists...
In this tool description paper we present a certifying code generation phase. Our code generation ph...
Guaranteeing correctness of compilation is a major precondition for correct software. Code generatio...
Abstract. Guaranteeing correctness of compilation is a major precondition for correct software. Code...
Abstract. A certified program analysis is an analysis whose implementation is accompanied by a check...
Guaranteeing correctness of compilation is a ma jor precondition for correct software. Code generati...