Program Verification in the Presence of I/O: Semantics, Verified Library Routines, and Verified Applications
Paper i proceeding, 2018

Software verification tools that build machine-checked proofs of functional correctness usually focus on the algorithmic content of the code. Their proofs are not grounded in a formal semantic model of the environment that the program runs in, or the program’s interaction with that environment. As a result, several layers of translation and wrapper code must be trusted. In contrast, the CakeML project focuses on end-to-end verification to replace this trusted code with verified code in a cost-effective manner. In this paper, we present infrastructure for developing and verifying impure functional programs with I/O and imperative file handling. Specifically, we extend CakeML with a low-level model of file I/O, and verify a high-level file I/O library in terms of the model. We use this library to develop and verify several Unix-style command-line utilities: cat, sort, grep, diff and patch. The workflow we present is built around the HOL4 theorem prover, and therefore all our results have machine-checked proofs.


Hugo Férée

University Of Kent

Johannes Åman Pohjola

Commonwealth Scientific and Industrial Research Organisation (CSIRO)

Chalmers, Data- och informationsteknik, Formella metoder

R. Kumar

Commonwealth Scientific and Industrial Research Organisation (CSIRO)


S. Owens

University Of Kent

Magnus Myreen

Chalmers, Data- och informationsteknik, Formella metoder

Son Ho

École polytechnique

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

03029743 (ISSN) 16113349 (eISSN)

Vol. 11294 88-111
978-303003591-4 (ISBN)

10th International Working Conference on Verified Software: Theories, Tools, and Experiments, VSTTE 2018
Oxford, United Kingdom,


Inbäddad systemteknik

Datavetenskap (datalogi)




Mer information

Senast uppdaterat