Software Open Access
Zilin Chen;
Christine Rizkallah;
Liam O'Connor;
Partha Susarla;
Gerwin Klein;
Gernot Heiser;
Gabriele Keller
Property-based testing (PBT) is a powerful tool that is widely available in many modern programming languages. It has been used to reduce the effort required for formal software verification. We demonstrate how PBT can be used in conjunction with formal verification to incrementally gain greater assurance in code correctness by integrating PBT into the verification framework of Cogent—a programming language equipped with a certifying compiler for developing high-assurance systems components. Specifically, for PBT and formal verification to work in tandem, we structure the tests in a fashion that mirrors the refinement infrastructure that is often used in formal verification: the behaviour of the system under test is modelled by a functional correctness specification, which mimics that of the formal proof, and we test the refinement relation between the implementation and the specification. We exhibit the additional benefits that this mutualism brings to developers and demonstrate the techniques we used in this style of PBT, by studying two concrete examples.
Name | Size | |
---|---|---|
artefact-README.md
md5:c3f28c51c728c732dc24a3017eb0e7fa |
7.3 kB | Download |
Cogent VM.ova
md5:60e56e3f46afcf90693d5ebbb93e8b3c |
4.4 GB | Download |
All versions | This version | |
---|---|---|
Views | 215 | 169 |
Downloads | 13 | 2 |
Data volume | 26.6 GB | 14.6 kB |
Unique views | 181 | 158 |
Unique downloads | 8 | 2 |