Fault Tolerant Functional Reactive Programming (Functional Pearl)
Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional languages have been used in these domains to develop synchronous dataflow programming languages for reactive systems. Causal stream functions and Functional Reactive Programming capture the essence of those languages in a way that is both elegant and robust.
To guarantee that critical systems can operate under high stress over long periods of time, these applications require clear specifications of possible faults and hazards, and how they are being handled. Modeling failure is straightforward in functional languages, and many Functional Reactive abstractions incorporate support for failure or termination. However, handling \emph{unknown types of faults}, and incorporating \emph{fault tolerance} into Functional Reactive Programming, requires a different construction and remains an open problem.
This work presents extensions to an existing functional reactive abstraction to facilitate tagging reactive transformations with hazard tags or confidence levels. We present a prototype framework to quantify the reliability of a reactive construction, by means of numeric factors or probability distributions, and demonstrate how to aid the design of fault-tolerant systems, by constraining the allowed reliability to required boundaries. By applying type-level programming, we show that it is possible to improve static analysis and have compile-time guarantees of key aspects of fault tolerance. Our approach is powerful enough to be used in systems with realistic complexity, and flexible enough to be used to guide their analysis and design, to test system properties, to verify fault tolerance properties, to perform runtime monitoring, to implement fault tolerance during execution and to address faults during runtime. We present implementations in Haskell and in Idris.
I like functional programming, functional reactive programming, aerospace, space.
Tue 25 SepDisplayed time zone: Guadalajara, Mexico City, Monterrey change
10:30 - 12:00 | Compilation and ConcurrencyResearch Papers at Stifel Theatre Chair(s): Heather Miller Carnegie Mellon University | ||
10:30 22mTalk | Competitive Parallelism: Getting Your Priorities Right Research Papers DOI | ||
10:52 22mTalk | Static Interpretation of Higher-Order Modules in Futhark: Functional GPU Programming in the Large Research Papers Martin Elsman University of Copenhagen, Denmark, Troels Henriksen University of Copenhagen, Denmark, Danil Annenkov Department of Computer Science, University of Copenhagen, Cosmin Oancea University of Copenhagen, Denmark Link to publication DOI | ||
11:15 22mTalk | Finitary Polymorphism for Optimizing Type-Directed Compilation Research Papers Atsushi Ohori Tohoku University, Japan, Katsuhiro Ueno Tohoku University, Hisayuki Mima Tohoku University DOI | ||
11:37 22mTalk | Fault Tolerant Functional Reactive Programming (Functional Pearl) Research Papers Ivan Perez National Institute of Aerospace, USA DOI |