Communicating sequential processes
Communicating sequential processes
Programming from specifications
Programming from specifications
The existence of refinement mappings
Theoretical Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
Algebra of programming
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
Eden - The Paradise of Functional Concurrent Programming
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing - Volume I
General parameterised refinement and recursion for the M-net calculus
Theoretical Computer Science
Hume: a domain-specific language for real-time embedded systems
Proceedings of the 2nd international conference on Generative programming and component engineering
Algorithm + strategy = parallelism
Journal of Functional Programming
Discovering applications of higher order functions through proof planning
Formal Aspects of Computing
A brief history of process algebra
Theoretical Computer Science - Process algebra
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Comparative Study of Refactoring Haskell and Erlang Programs
SCAM '06 Proceedings of the Sixth IEEE International Workshop on Source Code Analysis and Manipulation
Towards formally verifiable resource bounds for real-time embedded systems
ACM SIGBED Review - Special issues on workshop on innovative techniques for certification of embedded systems
Preserving coordination properties when transforming concurrent system components
Proceedings of the 2008 ACM symposium on Applied computing
A survey of strategies in rule-based program transformation systems
Journal of Symbolic Computation
Low-level programming in Hume: an exploration of the HW-Hume level
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Reasoning about multi-process systems with the box calculus
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Harnessing parallelism in FPGAs using the hume language
Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computing
Synchronous digital circuits as functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Hume is a contemporary programming language oriented to systems with strong resource bounds, based on autonomous concurrent "boxes" interacting across "wires". Hume's design reflects the explicit separation of coordination and computation aspects of multi-process systems, which greatly eases establishing resource bounds for programs. However, coordination and computation are necessarily tightly coupled in reasoning about Hume programs. Furthermore, in Hume, local changes to coordination or computation, while preserving input/output correctness, can have profound and unforeseen effects on other aspects of programs such as timing of events and scheduling of processes. Thus, traditional program calculi prove inappropriate as they tend to focus exclusively either on the coordination of interacting processes or on computation within individual processes.The Hume box calculus offers a novel approach to manipulating multi-process systems by accounting seamlessly for both coordination and computation in individual rules. Furthermore, the "Hierarchical Hume" extension enables strong locality of the effects of program manipulation, as well as providing a principled encapsulation mechanism.In this paper, we present an overview of the Hume box calculus and its applications in program development. First of all, a base set of rules for introducing, changing, composing, separating and eliminating Hume boxes and wires, possibly within hierarchies, is presented. Next additional strategies are derived and a constructive approach to program development is illustrated through two examples of system elaboration from truth tables. Finally, at a considerably higher level, the use of the Hume box calculus to verify a generic transformation from a single box to an equivalent multi-box program, offering a balanced parallel implementation, is discussed.