## General Terms

### BibTeX

@MISC{Bove_generalterms,

author = {Ana Bove and Peter Dybjer and Andrés Sicard-ramírez},

title = {General Terms},

year = {}

}

### OpenURL

### Abstract

We propose a new way to reason about general recursive functional programs in the dependently typed programming language Agda, which is based on Martin-Löf’s intuitionistic type theory. We show how to embed an external programming logic, Aczel’s Logical Theory of Constructions (LTC) inside Agda. To this end we postulate the existence of a domain of untyped functional programs and the conversion rules for these programs. Furthermore, we represent the inductive notions in LTC (intuitionistic predicate logic and totality predicates) as inductive notions in Agda. To illustrate our approach we specify an LTC-style logic for PCF, and show how to prove the termination and correctness of a general recursive algorithm for computing the greatest common divisor of two numbers. Categories and Subject Descriptors F.3.1 [Logics and meanings of programs]: Specifying and Verifying and Reasoning about Programs–Logics of programs; D.2.4 [Software Engineering]:

### Citations

397 |
LCF considered as a programming language
- Plotkin
- 1977
(Show Context)
Citation Context ...o verify “real” functional programs (e g written in Haskell), we explain our approach in a simple setting. For the time being, we limit our discussion to the core functional programming language PCF (=-=Plotkin 1997-=-), present the rules of an LTC-style logic for PCF, and show how to verify a general recursive PCF-program for computing the greatest common divisor of two numbers. It is straightforward to extend the... |

308 | QuickCheck: A lightweight tool for random testing of Haskell programs
- Claessen, Hughes
- 2000
(Show Context)
Citation Context ...lier version of the Agda system (“Agda 1”) for interactive proof in dependent type theory, automatic theorem provers for classical first order predicate logic, and the random testing tool QuickCheck (=-=Claessen and Hughes 2000-=-). To reach our goal we needed to integrate these tools into a functioning system for verifying “real” Haskell programs. One proposal for using Agda for verifying Haskell programs was the monadic embe... |

210 | Data types as lattices - SCOTT - 1976 |

167 | Towards a Practical Programming Language Based on Dependent Type Theory
- Norell
- 2007
(Show Context)
Citation Context ...for example Dybjer and Sander (1989). In this paper we shall propose a variation of this approach, where we implement a logic of general recursive functional programs inside the proof assistant Agda (=-=Norell 2007-=-; Agda wiki) for dependent type theory. The question of encoding general recursive (and possibly partial) functions in a dependent type theory which allows only total functions has been recently consi... |

76 | Inductive sets and families in Martin-Löfs Type Theory and their set-theoretic semantics: An inversion principle for Martin-Löfs type theory - Dybjer - 1991 |

62 | Frege structures and the notion of proposition, truth and set - Aczel - 1980 |

48 | Systems of explicit mathematics with non-constructive µ-operator
- Feferman, Jäger
- 1993
(Show Context)
Citation Context ...isability) interpretations of Martin-Löf type theory, see Aczel (1977), Aczel et al. (1991) and Smith (1984). LTC-style logics are also closely related to Feferman’s systems for explicit mathematics (=-=Feferman and Jäger 1996-=-). LTC will not suffice for proving all interesting properties of functional programs. To reason about infinite streams and partiality we will have use for principles which are not available in LTC, s... |

21 | The strength of Martin-Löf’s intuitionistic type theory with one universe, Unpublished notes - Aczel - 1976 |

17 | V.: Defining and reasoning about recursive functions: a practical tool for the Coq proof assistant
- Barthe, Forest, et al.
- 2006
(Show Context)
Citation Context ...2005) turn such partial functions into total ones by adding an extra argument to the function, a termination witness. Another possibility is to encode functional programs as relations (Gonzalía 2006; =-=Barthe et al. 2006-=-). However, both these methods have drawbacks and limitations. One is that you do not verify the general recursive program as it stands, but an Agda representation of it. Another is that they do not d... |

9 | and Venanzio Capretta. Modelling general recursion in type theory - Bove |

7 | A functional programming approach to the specification and verification of concurrent systems - Dybjer, Sanders - 1989 |

5 | logic and parallelism - Linear - 1987 |

5 | A type-theoretic interpretation of constructive domain theory - Hedberg - 1996 |

5 | a Generic Theorem Prover, volume 828 of LNCS - Isabelle - 1994 |

4 | U.: Connecting a logical framework to a first-order logic prover - Abel, Coquand, et al. |

4 | Two frameworks of theories and their implementation in Isabelle - Aczel, Carlisle, et al. - 1991 |

4 |
Relations in Dependent Type Theory
- Gonzalia
- 2006
(Show Context)
Citation Context ... and Capretta (2005) turn such partial functions into total ones by adding an extra argument to the function, a termination witness. Another possibility is to encode functional programs as relations (=-=Gonzalía 2006-=-; Barthe et al. 2006). However, both these methods have drawbacks and limitations. One is that you do not verify the general recursive program as it stands, but an Agda representation of it. Another i... |

1 | Available at appserv.cs.chalmers.se/users/ulfn/ wiki/agda.php - wiki - 2008 |

1 | Dependent types at work, 2008. Lecture notes of a graduate course with the same name. Submitted for publication - Bove, Dybjer |

1 | A framework for - JACM - 1993 |