Cogent: Uniqueness types and certifying compilation
Authors
School of Computer Science and Engineering
UNSW,
Sydney 2052, Australia
Abstract
This paper presents a framework aimed at significantly reducing the cost of proving functional correctness for low-level operating systems components. The framework is designed around a new functional programming language, Cogent. A central aspect of the language is its uniqueness type system, which eliminates the need for a trusted runtime or garbage collector while still guaranteeing memory safety, a crucial property for safety and security. Moreover, it allows us to assign two semantics to the language: The first semantics is imperative, suitable for efficient C code generation, and the second is purely functional, providing a user-friendly interface for equational reasoning and verification of higher-level correctness properties. The refinement theorem connecting the two semantics allows the compiler to produce a proof via translation validation certifying the correctness of the generated C code with respect to the semantics of the Cogent source program. We have demonstrated the effectiveness of our framework for implementation and for verification through two file system implementations.BibTeX Entry
@article{OConnor_CRJAKMSK_21,
author = {O’Connor, Liam and Chen, Zilin and Rizkallah, Christine and Jackson, Vincent and Amani, Sidney and
Klein, Gerwin and Murray, Toby and Sewell, Thomas and Keller, Gabriele},
doi = {10.1017/S095679682100023X},
journal = {Journal of Functional Programming},
paperurl = {https://trustworthy.systems/publications/papers/OConnor_CRJAKMSK_21.pdf},
publisher = {Cambridge University Press},
title = {{Cogent}: uniqueness types and certifying compilation},
volume = {31},
year = {2021}
}
Full text
BibTeX