Abstract : The TILT compiler for Standard ML represents programs internally using a predicative lambda calculus based on Girard's F omega. At the kind level, this language is notable for containing singleton kinds and dependent product and function kinds. Previous work SH99 established the decidability of type equivalence for this language. This paper presents a typechecking algorithm for the full TILT internal language and discusses some of the more interesting features of the language. The particular use of intensional type analysis to handle arrays of unboxed floating point numbers is described. An extended calculus is also introduced which permits unlabeled singletons at higher kind, in order to allow for more compact program representation. The extended calculus is related to the restricted calculus via a transformation that eliminates the unlabeled singletons, and the decidability of the typechecking algorithms for both the original and extended calculus is shown.
[1]
John C. Mitchell,et al.
Higher-order modules and the phase distinction
,
1989,
POPL '90.
[2]
Mark Lillibridge,et al.
A type-theoretic approach to higher-order modules with sharing
,
1994,
POPL '94.
[3]
Robert Harper,et al.
Compiling polymorphism using intensional type analysis
,
1995,
POPL '95.
[4]
Robert Harper,et al.
A Type-Theoretic Account of Standard ML 1996 (Version 1).
,
1996
.
[5]
Robert Harper,et al.
An Interpretation of Standard ML in Type Theory
,
1997
.
[6]
MorrisettGreg,et al.
From system F to typed assembly language
,
1999
.
[7]
Robert Harper,et al.
Abstract 1 Introduction
,
2022
.