A Light Modality for Recursion

We investigate a modality for controlling the behaviour of recursive functional programs on infinite structures which is completely silent in the syntax. The latter means that programs do not contain "marks" showing the application of the introduction and elimination rules for the modality. This shifts the burden of controlling recursion from the programmer to the compiler. To do this, we introduce a typed lambda calculus i la Curry with a silent modality and guarded recursive types. The typing discipline guarantees normalisation and can be transformed into an algorithm which infers the type of a program.

[1]  Kim G. Larsen,et al.  Continuous Markovian Logics - Axiomatization and Quantified Metatheory , 2012, Log. Methods Comput. Sci..

[2]  Amr Sabry,et al.  Proving the correctness of reactive systems using sized types , 1996, POPL '96.

[3]  Rasmus Ejlers Møgelberg,et al.  Guarded Dependent Type Theory with Coinductive Types , 2016, FoSSaCS.

[4]  Nick Benton,et al.  Ultrametric Semantics of Reactive Programs , 2011, 2011 IEEE 26th Annual Symposium on Logic in Computer Science.

[5]  Nick Benton,et al.  Higher-order functional reactive programming in bounded space , 2012, POPL '12.

[6]  Jean-Jacques Lévy,et al.  An algebraic interpretation of the lambda beta - calculus and a labeled lambda - calculus , 1975, Lambda-Calculus and Computer Science Theory.

[7]  Paula Severi,et al.  Nominal Coalgebraic Data Types with Applications to Lambda Calculus , 2013, Log. Methods Comput. Sci..

[8]  Mario Coppo,et al.  Type Inference with Recursive Types: Syntax and Semantics , 1991, Inf. Comput..

[9]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[10]  Robert L. Constable,et al.  Infinite Objects in Type Theory , 1986, LICS.

[11]  Jan Willem Klop,et al.  Infinitary Lambda Calculus , 1997, Theoretical Computer Science.

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

[13]  Bruno Courcelle,et al.  Fundamental Properties of Infinite Trees , 1983, Theor. Comput. Sci..

[14]  Jan Willem Klop,et al.  Infinitary Lambda Calculi and Böhm Models , 1995, RTA.

[15]  Jorge Luis Sacchini,et al.  Type-Based Productivity of Stream Definitions in the Calculus of Constructions , 2013, 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science.

[16]  Richard Statman,et al.  Recursive Types λA , 2013 .

[17]  Lars Birkedal,et al.  Impredicative Concurrent Abstract Predicates , 2014, ESOP.

[18]  Paula Severi,et al.  Pure type systems with corecursion on streams: from finite to infinitary normalisation , 2012, ICFP.

[19]  Robert Atkey,et al.  Productive coprogramming with guarded recursion , 2013, ICFP.

[20]  Emilio Tuosto,et al.  On Sessions and Infinite Data , 2016, Log. Methods Comput. Sci..

[21]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[22]  Kenneth Steiglitz,et al.  Combinatorial Optimization: Algorithms and Complexity , 1981 .

[23]  Vladimir Gapeyev,et al.  Recursive Types , 2007 .

[24]  Cliff B. Jones,et al.  Programming Languages and Their Definition - Hans Bekic (1936-1982) , 1984, Programming Languages and Their Definition.

[25]  Eduardo Giménez,et al.  A Tutorial on (Co-)Inductive Types in Coq , 2005 .

[26]  Hiroshi Nakano,et al.  A modality for recursion , 2000, Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.99CB36332).

[27]  Reuben N. S. Rowe,et al.  Semantic types for class-based objects , 2013 .

[28]  Prakash Panangaden,et al.  Fair reactive programming , 2014, POPL.

[29]  Rasmus Ejlers Møgelberg,et al.  First Steps in Synthetic Guarded Domain Theory: Step-Indexing in the Topos of Trees , 2011, 2011 IEEE 26th Annual Symposium on Logic in Computer Science.

[30]  Benjamin C. Pierce,et al.  Recursive subtyping revealed , 2000, Journal of Functional Programming.