Edinburgh Research Explorer

Automation for Dependently Typed Functional Programming

Research output: Contribution to journalArticle

Original languageEnglish
Pages (from-to)209-228
Number of pages20
JournalFundamenta Informaticae
Issue number2
Publication statusPublished - 1 Jan 2010


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.

ID: 725691