Liquid Intersection Types

We present a new type system combining refinement types and th e expressiveness of intersection type discipline. The use of such features makes it possible t o derive more precise types than in the original refinement system. We have been able to prove severa l interesting properties for our system (including subject reduction) and developed an inference algorithm, which we proved to be sound.

[1]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[2]  Mariangiola Dezani-Ciancaglini,et al.  An extension of the basic functionality theory for the λ-calculus , 1980, Notre Dame J. Formal Log..

[3]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

[4]  A. Church A Set of Postulates for the Foundation of Logic , 1932 .

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

[6]  Robert E. Shostak,et al.  Deciding Combinations of Theories , 1982, JACM.

[7]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .

[8]  Luís Damas,et al.  Type assignment in programming languages , 1984 .

[9]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[10]  Mariangiola Dezani-Ciancaglini,et al.  A filter lambda model and the completeness of type assignment , 1983, Journal of Symbolic Logic.

[11]  Ranjit Jhala,et al.  Abstract Refinement Types , 2013, ESOP.

[12]  T. Jim Rank 2 Type Systems and Recursive Definitions , 1995 .

[13]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[14]  Patrick Maxim Rondon,et al.  Liquid types , 2008, PLDI '08.

[15]  Jean-Christophe Filliâtre,et al.  Why3 - Where Programs Meet Provers , 2013, ESOP.

[16]  C.-H. Luke Ong,et al.  Two-Level Game Semantics, Intersection Types, and Recursion Schemes , 2012, ICALP.

[17]  Jean-Christophe Filliâtre,et al.  One Logic to Use Them All , 2013, CADE.

[18]  Frank Pfenning,et al.  Refinement types for ML , 1991, PLDI '91.

[19]  Flemming Nielson,et al.  Type and Effect Systems , 1999 .

[20]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[21]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[22]  Assaf J. Kfoury,et al.  Principality and decidable type inference for finite-rank intersection types , 1999, POPL '99.

[23]  S. V. Bakel,et al.  Intersection type disciplines in Lambda Calculus and applicative term rewriting systems , 1993 .

[24]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[25]  Luca Cardelli,et al.  Typechecking Dependent Types and Subtypes , 1986, Foundations of Logic and Functional Programming.

[26]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[27]  Cormac Flanagan,et al.  Hybrid type checking , 2006, POPL '06.

[28]  Amr Sabry,et al.  The essence of compiling with continuations , 1993, PLDI '93.

[29]  H B Curry,et al.  Functionality in Combinatory Logic. , 1934, Proceedings of the National Academy of Sciences of the United States of America.