Functional reactive types

Functional Reactive Programming (FRP) is an approach to streaming data with a pure functional semantics as time-indexed values. In previous work, we showed that Linear-time Temporal Logic (LTL) can be used as a type system for discrete-time FRP, and that functional reactive primitives perform two roles: as combinators for building streams of data, and as proof rules for constructive LTL. In this paper, we add a third role, by showing that FRP combinators can be used to define streams of types, and that these functional reactive types can be viewed both as a constructive temporal logic, and as the types for functional reactive programs. As an application of functional reactive types, we show that past-time LTL (pLTL) can be extended with FRP to get a logic pLTL+FRP. This logic is expressed as streams of boolean expressions, and so bounded satisfiability of pLTL can be translated to Satisfiability Modulo Theory (SMT). Thus, pLTL+FRP can be used as a constraint language for problems which mix properties of data with temporal properties.

[1]  Kedar S. Namjoshi,et al.  On the completeness of compositional reasoning , 2000 .

[2]  Kohei Honda,et al.  Types for Dyadic Interaction , 1993, CONCUR.

[3]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[4]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[5]  Alan Jeffrey,et al.  LTL types FRP: linear-time temporal logic propositions as types, proofs as functional reactive programs , 2012, PLPV '12.

[6]  L. McMillanmcmillan Circular Compositional Reasoning about Liveness , 1999 .

[7]  Conor McBride,et al.  Applicative programming with effects , 2008, J. Funct. Program..

[8]  Armin Biere,et al.  Bounded Model Checking Using Satisfiability Solving , 2001, Formal Methods Syst. Des..

[9]  Kedar S. Namjoshi,et al.  On the Competeness of Compositional Reasoning , 2000, CAV.

[10]  Wolfgang Jeltsch An abstract categorical semantics for functional reactive programming with processes , 2014, PLPV '14.

[11]  Julian Rathke,et al.  The Lax Braided Structure of Streaming I/O , 2011, CSL.

[12]  Wolfgang Jeltsch Temporal logic with "Until", functional reactive programming with processes, and concrete process categories , 2013, PLPV '13.

[13]  Fred Kröger,et al.  Temporal Logic of Programs , 1987, EATCS Monographs on Theoretical Computer Science.

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

[15]  Matthew Hennessy,et al.  Full Abstraction for a Simple Parallel Programming Language , 1979, MFCS.

[16]  Natasha Alechina,et al.  Categorical and Kripke Semantics for Constructive S4 Modal Logic , 2001, CSL.

[17]  Nikolaj Bjørner,et al.  Satisfiability modulo theories , 2011, Commun. ACM.

[18]  Kohei Honda,et al.  Types for Dynamic Interaction , 1993 .

[19]  Dirk Pattinson,et al.  Representations of Stream Processors Using Nested Fixed Points , 2009, Log. Methods Comput. Sci..

[20]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.