The use of machines to assist in rigorous proof
Proc. of a discussion meeting of the Royal Society of London on Mathematical logic and programming languages
Verifying the unification algorithm in LCF
Science of Computer Programming - Ellis Horwood series in artificial intelligence
Logic for problem-solving
Information and Computation - Semantics of Data Types
Software testing techniques (2nd ed.)
Software testing techniques (2nd ed.)
A framework for defining logics
Journal of the ACM (JACM)
Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
Designing programs that check their work
Journal of the ACM (JACM)
Safe kernel extensions without run-time checking
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
A case study in model checking software systems
Science of Computer Programming - Special issue: on formal specifications: foundations, methods, tools and applications: selected papers from the FMTA '95 conference (29–31 May 1995, Konstancin n. Warsaw, Poland)
Software reliability via run-time result-checking
Journal of the ACM (JACM)
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Term rewriting and all that
An Efficient Unification Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Distributed Algorithms
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Certification of Compiler Optimizations using Kleene Algebra with Tests
Certification of Compiler Optimizations using Kleene Algebra with Tests
Denotational proof languages
Generating structurally complex tests from declarative constraints
Generating structurally complex tests from declarative constraints
CMC: a pragmatic approach to model checking real code
OSDI '02 Proceedings of the 5th symposium on Operating systems design and implementationCopyright restrictions prevent ACM from being able to make the PDFs for this conference available for downloading
Hi-index | 0.00 |
This paper introduces a notion of certified computation whereby an algorithm not only produces a result r for a given input x, but also proves that r is a correct result for x. This can greatly enhance the credibility of the result: if we trust the axioms and inference rules that are used in the proof, then we can be assured that r is correct. Typically, the reasoning used in a certified computation is much simpler than the computation itself. We present and analyze two examples of certifying algorithms. We have developed denotational proof languages (DPLs) as a uniform platform for certified computation. DPLs integrate computation and deduction seamlessly, offer strong soundness guarantees, and provide versatile mechanisms for constructing proofs and proof-search methods. We have used DPLs to implement numerous well-known algorithms as certifiers, ranging from sorting algorithms to compiler optimizations, the Hindley-Milner W algorithm, Prolog engines, and more.