Formal Aspects of Computing

, Volume 23, Issue 4, pp 567–583

Thread algebra for poly-threading

Open Access


It is a fact of life that sequential programs are often fragmented. Consequently, fragmented program behaviours are frequently found. We consider this phenomenon in the setting of thread algebra. We extend basic thread algebra with poly-threading, the barest mechanism for sequencing of threads that are taken for program fragment behaviours. This mechanism is the counterpart of program overlaying at the level of program behaviours. We relate the resulting theory to the process theory known as ACP and use it to describe analytic execution architectures suited for fragmented programs. We also consider the case where the steps of fragmented program behaviours are interleaved in the ways of non-distributed and distributed multi-threading.


Poly-threading Thread algebra Process algebra Execution architecture Non-distributed multi-threading Distributed multi-threading 


  1. BB03.
    Bergstra JA, Bethke I (2003) Polarized process algebra and program equivalence. In: Baeten JCM, Lenstra JK, Parrow J, Woeginger GJ (eds), Proceedings 30th ICALP, volume 2719 of Lecture Notes in Computer Science. Springer, Berlin pp. 1–21Google Scholar
  2. BBP07.
    Bergstra JA, Bethke I, Ponse A (2007) Decision problems for pushdown threads. Acta Informatica 44(2): 75–90MathSciNetMATHCrossRefGoogle Scholar
  3. BK84.
    Bergstra JA, Klop JW (1984) Process algebra for synchronous communication. Inf Control 60(1–3) :109–137Google Scholar
  4. BL02.
    Bergstra JA, Loots ME (2002) Program algebra for sequential code. J Logic Algebraic Program 51(2): 125–156MathSciNetMATHCrossRefGoogle Scholar
  5. BM07a.
    Bergstra JA, Middelburg CA (2007) Instruction sequences with indirect jumps. Sci Annal Comput Sci 17: 19–46MathSciNetGoogle Scholar
  6. BM07b.
    Bergstra JA, Middelburg CA (2007) Thread algebra for strategic interleaving. Formal Aspects Comput 19(4): 445–474MathSciNetMATHCrossRefGoogle Scholar
  7. BM08a.
    Bergstra JA, Middelburg CA (2008) Distributed strategic interleaving with load balancing. Future Gener Comput Syst 24(6): 530–548CrossRefGoogle Scholar
  8. BM08b.
    Bergstra JA, Middelburg CA. Thread algebra for sequential poly-threading. Electronic Report PRG0804, Programming Research Group, University of Amsterdam, March 2008. Available at Also available at \({\tt arXiv:0803.0378v1\,\,[cs.LO]}\)
  9. BM08c.
    Bergstra JA, Middelburg CA Thread extraction for polyadic instruction sequences. Electronic Report PRG0803, Programming Research Group, University of Amsterdam. Available at Also available at \({\tt arXiv:0802.1578v2\,\,[cs.PL]}\)
  10. BP07.
    Bergstra JA, Ponse A (2007) Execution architectures for program algebra. J Appl Logic 5(1): 170–192MathSciNetMATHCrossRefGoogle Scholar
  11. BW90.
    Baeten JCM, Weijland WP (1990) Process Algebra, volume 18 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, CambridgeGoogle Scholar
  12. Car84.
    Carlow GD (1984) Architecture of the space shuttle primary avionics software system. Commun ACM 27(9): 926–936CrossRefGoogle Scholar
  13. CPC10.
    Che W, Panda A, Chatha KS (2010) Compilation of stream programs for multicore processors that incorporate scratchpad memories. In DATE ’10, pp 1118–1123. IEEE Computer Society Press, AlamitosGoogle Scholar
  14. Fok00.
    Fokkink WJ (2000) Introduction to Process Algebra. Texts in Theoretical Computer Science, An EATCS Series. Springer, BerlinGoogle Scholar
  15. GJSB00.
    Gosling J, Joy B, Steele G, and Bracha G (2000) The Java Language Specification. Addison-Wesley, Reading, MA, second ednGoogle Scholar
  16. Hoa85.
    Hoare CAR (1985) Communicating Sequential Processes. Prentice-Hall, Englewood CliffsMATHGoogle Scholar
  17. HWG03.
    Hejlsberg A, Wiltamuth S, Golde P (2003) C# Language Specification. Addison-Wesley, Reading, MAGoogle Scholar
  18. M+05.
    Maeda S et al (2005) A real-time software platform for the cell processor. IEEE Micro 25(5): 20–29CrossRefGoogle Scholar
  19. Mil89.
    Milner R (1989) Communication and Concurrency. Prentice-Hall, Englewood CliffsMATHGoogle Scholar
  20. Pan68.
    Pankhurst RJ (1968) Program overlay techniques. Communications of the ACM 11(2): 119–125MATHCrossRefGoogle Scholar
  21. PvdZ06.
    Ponse A, van der Zwaag MB (2006) An introduction to program and thread algebra. In: Beckmann A et al (eds) CiE 2006, volume 3988 of Lecture Notes in Computer Science. Springer, Berlin, pp. 445–458Google Scholar
  22. ST99.
    Sannella D, Tarlecki A (1999) Algebraic preliminaries. In: Astesiano E, Kreowski H-J, Krieg-Brückner B (eds) Algebraic Foundations of Systems Specification. Springer, Berlin, pp. 13–30Google Scholar
  23. Stu78.
    Stubblefield FW (1978) A main program and overlay manager subsystem within a distributed function laboratory computer system. IEEE Trans Nuclear Sci 25(1): 217–225CrossRefGoogle Scholar
  24. Wir90.
    Wirsing M (1990) Algebraic specification. In: van Leeuwen J (ed) Handbook of Theoretical Computer Science, volume B, pp. 675–788. Elsevier, AmsterdamGoogle Scholar

Copyright information

© The Author(s) 2011

Authors and Affiliations

  1. 1.Faculty of Science, Informatics InstituteUniversity of AmsterdamAmsterdamThe Netherlands

Personalised recommendations