Automation for Dependently Typed Functional Programming

  • Authors:
  • Sean Wilson;Jacques Fleuriot;Alan Smaill

  • Affiliations:
  • (Correspd.) School of Informatics, The University of Edinburgh, Informatics Forum, 10 Crichton Street, Edinburgh EH8 9AB, United Kingdom. {sean.wilson, jacques.fleuriot, a.smaill}@ed.ac.uk;School of Informatics, The University of Edinburgh, Informatics Forum, 10 Crichton Street, Edinburgh EH8 9AB, United Kingdom. {sean.wilson, jacques.fleuriot, a.smaill}@ed.ac.uk;School of Informatics, The University of Edinburgh, Informatics Forum, 10 Crichton Street, Edinburgh EH8 9AB, United Kingdom. {sean.wilson, jacques.fleuriot, a.smaill}@ed.ac.uk

  • Venue:
  • Fundamenta Informaticae - Dependently Typed Programming
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.