QED at Large: A Survey of Engineering of Formally Verified Software

03/13/2020
by   Talia Ringer, et al.
0

Development of formal proofs of correctness of programs can increase actual and perceived reliability and facilitate better understanding of program specifications and their underlying assumptions. Tools supporting such development have been available for over 40 years, but have only recently seen wide practical use. Projects based on construction of machine-checked formal proofs are now reaching an unprecedented scale, comparable to large software projects, which leads to new challenges in proof development and maintenance. Despite its increasing importance, the field of proof engineering is seldom considered in its own right; related theories, techniques, and tools span many fields and venues. This survey of the literature presents a holistic understanding of proof engineering for program correctness, covering impact in practice, foundations, proof automation, proof organization, and practical proof development.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/05/2023

Lessons from Formally Verified Deployed Software Systems

The technology of formal software verification has made spectacular adva...
research
04/01/2021

A Multipurpose Formal RISC-V Specification

RISC-V is a relatively new, open instruction set architecture with a mat...
research
07/17/2019

Generating Correctness Proofs with Neural Networks

Foundational verification allows programmers to build software which has...
research
08/31/2019

VST-A: A Foundationally Sound Annotation Verifier

An interactive program verification tool usually requires users to write...
research
03/18/2022

Reliably Reproducing Machine-Checked Proofs with the Coq Platform

The Coq Platform is a continuously developed distribution of the Coq pro...
research
08/21/2022

A Failed Proof Can Yield a Useful Test

A successful automated program proof is, in software verification, the u...
research
09/06/2019

ArduCode: Predictive Framework for Automation Engineering

Automation engineering is the task of integrating, via software, various...

Please sign up or login with your details

Forgot password? Click here to reset