Nondeterminism is a key challenge in developing multithreaded applications. Even with the same input, each execution of a multithreaded program may produce a different output. Thi...
Hadi Jooybar, Wilson W. L. Fung, Joseph Devietti, ...
Many privacy-type properties of security protocols can be modelled using trace equivalence properties in suitable process algebras. It has been shown that such properties can be de...
Abstract. Memory transactions provide programmers with a convestraction for concurrent programs: a keyword (such as atomic) designating a region of code that appears, from the pers...
Graphics processing units (GPUs) provide both memory bandwidth and arithmetic performance far greater than that available on CPUs but, because of their Single-Instruction-Multiple...
In the static analysis of functional programs, pushdown flow analabstract garbage collection skirt just inside the boundaries of soundness and decidability. Alone, each method re...
Christopher Earl, Ilya Sergey, Matthew Might, Davi...
Programming with dependent types is a blessing and a curse. It is a blessing to be able to bake invariants into the definition of datatypes: we can finally write correct-by-cons...
The higher-order logic found in proof assistants such as Coq and various HOL systems provides a convenient setting for the development and verification of pure functional program...
Continuing a line of work by Abramsky (1994), by Bellin and Scott (1994), and by Caires and Pfenning (2010), among others, this paper presents CP, a calculus in which propositions...
This paper presents a new functional programming model for graph structures called structured graphs. Structured graphs extend conventional algebraic datatypes with explicit defi...
Most complex software projects are compiled using a build tool (e.g. make), which runs commands in an order satisfying userdefined dependencies. Unfortunately, most build tools r...