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

0302-9743 (ISSN)

Vol. 11294 88-111

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