Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
CADE-10 Proceedings of the tenth international conference on Automated deduction
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Higher-Order Annotated Terms for Proof Search
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
Instantiation of Existentially Quantified Variables in Inductive Specification Proofs
AISC '98 Proceedings of the International Conference on Artificial Intelligence and Symbolic Computation
CADE-17 Proceedings of the 17th International Conference on Automated Deduction
Mechanizing structural induction (formal system)
Mechanizing structural induction (formal system)
Journal of Functional Programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Rippling: meta-level guidance for mathematical reasoning
Rippling: meta-level guidance for mathematical reasoning
Program-ing finger trees in Coq
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Improvements in Formula Generalization
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
A tactic language for the system Coq
LPAR'00 Proceedings of the 7th international conference on Logic for programming and automated reasoning
TYPES'06 Proceedings of the 2006 international conference on Types for proofs and programs
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
System description: ATS: a language that combines programming with theorem proving
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
Case-Analysis for rippling and inductive proof
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Hi-index | 0.00 |
Writing dependently typed functional programs that capture non-trivial program properties is difficult in current systems due to lack of proof automation. We identify proof patterns that occur when programming with dependent types and detail how automating such patterns allow us to work more comfortably with types that capture, for example, membership, ordering and non-linear arithmetic properties. We describe the role of the rippling heuristic, both for inductive and non-inductive proofs, and generalisation in providing such automation. We then discuss an implementation of our ideas in Coq with practical examples of dependently typed programs, that capture useful program properties, which can be verified automatically. We demonstrate that our proof automation is generic in that it can provide support for working with theorems involving user-defined functions and inductive data types. This research was supported by an EPSRC DTA studentship and EPSRC Grant EP/E005713/1.