A Mechanical Proof of the Unsolvability of the Halting Problem
Journal of the ACM (JACM)
The C programming language
The use of a formal simulator to verify a simple real time control program
Beauty is our business
A verified implementation of an applicative language with dynamic storage allocation
A verified implementation of an applicative language with dynamic storage allocation
FM8501: a verified microprocessor
FM8501: a verified microprocessor
Automated proofs of object code for a widely used microprocessor
Journal of the ACM (JACM)
Piton: a mechanically verified assembly-level language
Piton: a mechanically verified assembly-level language
Metamathematics, machines, and Go¨del's proof
Metamathematics, machines, and Go¨del's proof
A Mechanically Checked Proof of the AMD5K86TM Floating-Point Division Program
IEEE Transactions on Computers
Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Ivy: a preprocessor and proof checker for first-order logic
Computer-Aided reasoning
ACM Transactions on Programming Languages and Systems (TOPLAS)
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Single-Threaded Objects in ACL2
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Symbolic Simulation of the JEM1 Microprocessor
FMCAD '98 Proceedings of the Second International Conference on Formal Methods in Computer-Aided Design
Executable JVM model for analytical reasoning: a study
Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators
A verified operating system kernel
A verified operating system kernel
Trusting trusted hardware: towards a formal model for programmable secure coprocessors
WOEC'98 Proceedings of the 3rd conference on USENIX Workshop on Electronic Commerce - Volume 3
Hi-index | 0.00 |
In my view, the "verification problem" is the theorem proving problem, restricted to a computational logic. My approach is: adopt a functional programming language, build a general purpose formal reasoning engine around it, integrate it into a program and proof development environment, and apply it to model and verify a wide variety of computing artifacts, usually modeled operationally within the functional programming language. Everything done in this approach is software verification since the models are runnable programs in a subset of an ANSI standard programming language (Common Lisp). But this approach is of interest to proponents of other approaches (e.g., verification of procedural programs or synthesis) because of the nature of the mathematics of computing. I summarize the progress so far using this approach, sketch the key research challenges ahead and describe my vision of the role and shape of a useful verification system.