Abstract:
We present an approach to enriching the type system of ML with a restricted form of dependent types, where type index objects are drawn from a constraint domain C, leading to the DML(C) language schema. This allows specification and inference of significantly more precise type information, facilitating program error detection and compiler optimization. A major complication resulting from introducing dependent types is that pure type inference for the enriched system is no longer possible, but we show that type-checking a sufficiently annotated program in DML(C) can be reduced to constraint satisfaction in the constraint domain C. We exhibit the unobtrusiveness of our approach through practical examples and prove that DML(C) is conservative over ML. The main ...
Citations
|
1415
|
The Definition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
869
|
Proof-carrying code
– Necula
- 1997
|
|
544
|
A framework for defining logics
– Harper, Honsell, et al.
- 1993
|
|
345
|
Computational lambda-calculus and monads
– Moggi
- 1989
|
|
221
|
The design and implementation of a certifying compiler
– Necula
- 1998
|
|
221
|
Dependent types in practical programming
– Xi, Pfenning
- 1999
|
|
211
|
Report on the programming language Haskell: A non-strict, purely functional language
– Hudak, Jones, et al.
- 1992
|
|
179
|
PVS: Combining specification, proof checking, and model checking
– Owre, Rajan, et al.
- 1997
|
|
168
|
Cayenne – a language with dependent types
– Augustsson
- 1998
|
|
149
|
Eliminating array bound checking through dependent types
– Xi, Pfenning
- 1998
|
|
144
|
Reasoning about programs in continuation-passing style
– Sabry, Felleisen
- 1993
|
|
120
|
Refinement types for ML
– Freeman, Pfenning
- 1991
|
|
115
|
Local Type Inference
– Pierce, Turner
- 1998
|
|
90
|
Proving the correctness of reactive systems using sized types
– Hughes, Pareto, et al.
- 1996
|
|
50
|
Toward formal development of ML programs: foundations and methodology
– Sannella, Tarlecki
- 1989
|
|
43
|
The Coq proof assistant user’s guide. Rapport Techniques 154
– Dowek, Felty, et al.
- 1993
|
|
38
|
Type inference with constrained types
– Sulzmann, Odersky, et al.
- 1997
|
|
33
|
PX - A computational logic
– Hayashi, Nakano
- 1988
|
|
27
|
Functional unparsing
– Danvy
- 1998
|
|
27
|
Indexed types
– Zenger
- 1997
|
|
23
|
Indizierte Typen
– Zenger
- 1999
|
|
22
|
A proof environment for the development of group communication systems
– KREITZ, HAYDEN, et al.
- 1998
|
|
20
|
Dead code elimination through dependent types
– Xi
- 1999
|
|
18
|
Synthesizing proofs from programs in the Calculus of Inductive Constructions
– Parent
- 1995
|
|
17
|
Shape checking of array programs
– Jay, Sekanina
- 1996
|
|
6
|
Some examples of DML programming. Available at http://www.cs.cmu.edu/~hwxi/DML/examples
– Xi
- 1997
|
|
5
|
Le langage Caml
– Weis, Leroy
- 1993
|