MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Scotland

Download:
Download as a PDF | Download as a PS
by Fairouz Kamareddine, Roel Bloo, Rob Nederpelt
http://www.macs.hw.ac.uk/~fairouz/papers/research-reports/Glasgow-TR-97-14.ps
Add To MetaCart

Abstract:

Typed-calculus uses two abstraction symbols ( and \Pi) which are usually treated in different ways: x::x has as type the abstraction \Pi x: : yet \Pi x: : has type 2 rather than an abstraction; moreover, ( x:A:B)C is allowed and fi-reduction evaluates it, but (\Pi x:A:B)C is rarely allowed. Furthermore, there is a general consensus that and \Pi are different abstraction operators. While we agree with this general consensus, we find it nonetheless important to allow \Pi- to act as an abstraction operator. Moreover, experience with AUTOMATH and the recent revivals of \Pi-reduction as in [KN 95b, PM 97], illustrate the elegance of giving \Pi-redexes some similar status to-redexes. Alas however, \Pireduction in the-cube faces serious problems as shown in [KN 95b, PM 97]: it is not safe as regards subject reduction, it does not satisfy type correctness, it loses the property that the type of an expression is well-formed and it fails to make any expression that contains a \Pi-redex well-formed. In this paper, we propose a solution to all those problems. The solution is to use a concept that is heavily present in most implementations of programming languages and theorem provers: abbreviations (viz. by means of a definition) or let expressions. We will show that the-cube extended with \Pi-conversion and abbreviations satisfies all the desirable properties of the cube and does not face any of the serious problems of \Pi-reduction. We believe that this extension of the-cube is very useful: it gives a full formal study of two concepts (\Pi-reduction and abbreviations) that are useful for theorem proving and programming languages. 1

Citations

935 The Lambda Calculus: Its Syntax and Semantics – Barendregt - 1984
159 A call-by-need lambda calculus – Ariola, Felleisen, et al. - 1995
154 LEGO proof development system: User's manual – Luo, Pollack - 1992
135 A type-based compiler for Standard ML – Shao, Appel - 1995
49 Lambda calculi with types, Handbook of Logic – Barendregt - 1992
42 Termination of nested and mutually recursive algorithms – Giesl - 1997
38 Programming with proofs – Krivine, Parigot - 1990
30 Typing and Computational Properties of Lambda Expressions – Leivant - 1986
27 The Barendregt Cube with Definitions and Generalised Reduction – Bloo, Kamareddine, et al. - 1996
26 Lambda-calculus, Types and Models – Krivine - 1993
24 Modeling sharing and recursion for weak reduction strategies using explicit substitution – Benaissa, Lescanne, et al. - 1996
16 The Coq proof assistant version 5.6, Users guide, Rapport de recherche 134 – Dowek - 1991
13 A short and flexible proof of strong normalization for the Calculus of Constructions – Geuvers - 1994
12 Des preuves de totalit'e de fonctions comme synth`ese de programmes – Manoury, Simonot - 1992
11 Automatically proving termination where simpli orderings fail – Arts, Giesl - 1997
9 On formalised proofs of termination of recursive functions – Kamareddine, Monin - 1999
9 Compilation by transformation: a report from the trenches – Jones - 1996
9 Pure Type Systems with Definitions, Computing Science Note 93/24 – Severi, Poll - 1993
7 ProPre, a programming language with proofs – Manoury, Parigot, et al. - 1992
7 An ordinal measure based procedure for termination of functions. Theoretical Computer Science – Monin, Simonot - 2001
6 On automating inductive and non-inductive termination methods – Kamareddine, Monin - 1999
6 Automatizing termination proofs of recursively de functions – Manoury, Simonot - 1994
6 TIL: A type-directed optimizing compiler for – Tarditi, Morrisett, et al. - 1996
5 The formul-as types notion of construction – Howard - 1980
5 Recursive programming with proofs: a second type theory – Parigot - 1988
4 A user's friendly syntax to de recursive functions as typed lambda-terms – Manoury - 1994
3 Canonical Typing and \Pi-Conversion – Kamareddine, Nederpelt - 1996
3 Henk: A typed intermediate language. Submitted – Jones, Meijer - 1997
2 Refining reduction – Kamareddine, Nederpelt - 1995
1 Henk: a typed intermediate language, Types – Jones, Meijer - 1997