Download:
|
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
|