Verified Calculations

@inproceedings{Leino2013VerifiedC,
  title={Verified Calculations},
  author={K. Rustan M. Leino and Nadia Polikarpova},
  booktitle={VSTTE},
  year={2013}
}
Calculational proofs--proofs by stepwise formula manipulation--are praised for their rigor, readability, and elegance. [...] Key Result The examples show that calculational proofs in Dafny compare favorably, in terms of readability and conciseness, with arguments written in other styles and proof languages.Expand
Automating Theorem Proving with SMT
TLDR
To show that proof tools rooted in SMT are growing up, this paper presents a series of examples that illustrate how theorems are expressed and proved using the SMT-based program verifier Dafny.
Automated Theorem Prover Assisted Program Calculations
TLDR
An automated theorem provers assisted program and formula transformation rules, which when coupled with the ability to extract context of a subformula, help in shortening and simplifying the derivations.
Untangling mechanized proofs
TLDR
A compiler that interleaves Coq’s output with the original proof script to produce interactive webpages that are complete, self-contained presentations of Coq proofs; and a new literate programming toolkit that allows authors to switch seamlessly between prose- and code-oriented views of the same sources, by translating back and forth between reStructuredText documents and literate Coq source files.
Theorem proving for all: equational reasoning in liquid Haskell (functional pearl)
TLDR
Concretely, this article shows how the equational proofs and derivations from Graham's textbook can be recast as proofs in Haskell (spoiler: they look essentially the same).
Theorem proving for all: equational reasoning in liquid Haskell (functional pearl)
TLDR
Concretely, this article shows how the equational proofs and derivations from Graham's textbook can be recast as proofs in Haskell (spoiler: they look essentially the same).
Functional Pearl: Theorem Proving for All (Equational Reasoning in Liquid Haskell)
TLDR
Concretely, this article shows how the equational proofs and derivations from Graham's textbook can be recast as proofs in Haskell (spoiler: they look essentially the same).
Refinement reflection: complete verification with SMT
TLDR
Refinement Reflection is introduced, a new framework for building SMT-based deductive verifiers, and a proof-search algorithm called Proof by Logical Evaluation that uses techniques from model checking and abstract interpretation, to completely automate equational reasoning.
Towards Verified Handwritten Calculational Proofs - (Short Paper)
TLDR
This paper presents the implementation of a proof-of-concept prototype that can formally verify handwritten calculational proofs without the need to learn the specific syntax of theorem provers.
Refinement Reflection (or, how to turn your favorite language into a proof assistant using SMT)
TLDR
The approach is implemented in the Liquid Haskell system, thereby converting Haskell into an interactive proof assistant that is used to verify a variety of properties ranging from arithmetic properties of higher order, recursive functions to the Monoid, Applicative, Functor and Monad type class laws.
Some Ideas for Program Verifier Tactics
TLDR
This work develops "tactics" as a form of program refactoring called DTacs, which enables users to encode common proof patterns as special programs called "tACTics" in an interactive theorem prover.
...
1
2
3
...

References

SHOWING 1-10 OF 51 REFERENCES
Dafny: An Automatic Program Verifier for Functional Correctness
TLDR
A tour of the language and verifier Dafny, which has been used to verify the functional correctness of a number of challenging pointer-based programs, is given and the full functional specification of the Schorr-Waite algorithm is shown.
Automating Induction with an SMT Solver
TLDR
A surprisingly simple tactic that has shown to be useful in verifying simple inductive theorems, like those that can occur during program verification, is shown.
The VeriFast program verifier
TLDR
A separation-logic-based approach for the specification and verification of safety properties of pointer-manipulating imperative programs and an algorithm is described that prevents non-termination of the SMT solver while enabling reduction of any ground term.
Calculational Reasoning Revisited (An Isabelle/Isar Experience)
TLDR
Calculational reasoning within Isabelle/Isar provides a framework for high-level natural deduction proofs that may be written in a human-readable fashion, resulting in many useful proof patterns.
VeriFast: Imperative Programs as Proofs
TLDR
The VeriFast prototype program verification tool is described, which implements a separation-logic-based approach for the specification and verification of safety properties of pointer-manipulating imperative programs.
Structured calculational proof
We propose a new format for writing proofs, calledstructured calculational proof. The format resembles the calculational style already familiar to many computer scientists, but extends it to allow
On the desirability of mechanizing calculational proofs
Abstract Dijkstra argues that calculational proofs are preferable to traditional pictorial and/or verbal proofs. First, due to the calculational proof format, incorrect proofs are less likely.
Interfacing Program Construction and Verification
TLDR
PVS (Prototype Verification System) is a theorem checker developed at SRI that has been extensively used for verifying software, in particular in safety-critical applications and this paper describes how these two systems have been combined into one.
Zeno: An Automated Prover for Properties of Recursive Data Structures
Zeno is a new tool for the automatic generation of proofs of simple properties of functions over recursively defined data structures. It takes a Haskell program and an assertion as its goal and tries
A Modular Integration of SAT/SMT Solvers to Coq through Proof Witnesses
TLDR
A way to enjoy the power of SAT and SMT provers in Coq without compromising soundness is presented, conceived in a modular way, in order to tame the proofs' complexity and to be extendable.
...
1
2
3
4
5
...