The paradigm of type-based termination is explored for functional programming with recursive data types. The article introduces , a lambda-calculus with recursion, inductive types, subtyping and bounded quanti cation. Decorated type variables representing approximations of inductive types are used to track the size of function arguments and return values. The system is shown to be type safe and strongly normalizing. The main novelty is a bidirectional type checking algorithm whose soundness is established formally.
|
806
|
A Theory of Type Polymorphism in Programming
– Milner
- 1978
|
|
415
|
A syntactic approach to type soundness
– Wright, Felleisen
- 1994
|
|
389
|
Types and Programming Languages
– Pierce
- 2002
|
|
215
|
System description: Twelf — A meta-logical framework for deductive systems
– Pfenning, Schürmann
- 1999
|
|
209
|
Lambda-mu-calculus: an algorithmic interpretation of classical natural deduction
– Parigot
- 1992
|
|
125
|
Termination of term rewriting using dependency pairs
– Arts, Giesl
- 2000
|
|
115
|
Local Type Inference
– Pierce, Turner
- 1998
|
|
105
|
The size-change principle for program termination
– Lee, Jones, et al.
- 2001
|
|
90
|
Proving the correctness of reactive systems using sized types
– Hughes, Pareto, et al.
- 1996
|
|
73
|
An Extended Calculus of Constructions
– Luo
- 1990
|
|
70
|
P.: Inductive types and type constraints in the second-order lambda calculus
– Mendler
- 1991
|
|
52
|
Infinite objects in type theory
– Coquand
- 1993
|
|
52
|
Recursion and dynamic data-structures in bounded space: Towards embedded ML programming
– Hughes, Pareto
- 1999
|
|
49
|
Dependently Typed Functional Programs and their Proofs
– McBride
- 1999
|
|
44
|
A typed lambda calculus with categorical type constructors
– Hagino
- 1987
|
|
41
|
Inductive data type systems
– Blanqui, Jouannaud, et al.
- 2001
|
|
36
|
Termination of Nested and Mutually Recursive Algorithms
– Giesl
|
|
34
|
Calculating sized types
– Chin, Khoo
- 2000
|
|
34
|
Type error slicing in implicitly typed higher-order languages
– Haack, Wells
|
|
32
|
A predicative analysis of structural recursion
– Abel, Altenkirch
- 2002
|
|
29
|
An algorithm for type-checking dependent types
– Coquand
- 1996
|
|
24
|
Constructions, Inductive Types and Strong Normalization
– Altenkirch
- 1993
|
|
23
|
Extensions of System F by Iteration and Primitive Recursion on Monotone Inductive Types
– Matthes
- 1998
|
|
21
|
The Theory of LEGO
– Pollack
- 1994
|
|
18
|
Tridirectional typechecking
– Dunfield, Pfenning
- 2000
|
|
15
|
Resource bound certi
– Crary, Weirich
- 2000
|
|
13
|
Argument-Bounded Algorithms as a Basis for Automated Termination Proofs
– Walther
- 1988
|
|
12
|
Types for crash prevention
– Pareto
- 2000
|
|
11
|
Termination and reduction checking for higher-order logic programs
– Pientka
- 2001
|
|
10
|
Termination Analysis for Partial Functions
– Brauburger
- 1996
|
|
10
|
The Coq Proof Assistant Reference Manual, version 7.0 edition
– INRIA
- 2004
|
|
9
|
A Computational Interpretation of the -calculus
– Bierman
- 1998
|
|
9
|
Structural recursive de in type theory
– Gimenez
- 1998
|
|
9
|
Primitive (co)recursion and course-of-values (co)iteration, categorically
– Uustalu, Vene
- 1999
|
|
8
|
A type-based termination criterion for dependently-typed higher-order rewrite systems
– Blanqui
|
|
8
|
Ensuring Termination in ESFP
– Telford, Turner
- 2000
|
|
6
|
Termination and guardedness checking with continuous types
– Abel
- 2003
|
|
6
|
Type Theory and Rewriting
– Blanqui
- 2001
|
|
5
|
Type Iteration vs. recursion
– lawski, Z, et al.
- 1999
|
|
5
|
Explaining polymorphic types
– YANG, Michaelson, et al.
- 2002
|
|
4
|
Speci and veri of a formal system for structurally recursive functions
– Abel
- 2000
|
|
4
|
Analysis of a guard condition in type theory
– Amadio, Coupet-Grimal
- 1998
|
|
4
|
Intersection types and computational eects
– Davies, Pfenning
- 2000
|
|
4
|
Dependent types for program termination veri
– Xi
- 2002
|
|
3
|
A third-order representation of the -calculus
– Abel
- 2001
|
|
3
|
Type-based termination of recursive de
– Barthe, Frade, et al.
- 2004
|
|
3
|
Ensuring streams
– Telford, Turner
- 1997
|
|
1
|
Soundness of a bidirectional typing algorithm. Twelf code, available on the author's homepage
– Abel
- 2004
|
|
1
|
Alfa home
– Hallgren
- 2003
|