FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Animating the formalised semantics of a Java-like language
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Code generation via higher-order rewrite systems
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
The isabelle collections framework
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Proof-producing synthesis of ML from higher-order logic
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
The new quickcheck for isabelle: random, exhaustive and symbolic testing under one roof
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Hi-index | 0.00 |
We present the Autoref tool for Isabelle/HOL, which automatically refines algorithms specified over abstract concepts like maps and sets to algorithms over concrete implementations like red-black-trees, and produces a refinement theorem. It is based on ideas borrowed from relational parametricity due to Reynolds and Wadler. The tool allows for rapid prototyping of verified, executable algorithms. Moreover, it can be configured to fine-tune the result to the user's needs. Our tool is able to automatically instantiate generic algorithms, which greatly simplifies the implementation of executable data structures. Thanks to its integration with the Isabelle Refinement Framework and the Isabelle Collection Framework, Autoref can be used as a backend to a stepwise refinement based development approach, having access to a rich library of verified data structures. We have evaluated the tool by synthesizing efficiently executable refinements for some complex algorithms, as well as by implementing a library of generic algorithms for maps and sets.