Lessons from Formally Verified Deployed Software Systems (Extended version) (2301.02206v3)
Abstract: The technology of formal software verification has made spectacular advances, but how much does it actually benefit the development of practical software? Considerable disagreement remains about the practicality of building systems with mechanically-checked proofs of correctness. Is this prospect confined to a few expensive, life-critical projects, or can the idea be applied to a wide segment of the software industry? To help answer this question, the present survey examines a range of projects, in various application areas, that have produced formally verified systems and deployed them for actual use. It considers the technologies used, the form of verification applied, the results obtained, and the lessons that the software industry should draw regarding its ability to benefit from formal verification techniques and tools. Note: this version is the extended article, covering all the systems identified as relevant. A shorter version, covering only a selection, is also available.
- Matlab Stateflow User Guide. http://www.mathworks.com/products/stateflow/
- Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System (2021), https://www.cs.cmu.edu/~jyang2/talks/pldi2010_verve.pdf
- Isolate security-critical applications on zynq ultrascale+ devices. Tech. rep., XLINX (2020)
- Armv7-a architecture reference manual (2021), http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c
- Authority, C.A.: SW01—Regulatory objectives for software safety assurance in ATS equipment in part B (generic requirements and guidance) of CAP670—Air traffic services safety requirements (2001)
- Barnes, J.G.P.: High integrity software: the spark approach to safety and security: sample chapters. Pearson Education (2003)
- CakeML repository (2021), https://github.com/CakeML/cakeml
- Anatomy of the cloudant dbaas (2021), https://www.ibm.com/cloud/cloudant
- Common vulnerabilities and exposures (2019), http://cve.mitre.org/
- List of companies using formal verification methods in soft. eng. (2021), https://github.com/ligurio/practical-fm
- CompCert Webpage (2021), https://compcert.org/
- Coq Proof Assistant (2021), https://coq.inria.fr/
- Flover: A certificate checker for roundoff error bounds (2021), https://gitlab.mpi-sws.org/AVA/FloVer
- Gernot Heiser: The seL4 microkernel - an introduction. Tech. rep., The seL4 Foundation (2020)
- Hacl*: A high-assurance cryptographic library (2021), https://github.com/project-everest/hacl-star
- HOL interactive theorem prover (2021), https://hol-theorem-prover.org/
- Isabelle (2021), https://isabelle.in.tum.de/
- Cloudflare reverse proxies are dumping uninitialized memory (2017), https://bugs.chromium.org/p/project-zero/issues/detail?id=1139
- Klein, G.: Proof engineering considered essential. In: Int. Symp. on Formal Methods. pp. 16–21. Springer (2014)
- Leino, K.R.M.: This is Boogie 2. Manuscript KRML (2008)
- Leino, K.R.M.: Dafny: An automatic program verifier for functional correctness. In: Int. Conf. on Logic for Programming Artificial Intelligence and Reasoning. pp. 348–370. Springer (2010)
- Lescuyer, S.: ProvenCore: Towards a verified isolation micro-kernel. In: MILS@ HiPEAC (2015)
- Letouzey, P.: A new extraction for Coq. In: Int. Work. on Types for Proofs and Programs. pp. 200–219. Springer (2002)
- Lmbench - tools for performance analysis (2013), http://lmbench.sourceforge.net/
- mCertiKOS Hypervisor (2021), https://flint.cs.yale.edu/certikos/mcertikos.html#mcertikos
- Metamath zero (2021), https://github.com/digama0/mm0
- Myreen, M.O.: A minimalistic verified bootstrapped compiler (proof pearl). In: Int. Conf. on Certified Programs and Proofs. pp. 32–45. ACM (2021)
- How technology is transforming air traffic management (2013), https://nats.aero/blog/2013/07/how-technology-is-transforming-air-traffic-management/
- Provenrun website (2021), https://www.provenrun.com/
- Quark: A web browser with a formally verified kernel (2021), https://github.com/Conservatory/quark
- Formally Verified Systems Questionnaire (2021), https://bit.ly/2LMxbZB
- s2n github repository (2021), https://github.com/aws/s2n-tls
- Simulink (2021), https://www.mathworks.com/products/simulink.html
- Travis ci official website (2021), https://www.travis-ci.com/
- Trustzone (2021), http://www.arm.com/products/processors/technologies/trustzone/index.php
- Wikipedia: Common Criteria (2022), https://en.wikipedia.org/wiki/Common_Criteria
- Wikipedia: Kernel (operating system) (2022), https://en.wikipedia.org/wiki/Kernel_(operating_system)
- Wikipedia: L4 microkernel family (2022), https://en.wikipedia.org/wiki/L4_microkernel_family
- Wikipedia: Principle of least privilege (2022), https://en.wikipedia.org/wiki/Principle_of_least_privilege