An Introduction to Programming and Proving with Dependent Types in Coq

Computer proof assistants vary along many dimensions. Among the mature implementations, the Coq system is distinguished by two key features. First, we have support for programming with dependent types in the tradition of type theory, based on dependent function types and inductive type families. Sec...

Full description

Bibliographic Details
Main Author: Adam Chlipala
Format: Article
Language:English
Published: University of Bologna 2010-01-01
Series:Journal of Formalized Reasoning
Online Access:http://jfr.cib.unibo.it/article/view/1978/1354
Description
Summary:Computer proof assistants vary along many dimensions. Among the mature implementations, the Coq system is distinguished by two key features. First, we have support for programming with dependent types in the tradition of type theory, based on dependent function types and inductive type families. Second, we have a domain-specific language for coding correct-by-construction proof automation. Though the Coq user community has grown quite large, neither of the aspects I highlight is widely used. In this tutorial, I aim to provide a pragmatic introduction to both, showing how they can bring significant improvements in productivity.
ISSN:1972-5787