## IOS Press Automation for Dependently Typed Functional Programming

### BibTeX

@MISC{Wilson_iospress,

author = {Sean Wilson and Jacques Fleuriot and Alan Smaill},

title = {IOS Press Automation for Dependently Typed Functional Programming},

year = {}

}

### OpenURL

### Abstract

Abstract. Writing dependently typed functional programs that capture non-trivial program properties, such as those involving membership, ordering and non-linear arithmetic, is difficult in current system due to lack of proof automation. We identify and discuss proof patterns that occur when programming with dependent types and detail how the automation of such patterns allow us to work more comfortably with types, particularly subset types, that capture such program properties. We describe the application of rippling, both for inductive and non-inductive proofs, and generalisation in discharging proof obligations that arise when programming with dependent types. We then discuss an implementation of our ideas in Coq with examples of practical programs that capture useful properties. We demonstrate that our proof automation is generic in that it can provide support for working with theorems involving user-defined inductive data types and functions. Keywords:

### Citations

548 |
A computational logic
- Boyer, Moore
- 1979
(Show Context)
Citation Context ...hat output subset types (see Section 3.5). Unlike typical rippling proofs, our use of rippling is not restricted to the subgoals of inductive proofs. We also identify the importance of generalisation =-=[2, 4, 7]-=- in reasoning about dependently typed programs in Section 3.7. • In Section 4, we describe how we have provided automation for the proof patterns we identified. These tactics provide automation for pr... |

526 |
Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions
- Bertot, Castéran
- 2004
(Show Context)
Citation Context ... to rippling as knowledge of when rippling can be used to guide proofs will become important later. 2.1. Dependently Typed Programming in Coq Coq is a based on the Calculus of Inductive Constructions =-=[6]-=- (CIC), which is both a constructive logic and a dependently typed functional programming language. Terms reductions in CIC have the confluence and strong normalization properties. CIC has decidable t... |

336 | QuickCheck: a lightweight tool for random testing of Haskell programs
- Claessen, Hughes
- 2000
(Show Context)
Citation Context ...n subterm generalisation tactic. Assumptions that are not used in the conclusion or assumptions that do not contain variables used in the conclusion are removed as being irrelevant. A quickcheck-like =-=[11]-=- counterexample finder is used to identify overgeneralisations. This is also useful for identifying unprovable proof obligations, such as those generated from faulty programs. • The impossible case pa... |

131 |
The Oyster/Clam system
- Bundy, Harmelen, et al.
- 1990
(Show Context)
Citation Context ...s to avoid the need for manual theorem proving. Proofs that are written are typically performed using induction and, as such, rippling technology would be beneficial in these systems. The Oyster-Clam =-=[9]-=- and NuPRL [12] systems, which are based on Martin-Löf type theory [21], both provide rippling based automation tactics. However, rippling has not been used in these systems in the context of automati... |

47 |
Rippling: Meta-Level Guidance for Mathematical Reasoning
- Bundy, Basin, et al.
- 2005
(Show Context)
Citation Context ...scribe how these can be automated. Our focus is mainly on programming with subset types (see Section 2.1.2) and the automation of inductive proofs. • Of particular interest, we identify that rippling =-=[8]-=- can be used to guide the proofs required when defining recursive functions that output subset types (see Section 3.5). Unlike typical rippling proofs, our use of rippling is not restricted to the sub... |

16 |
Efficient functional implementation of FIFO queues
- Burton
- 1982
(Show Context)
Citation Context ...eneralisation. All proofs examined can be fully automated by our system. 5.1. Example: Queues as List Pairs An efficient way to represent a purely functional queue involves the use of a pair of lists =-=[10]-=-. The list pair ([f1; f2; ...;fn], [b1; b2; ...; bn]) represents the queue [f1; f2 ...; fn; bn; ...; b2; b1], where f1 is considered the front of the queue. We label the first and second list of the l... |

15 | ATS: A language that combines programming with theorem proving
- Cui, Donnelly, et al.
- 2005
(Show Context)
Citation Context ...5.1 for a difficult theorem involving reversing lists. 7. Related Work In this section, we review some related work on dependently typed functional programming and proof automation. The DML [31], ATS =-=[14]-=- and Sage [18] languages each provide some support for automating proofs that arise when programming with dependent types. Unlike Coq, DML [31] restricts the user to type indices that form linear arit... |

3 |
The AGDA Proof System Homepage
- Coquand
- 1998
(Show Context)
Citation Context ...m property at run-time using a dynamic check. This is a useful alternative for when the user is unable to provide a proof in cases where proof automation fails. The Cayenne [5], Epigram [23] and Agda =-=[13]-=- systems allow user-defined dependent types but provide little in the way of proof automation and proofs need to be written by the user for even trivial theorems. Programs in these languages tend to r... |

1 |
A.: Rippling in
- Adams, Dennis
- 2003
(Show Context)
Citation Context ...ut theory modules [20], there are no facilities for writing functional programs with dependent types. We are also aware that there were plans to bring rippling to PVS [25] for use in inductive proofs =-=[1]-=- but an implementation of this is yet to appear. Coq [22] comes with many tactics that are useful when discharging proof obligations. Several tactics are available that can solve/simplifyS. Wilson, J... |

1 |
Improvements in Formula Generalization., Automated Deduction - CADE-21
- Aderhold
(Show Context)
Citation Context ...hat output subset types (see Section 3.5). Unlike typical rippling proofs, our use of rippling is not restricted to the subgoals of inductive proofs. We also identify the importance of generalisation =-=[2, 4, 7]-=- in reasoning about dependently typed programs in Section 3.7. • In Section 4, we describe how we have provided automation for the proof patterns we identified. These tactics provide automation for pr... |

1 |
Mechanizing structural induction (formal system
- Aubin
- 1976
(Show Context)
Citation Context ...hat output subset types (see Section 3.5). Unlike typical rippling proofs, our use of rippling is not restricted to the subgoals of inductive proofs. We also identify the importance of generalisation =-=[2, 4, 7]-=- in reasoning about dependently typed programs in Section 3.7. • In Section 4, we describe how we have provided automation for the proof patterns we identified. These tactics provide automation for pr... |

1 |
Cayenne - a Language with Dependent
- Augustsson
- 1998
(Show Context)
Citation Context ...Sage can enforce the program property at run-time using a dynamic check. This is a useful alternative for when the user is unable to provide a proof in cases where proof automation fails. The Cayenne =-=[5]-=-, Epigram [23] and Agda [13] systems allow user-defined dependent types but provide little in the way of proof automation and proofs need to be written by the user for even trivial theorems. Programs ... |