A multivalued language with a dependent type system

  • Authors:
  • Neal Glew;Tim Sweeney;Leaf Petersen

  • Affiliations:
  • Intel Labs, Santa Clara, CA, USA;Epic Games, Cary, NC, USA;Intel Labs, Santa Clara, CA, USA

  • Venue:
  • Proceedings of the 2013 ACM SIGPLAN workshop on Dependently-typed programming
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Type systems are used to eliminate certain classes of errors at compile time. One of the goals of type system research is to allow more classes of errors (such as array subscript errors) to be eliminated. Dependent type systems have played a key role in this effort, and much research has been done on them. In this paper, we describe a new dependently-typed functional programming language based on two key ideas. First, it makes no distinction between expressions, types, kinds, and sorts-everything is a term. The same integer values are used to compute with and to index types, such as specifying the length of an array. Second, the term language has a multivalued semantics-a term can evaluate to zero, one, multiple, even an infinite number of values. Since types are characterised by their members, they are equivalent to terms whose possible values are the members of the type, and we exploit this to express type information in our language. In order to type check such terms, we give up on decidability. We consider this a good tradeoff to get an expressive language without the pain of some dependent type systems. This paper describes the core ideas of the language, gives an intuitive description of the semantics in terms of set-theory, explains how to implement the language by restricting what programs are considered valid, and sketches the core of the type system.