Kanabar, Hrutvik, Vivien, Samuel, Abrahamsson, Oskar, Myreen, Magnus O., Norrish, Michael, Pohjola, Johannes Åman, Zanetti, Riccardo (2023) PureCake: A verified compiler for a lazy functional language. Proceedings of the ACM on Programming Languages, 7 (PLDI). pp. 952-976. E-ISSN 2475-1421. (doi:10.1145/3591259) (KAR id:101697)
PDF
Publisher pdf
Language: English
This work is licensed under a Creative Commons Attribution 4.0 International License.
|
|
Download this file (PDF/374kB) |
Preview |
Request a format suitable for use with assistive technology e.g. a screenreader | |
Official URL: https://doi.org/10.1145/3591259 |
Abstract
We present PureCake, a mechanically-verified compiler for PureLang, a lazy, purely functional programming language with monadic effects. PureLang syntax is Haskell-like and indentation-sensitive, and its constraint-based Hindley-Milner type system guarantees safe execution. We derive sound equational reasoning principles over its operational semantics, dramatically simplifying some proofs. We prove end-to-end correctness for the compilation of PureLang down to machine code---the first such result for any lazy language---by targeting CakeML and composing with its verified compiler. Multiple optimisation passes are necessary to handle realistic lazy idioms effectively. We develop PureCake entirely within the HOL4 interactive theorem prover.
Item Type: | Article |
---|---|
DOI/Identification number: | 10.1145/3591259 |
Uncontrolled keywords: | safety, risk, reliability and quality; Software; compiler verification, Haskell, interactive theorem proving, HOL4 |
Subjects: | Q Science > QA Mathematics (inc Computing science) |
Divisions: | Divisions > Division of Computing, Engineering and Mathematical Sciences > School of Computing |
SWORD Depositor: | JISC Publications Router |
Depositing User: | JISC Publications Router |
Date Deposited: | 11 Aug 2023 14:17 UTC |
Last Modified: | 05 Nov 2024 13:07 UTC |
Resource URI: | https://kar.kent.ac.uk/id/eprint/101697 (The current URI for this page, for reference purposes) |
- Link to SensusAccess
- Export to:
- RefWorks
- EPrints3 XML
- BibTeX
- CSV
- Depositors only (login required):