A timed model for communicating sequential processes
Theoretical Computer Science - Thirteenth International Colloquim on Automata, Languages and Programming, Renne
Completing the temporal picture
Selected papers of the 16th international colloquium on Automata, languages, and programming
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Science of Computer Programming - Special issue on mathematics of program construction
On full abstraction for PCF: I, II, and III
Information and Computation
Information and Computation
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Communication and Concurrency
Closed Freyd- and kappa-categories
ICAL '99 Proceedings of the 26th International Colloquium on Automata, Languages and Programming
Functional Implementations of Continuous Modeled Animation
PLILP '98/ALP '98 Proceedings of the 10th International Symposium on Principles of Declarative Programming
Circular Compositional Reasoning about Liveness
CHARME '99 Proceedings of the 10th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
On the Competeness of Compositional Reasoning
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Premonoidal categories and notions of computation
Mathematical Structures in Computer Science
The temporal logic of programs
SFCS '77 Proceedings of the 18th Annual Symposium on Foundations of Computer Science
Process logic: Expressiveness, decidability, completeness
SFCS '80 Proceedings of the 21st Annual Symposium on Foundations of Computer Science
Safe functional reactive programming through dependent types
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Push-pull functional reactive programming
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Ultrametric Semantics of Reactive Programs
LICS '11 Proceedings of the 2011 IEEE 26th Annual Symposium on Logic in Computer Science
Constructive linear-time temporal logic: Proof systems and Kripke semantics
Information and Computation
Towards a typed geometry of interaction
CSL'05 Proceedings of the 19th international conference on Computer Science Logic
Wormholes: introducing effects to FRP
Proceedings of the 2012 Haskell Symposium
Electronic Notes in Theoretical Computer Science (ENTCS)
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Higher-order functional reactive programming without spacetime leaks
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
An abstract categorical semantics for functional reactive programming with processes
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
Functional Reactive Programming (FRP) is a form of reactive programming whose model is pure functions over signals. FRP is often expressed in terms of arrows with loops, which is the type class for a Freyd category (that is a premonoidal category with a cartesian centre) equipped with a premonoidal trace. This type system suffices to define the dataflow structure of a reactive program, but does not express its temporal properties. In this paper, we show that Linear-time Temporal Logic (LTL) is a natural extension of the type system for FRP, which constrains the temporal behaviour of reactive programs. We show that a constructive LTL can be defined in a dependently typed functional language, and that reactive programs form proofs of constructive LTL properties. In particular, implication in LTL gives rise to stateless functions on streams, and the "constrains" modality gives rise to causal functions. We show that reactive programs form a partially traced monoidal category, and hence can be given as a form of arrows with loops, where the type system enforces that only decoupled functions can be looped.