Languages of the future

This paper explores a new point in the design space of formal reasoning systems - part programming language, part logical framework. The system is built on a programming language where the user expresses equality constraints between types and the type checker then enforces these constraints. This simple extension to the type system allows the programmer to describe properties of his program in the types of witness objects which can be thought of as concrete evidence that the program has the property desired. These techniques and two other rich typing mechanisms, rank-N polymorphism and extensible kinds, create a powerful new programming idiom for writing programs whose types enforce semantic properties.A language with these features is both a practical programming language and a logic. This marriage between two previously separate entities increases the probability that users will apply formal methods to their programming designs. This kind of synthesis creates the foundations for the languages of the future.

[1]  Philip Wadler,et al.  The essence of functional programming (Invited talk) , 1997 .

[2]  Philip Wadler Monads for Functional Programming , 1995, Advanced Functional Programming.

[3]  Frank Pfenning,et al.  Eliminating array bound checking through dependent types , 1998, PLDI.

[4]  Karl Crary,et al.  From system F to typed assembly language , 1999, TOPL.

[5]  Karl Crary,et al.  Foundational Typed Assembly Language for Grid Computing , 2004 .

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

[7]  Peter Dybjer,et al.  A Finite Axiomatization of Inductive-Recursive Definitions , 1999, TLCA.

[8]  James Cheney,et al.  A lightweight implementation of generics and dynamics , 2002, Haskell '02.

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

[10]  S. Doaitse Swierstra,et al.  Typing dynamic typing , 2002, ICFP '02.

[11]  Jens Palsberg,et al.  Trust in the λ-calculus , 1995, Journal of Functional Programming.

[12]  Stephanie Weirich,et al.  Type-safe cast: (functional pearl) , 2000, ICFP '00.

[13]  Walid Taha,et al.  Multi-stage programming with explicit annotations , 1997 .

[14]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[15]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[16]  F. Pfenning Logic programming in the LF logical framework , 1991 .

[17]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[18]  Walid Taha,et al.  Tag Elimination and Jones-Optimality , 2001, PADO.

[19]  Dominic Duggan,et al.  Dynamic typing for distributed programming in polymorphic languages , 1999, TOPL.

[20]  Tim Sheard,et al.  Closed types for a safe imperative MetaML , 2003, J. Funct. Program..

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

[22]  Thierry Coquand,et al.  Inductive Definitions and Type Theory: an Introduction (Preliminary Version) , 1994, FSTTCS.

[23]  Robert Harper,et al.  Abstract 1 Introduction , 2022 .

[24]  Dan Grossman,et al.  TALx86: A Realistic Typed Assembly Language∗ , 1999 .

[25]  Andrew C. Myers,et al.  Language-based information-flow security , 2003, IEEE J. Sel. Areas Commun..

[26]  Walid Taha,et al.  Tagless staged interpreters for typed languages , 2002, ICFP '02.

[27]  Geoffrey Smith,et al.  A Sound Type System for Secure Flow Analysis , 1996, J. Comput. Secur..

[28]  Tim Sheard Using MetaML: A Staged Programming Language , 1998, Advanced Functional Programming.

[29]  Rowan Davies Refinement-Type Checker for Standard ML , 1997, AMAST.

[30]  Walid Taha,et al.  A Sound Reduction Semantics for Untyped CBN Multi-stage Computation. Or, the Theory of MetaML is Non-trivial (Extended Abstract) , 1999, PEPM.

[31]  Lennart Augustsson,et al.  Cayenne—a language with dependent types , 1998, ICFP '98.

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

[33]  Karl Crary,et al.  Resource bound certification , 2000, POPL '00.

[34]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[35]  Lawrence C. Paulson,et al.  Isabelle: The Next 700 Theorem Provers , 2000, ArXiv.

[36]  John Launchbury,et al.  Parametricity and Unboxing with Unpointed Types , 1996, ESOP.

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

[38]  Simon L. Peyton Jones,et al.  Template meta-programming for Haskell , 2002, Haskell '02.

[39]  Thomas P. Jensen,et al.  Secure calling contexts for stack inspection , 2002, PPDP '02.

[40]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[41]  Walid Taha,et al.  A sound reduction semantics for untyped CBN mutli-stage computation. Or, the theory of MetaML is non-trival (extended abstract) , 1999, PEPM '00.

[42]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[43]  Mark P. Jones A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[44]  Vincent Simonet An extension of HM(X) with bounded existential and universal data-types , 2003, ICFP '03.

[45]  Dan S. Wallach,et al.  Understanding Java stack inspection , 1998, Proceedings. 1998 IEEE Symposium on Security and Privacy (Cat. No.98CB36186).