Applied Type System: Extended Abstract

The framework Pure Type System (PTS) offers a simple and general approach to designing and formalizing type systems. However, in the presence of dependent types, there often exist some acute problems that make it difficult for PTS to accommodate many common realistic programming features such as general recursion, recursive types, effects (e.g., exceptions, references, input/output), etc. In this paper, we propose a new framework Applied Type System (ATS) to allow for designing and formalizing type systems that can readily support common realistic programming features. The key salient feature of ATS lies in a complete separation between statics, in which types are formed and reasoned about, and dynamics, in which programs are constructed and evaluated. With this separation, it is no longer possible for a program to occur in a type as is otherwise allowed in PTS. We present not only a formal development of ATS but also mention some examples in support of using ATS as a framework to form type systems for practical programming.

[1]  M. Hofmann A Type System for Bounded Space and Functional In-Place Update , 2000, Nord. J. Comput..

[2]  中野 裕,et al.  PX, a computational logic , 1988 .

[3]  Rui Shi,et al.  A Typeful Approach to Object-Oriented Programming with Multiple Inheritance , 2004, PADL.

[4]  Zhong Shao,et al.  A type system for certi .ed binaries , 2002, Foundations of Intrusion Tolerant Systems, 2003 [Organically Assured and Survivable Information Systems].

[5]  N. P. Mendler,et al.  Recursive Types and Type Constraints in Second-Order Lambda Calculus , 1987, LICS.

[6]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[7]  Robert E. Tarjan,et al.  Self-adjusting binary search trees , 1985, JACM.

[8]  Christine Paulin-Mohring,et al.  Inductive Definitions in the system Coq - Rules and Properties , 1993, TLCA.

[9]  Naoki Kobayashi,et al.  Garbage Collection Based on a Linear Type System , 2000 .

[10]  Hongwei Xi,et al.  Imperative programming with dependent types , 2000, Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.99CB36332).

[11]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[12]  David Walker,et al.  Alias Types for Recursive Data Structures , 2000, Types in Compilation.

[13]  Per Martin-Löf,et al.  Intuitionistic type theory , 1984, Studies in proof theory.

[14]  Frank Pfenning,et al.  Dependent types in practical programming , 1999, POPL '99.

[15]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

[16]  Robert DeLine,et al.  Adoption and focus: practical linear types for imperative programming , 2002, PLDI '02.

[17]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[18]  Bengt Nordström,et al.  Programming in Martin-Löf's Type Theory , 1990 .

[19]  Alexander Aiken,et al.  Flow-sensitive type qualifiers , 2002, PLDI '02.

[20]  Carolyn L. Talcott,et al.  A Variable Typed Logic of Effects , 1995, Inf. Comput..

[21]  Gang Chen,et al.  Guarded recursive datatype constructors , 2003, POPL '03.

[22]  Philip Wadler,et al.  Operational Interpretations of Linear Logic , 1999, Theor. Comput. Sci..

[23]  Robert Harper,et al.  A Simplified Account of Polymorphic References , 1994, Inf. Process. Lett..

[24]  Robert L. Constable,et al.  Partial Objects In Constructive Type Theory , 1987, Logic in Computer Science.

[25]  Naoki Kobayashi Quasi-linear types , 1999, POPL '99.

[26]  Chiyan Chen,et al.  Implementing Cut Elimination: A Case Study of Simulating Dependent Types in Haskell , 2004, PADL.

[27]  Peter B. Andrews General Models, Descriptions, and Choice in Type Theory , 1972, J. Symb. Log..

[28]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[29]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.

[30]  Carl A. Gunter,et al.  Reference counting as a computational interpretation of linear logic , 1996, Journal of Functional Programming.

[31]  Hongwei Xi Dependent Types for Program Termination Verification , 2002, High. Order Symb. Comput..

[32]  Mark P. Jones Qualified Types: Theory and Practice , 1994 .

[33]  Chiyan Chen,et al.  Meta-programming through typeful code representation , 2003, ICFP '03.

[34]  Frank Pfenning,et al.  Relating Natural Deduction and Sequent Calculus for Intuitionistic Non-Commutative Linear Logic , 1999, MFPS.

[35]  David Walker,et al.  An effective theory of type refinements , 2003, ICFP '03.

[36]  Philip Wadler,et al.  A Syntax for Linear Logic , 1993, MFPS.

[37]  Frank Pfenning,et al.  Inductively Defined Types in the Calculus of Constructions , 1989, Mathematical Foundations of Programming Semantics.

[38]  Christoph Zenger,et al.  Indexed Types , 1997, Theoretical Computer Science.

[39]  C. A. R. Hoare,et al.  Procedures and parameters: An axiomatic approach , 1971, Symposium on Semantics of Algorithmic Languages.

[40]  Frank Pfenning,et al.  A type theory for memory allocation and data layout , 2003, POPL '03.