Hostname: page-component-5db58dd55d-688nx Total loading time: 0 Render date: 2026-06-14T22:08:26.373Z Has data issue: false hasContentIssue false

Cogent: uniqueness types and certifying compilation

Published online by Cambridge University Press:  27 October 2021

LIAM O’CONNOR
Affiliation:
School of Informatics, University of Edinburgh, UK (e-mail: l.oconnor@ed.ac.uk)
ZILIN CHEN
Affiliation:
School of Computer Science and Engineering, UNSW Sydney, Australia (e-mail: zilin.chen@student.unsw.edu.au)
CHRISTINE RIZKALLAH
Affiliation:
School of Computer Science and Engineering, UNSW Sydney, Australia (e-mail: c.rizkallah@unsw.edu.au)
VINCENT JACKSON
Affiliation:
School of Computer Science and Engineering, UNSW Sydney, Australia (e-mail: v.jackson@unsw.edu.au)
SIDNEY AMANI
Affiliation:
Canva, Sydney NSW, Australia (e-mail: sidney.amani@gmail.com)
GERWIN KLEIN
Affiliation:
School of Computer Science and Engineering, UNSW Sydney, Australia Proofcraft, Kensington, Australia (e-mail: kleing@cse.unsw.edu.au)
TOBY MURRAY
Affiliation:
School of Computing and Information Systems, University of Melbourne, Australia (e-mail: toby.murray@unimelb.edu.au)
THOMAS SEWELL
Affiliation:
Department of Computer Science and Technology, University of Cambridge, UK (e-mail: tals4@cam.ac.uk)
GABRIELE KELLER
Affiliation:
Department of Information and Computing Sciences, Utrecht University, Utrecht, The Netherlands (e-mail: g.k.keller@uu.nl)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

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.

Information

Type
Research Article
Creative Commons
Creative Common License - CCCreative Common License - BY
This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence (https://creativecommons.org/licenses/by/4.0/), which permits unrestricted re-use, distribution, and reproduction in any medium, provided the original work is properly cited.
Copyright
© The Author(s), 2021. Published by Cambridge University Press
Submit a response

Discussions

No Discussions have been published for this article.