ProFun — A Language for executable specifications

  • Thomas Gehrke
  • Michaela Huhn
Concurrent and Parallel Programming
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1140)


We present a new programming language ProFun which is aimed for the specification and prototype implementation of reactive systems. ProFun combines the paradigms of concurrent and functional programming. A formal operational semantics is developed as a basis for verification techniques. We have implemented a ProFun-compiler which uses C++ as its target language.


Executable Specifications Language Design Integration of Concurrent and Functional Programming Formal Reasoning 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [AD96]
    Robert Amadio and Mads Dam. Towards a modal theory of types for the π-calculus. R96:03, SICS, 1996.Google Scholar
  2. [Bac78]
    J. Backus. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM, 21:613–641, 1978.Google Scholar
  3. [Bae90]
    J.C.M. Baeten, editor. Applications of Process Algebra. Cambridge University Press, 1990.Google Scholar
  4. [BB87]
    Tommaso Bolognesi and Ed Brinksma. Introduction to the ISO specification language LOTOS. Computer Networks and ISDN System, 14:25–59, 1987.Google Scholar
  5. [Bel93]
    Bell Laboratories,AT&T. Standard ML of New Jersey — User's Guide (Version 0.93), Feb 1993.Google Scholar
  6. [BG88]
    G. Berry and G. Gonthier. The Esterel Synchronous Programming Language: Design, Semantics, Implementation. Technical report, ENSMP and INRIA, 1988.Google Scholar
  7. [BLOM]
    K. Bohlmann, R. Loogen, and Y. Ortega-Mallén. Specification of Concurrent Process Systems in a Functional Setting. Technical report, Universität Marburg.Google Scholar
  8. [Cle87]
    D. Clement. The Natural Dynamic Semantics of Mini-Standard ML. In E. Hartmut, R. Kowalski, and G. Levi, editors, TAPSOFT'87, volume 250 of LNCS, pages 67–81. Springer, 1987.Google Scholar
  9. [FH88]
    A.J. Field and P.G. Harrison. Functional Programming. Addison Wesley, 1988.Google Scholar
  10. [FH95]
    W. Ferreira and M. Hennessy. Towards a Semantic Theory of CML. Technical report, University of Sussex, 1995.Google Scholar
  11. [FHJ95]
    W. Ferreira, M. Hennessy, and A. Jeffrey. A Theory of Weak Bisimulation for Core CML. Technical Report 05/95, University of Sussex, 1995.Google Scholar
  12. [Geh96]
    Thomas Gehrke. Eine Programmiersprache für verteilte Systeme mit funktionalem Datenanteil. Master's thesis, Universität Hildesheim, 1996.Google Scholar
  13. [GH96]
    Thomas Gehrke and Michaela Huhn. ProFun — a Language for Executable Specifications. Technical Report HIB 17/96, Universität Hildesheim, 1996.Google Scholar
  14. [GK94]
    J.F. Groote and H. Korver. A correctness proof of the bakery protocol in μCRL. In A. Ponse et al., editor, Algebra of Communicating Processes, Workshops in Computing, pages 63–86. Springer, 1994.Google Scholar
  15. [GP91]
    J.F. Groote and A. Ponse. Proof theory for μCRL: a language for processes with data. Technical Report CS-R9138, CWI, 1991.Google Scholar
  16. [HMM86]
    R. Harper, D. MacQueen, and R. Milner. Standard ML. Technical Report ECS-LFCS-86-2, Dep. of Computer Science, University of Edinburgh, 1986.Google Scholar
  17. [Hoa85]
    C.A.R. Hoare. Communicating Sequential Processes. Prentice Hall, 1985.Google Scholar
  18. [ISO87]
    ISO-OSI. LOTOS — A Formal Description Technique Based on the Temporal Ordering of Observational Behaviour. DIS 8807, 1987.Google Scholar
  19. [Ler90]
    Xavier Leroy. The ZINC Experiment: An economical implementation of the ML language. Technical Report 117, Institut National de Recherche en Informatique et Automatique (INRIA), 1990.Google Scholar
  20. [Loo90]
    Rita Loogen. Parallele Implementierung funktionaler Programmiersprachen. Springer, 1990.Google Scholar
  21. [Mil89]
    Robin Milner. Communication and Concurrency. Prentice Hall, 1989.Google Scholar
  22. [Mog91]
    Eugenio Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.Google Scholar
  23. [MPW92]
    R. Milner, J. Parrow, and D. Walker. A calculus of mobile processes. Information and Computation, 100:1–40, 41–77, 1992. parts I and II.Google Scholar
  24. [NN93]
    Flemming Nielson and Hanne Riis Nielson. From CML to Process Algebras. In Proceedings of CONCUR '93, volume 715 of LNCS. Springer, 1993.Google Scholar
  25. [Pec94]
    Charles Pecheur. A Proposal for Data Types for E-LOTOS. Technical report, University of Liège, 1994.Google Scholar
  26. [Pie93]
    Benjamin C. Pierce. Programming in the Pi-Calculus — An Experiment in Programming Language Design. Technical report, Department of Computer Science, University of Edinburgh, 1993.Google Scholar
  27. [Rep93]
    J.H. Reppy. CML: A Higher-order Concurrent Language. Technical report, Cornell University, 1993.Google Scholar
  28. [Str92]
    B. Stroustrup. The C++ programming language. Addison-Wesley, 1992.Google Scholar
  29. [Sun94]
    Sun Microsystems GmbH. Multithreaded Programming Guide, 1994.Google Scholar
  30. [Tho93]
    B. Thomsen et al. Facile Antigua Release Programming Guide. Technical Report ECRC-93-20, ECRC GmbH, München, 1993.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Thomas Gehrke
    • 1
  • Michaela Huhn
    • 1
  1. 1.Institut für InformatikUniversität HildesheimHildesheimGermany

Personalised recommendations