Submitted to POPL ’08 An Extensible Theory of Indexed Types Daniel R. Licata Robert Harper Carnegie Mellon University fdrl,
[email protected] Abstract dices are other types (Cheney and Hinze, 2003; Peyton Jones et al., Indexed families of types are a way of associating run-time data 2006; Sheard, 2004; Xi et al., 2003), as well as types indexed by with compile-time abstractions that can be used to reason about static constraint domains (Chen and Xi, 2005; Dunfield and Pfen- them. We propose an extensible theory of indexed types, in which ning, 2004; Fogarty et al., 2007; Licata and Harper, 2005; Sarkar, programmers can define the index data appropriate to their pro- 2005; Xi and Pfenning, 1998), by propositions (Nanevski et al., grams and use them to track properties of run-time code. The es- 2006), and by proofs. Indices serve as modelling types in the sense of Leino and sential ingredients in our proposal are (1) a logical framework, Muller¨ (2004), in that they define an abstraction of program val- which is used to define index data, constraints, and proofs, and ues which may be used for reasoning. With dependent types, the (2) computation with indices, both at the static and dynamic levels available modelling types are the same as the values they model, of the programming language. Computation with indices supports and data is often used as its own model. Using more general index- a variety of mechanisms necessary for programming with exten- ing, one can model a value with abstractions other than the value sible indexed types, including the definition and implementation itself, and the model need not be drawn from the run-time language.