From action systems to modular systems

  • R. J. R. Back
  • K. Sere
Invited Lectures
Part of the Lecture Notes in Computer Science book series (LNCS, volume 873)


Action systems are used to extend program refinement methods for sequential programs, as described in the refinement calculus, to parallel and reactive system refinement. They provide a general description of reactive systems, capable of modeling terminating, possibly aborting and infinitely repeating systems. We show how to extend the action system model to refinement of modular systems. A module may export and import variables, it may provide access procedures for other modules, and it may itself access procedures of other modules. Modules may have autonomous internal activity and may execute in parallel or in sequence. Modules may be nested within each other. They may communicate by shared variables, shared actions, a generalized form of remote procedure calls and by persistent data structures. Both synchronous and asynchronous communication between modules is supported. The paper shows how a single framework can be used for both the specification of large systems, the modular decomposition of the system into smaller units and the refinement of the modules into program modules that can be described in a standard programming language and executed on standard hardware.


Action System Parallel Execution Sequential Composition Parallel Composition Reduction Rule 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. Back. Correctness Preserving Program Refinements: Proof Theory and Applications, volume 131 of Mathematical Center Tracts. Mathematical Centre, Amsterdam, 1980.Google Scholar
  2. 2.
    R. Back. A calculus of refinements for program derivations. Acta Informatica, 25:593–624, 1988.CrossRefGoogle Scholar
  3. 3.
    R. Back. Refinement calculus, part II: Parallel and reactive programs. In REX Workshop for Refinement of Distributed Systems, volume 430 of Lecture Notes in Computer Science, Nijmegen, The Netherlands, 1989. Springer-Verlag.Google Scholar
  4. 4.
    R. Back. Refining atomicity in parallel algorithms. In PARLE Conference on Parallel Architectures and Languages Europe, Eindhoven, the Netherlands, June 1989. Springer Verlag.Google Scholar
  5. 5.
    R. Back and R. Kurki-Suonio. Decentralization of process nets with centralized control. In 2nd ACM SIGACT-SIGOPS Symp. on Principles of Distributed Computing, pages 131–142. ACM, 1983.Google Scholar
  6. 6.
    R. Back and R. Kurki-Suonio. Distributed co-operation with action systems. ACM Transactions on Programming Languages and Systems, 10:513–554, October 1988.Google Scholar
  7. 7.
    R. J. R. Back, A. J. Martin and K. Sere. Specification of a Microprocessor. Department of Computer Science, Åbo Akademi University, Turku, Finland, 1993.Google Scholar
  8. 8.
    R. Back and K. Sere. Stepwise refinement of action systems. Structured Programming, 12:17–30, 1991.Google Scholar
  9. 9.
    R. J. R. Back and K. Sere. Action Systems with Synchronous Communication. To appear in E.-R. Olderog, editor, IFIP TC 2 Working Conference, on Programming Concepts, Methods and Calculi (PROCOMET '94), pages 107–126. Elsevier, 1994.Google Scholar
  10. 10.
    R. Back and J. von Wright. Refinement calculus, part I: Sequential programs. In REX Workshop for Refinement of Distributed Systems, volume 430 of Lecture Notes in Computer Science, Nijmegen, The Netherlands, 1989. Springer-Verlag.Google Scholar
  11. 11.
    R. Back and J. von Wright. Trace refinement of action systems. To appear in Proc. of CONCUR '94, Uppsala, Sweden, Augusti 1994.Google Scholar
  12. 12.
    K. Chandy and J. Misra. Parallel Program Design: A Foundation. Addison-Wesley, 1988.Google Scholar
  13. 13.
    E. Dijkstra. A Discipline of Programming. Prentice-Hall International, 1976.Google Scholar
  14. 14.
    N. Francez. Cooperating proofs for distributed programs with multiparty interaction. Information Processing Letters, 32:235–242, September 1989, North-Holland.Google Scholar
  15. 15.
    N. Francez, B. T. Hailpern and G. Taubenfeld. SCRIPT-A communication abstraction mechanism and its verification. Science of Computer Programming, 6:35–88, 1986.Google Scholar
  16. 16.
    C. A. R. Hoare. Communicating sequential processes. Communications of the ACM, 21(8):666–677, August 1978.CrossRefGoogle Scholar
  17. 17.
    INMOS Ltd. occam Programming Manual. Prentice-Hall International, 1984.Google Scholar
  18. 18.
    C. C. Morgan. Data Refinement by Miracles. Information Processing Letters 26:243–246, January 1988.MathSciNetGoogle Scholar
  19. 19.
    C. Morgan. Programming from Specifications. Prentice-Hall, 1990.Google Scholar
  20. 20.
    J. M. Morris. A Theoretical Basis for Stepwise Refinement and the Programming Calculus. Science of Computer Programming, 9:287–306, 1987.CrossRefGoogle Scholar
  21. 21.
    G. Nelson. A Generalization of Dijkstra's Calculus. ACM Transactions on Programming Languages and Systems, 11(4):517–562, October 1989.Google Scholar
  22. 22.
    United States Department of Defence. Reference manual for the Ada programming language. ANSI/MIL-STD-1815A-1983, American National Standards Institute, New York, 1983.Google Scholar
  23. 23.
    N. Wirth. The programming language Oberon. Software — Practice and Experience, 18(7), 1988.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • R. J. R. Back
    • 1
  • K. Sere
    • 2
  1. 1.Department of Computer ScienceÅbo Akademi UniversityTurkuFinland
  2. 2.Department of Computer Science and Applied MathematicsUniversity of KuopioKuopioFinland

Personalised recommendations