Calculating risk in functional programming
Daniel Murta, Jose Nuno Oliveira

TL;DR
This paper introduces a method for estimating and managing risk in functional programming by extending algebraic reasoning to include fault propagation, especially useful on unreliable hardware.
Contribution
It proposes a novel approach to handle risk constructively in functional programming through an algebraic extension that models fault propagation during program transformations.
Findings
Fault propagation can be calculated across program transformations.
Risk can be expressed in terms of component faults.
Method supports reasoning about unreliable hardware environments.
Abstract
In the trend towards tolerating hardware unreliability, accuracy is exchanged for cost savings. Running on less reliable machines, "functionally correct" code becomes risky and one needs to know how risk propagates so as to mitigate it. Risk estimation, however, seems to live outside the average programmer's technical competence and core practice. In this paper we propose that risk be constructively handled in functional programming by (a) writing programs which may choose between expected and faulty behaviour, and by (b) reasoning about them in a linear algebra extension to standard, a la Bird-Moor algebra of programming. In particular, the propagation of faults across standard program transformation techniques known as tupling and fusion is calculated, enabling the fault of the whole to be expressed in terms of the faults of its parts.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Software Reliability and Analysis Research · Distributed systems and fault tolerance
