Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying constructs such as pipelines, scatter-gather, and other networks. Concurrent software languages usually provide mechanisms for dynamically creating such structures, but this makes them difficult to analyze statically. In particular, it would be very convenient to be able to put bounds on the resources (memory, processes) required by a particular system. We present a static elaboration technique that can remove bounded recursion from concurrent programs, useful for tools that cannot handle recursion such as those for formal verification and hardware synthesis. We work with SHIM, a concurrent language that provides concurrent, recursive functio...
Program synthesis is a discipline aimed at the automatic construction of executable programs from de...
We present a novel static analysis for inferring precise complexity bounds of imperative and recursi...
Reconfigurable computing is a method of development that provides a developer with the ability to re...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Programming concurrent systems is substantially more difficult than programming sequential systems, ...
Program Slicing is the process of deleting statements in a program that do not affect a given set of...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Reconfigurable systems are widely used nowadays to increase performance of computationally intensive...
Recursion is a fundamental concept of sequential computing that allows for the design of simple and ...
We propose a general formal model of isolated hierarchical parallel computations, and identify sever...
We propose a general formal model of isolated hierarchical parallel computations, and identify sever...
Embedded systems demand concurrency for supporting simultaneous actions in their environment and par...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
In this paper, we present a novel method for parallelizing imperative programs in the presence of dy...
Concurrent programming languages are good for embedded systems because they match the parallelism of...
Program synthesis is a discipline aimed at the automatic construction of executable programs from de...
We present a novel static analysis for inferring precise complexity bounds of imperative and recursi...
Reconfigurable computing is a method of development that provides a developer with the ability to re...
Unlike sequential software, concurrent software needs a structuring mechanism capable of specifying ...
Programming concurrent systems is substantially more difficult than programming sequential systems, ...
Program Slicing is the process of deleting statements in a program that do not affect a given set of...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
Reconfigurable systems are widely used nowadays to increase performance of computationally intensive...
Recursion is a fundamental concept of sequential computing that allows for the design of simple and ...
We propose a general formal model of isolated hierarchical parallel computations, and identify sever...
We propose a general formal model of isolated hierarchical parallel computations, and identify sever...
Embedded systems demand concurrency for supporting simultaneous actions in their environment and par...
Concurrent programming languages should be a good fit for embedded systems because they match the in...
In this paper, we present a novel method for parallelizing imperative programs in the presence of dy...
Concurrent programming languages are good for embedded systems because they match the parallelism of...
Program synthesis is a discipline aimed at the automatic construction of executable programs from de...
We present a novel static analysis for inferring precise complexity bounds of imperative and recursi...
Reconfigurable computing is a method of development that provides a developer with the ability to re...