Skip to main content

ProFun — A Language for executable specifications

  • Concurrent and Parallel Programming
  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1140))

Abstract

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.

This work was partially supported by the HCM Network “EXPRESS” (Expressiveness of Languages for Concurrency).

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Robert Amadio and Mads Dam. Towards a modal theory of types for the π-calculus. R96:03, SICS, 1996.

    Google Scholar 

  2. 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. J.C.M. Baeten, editor. Applications of Process Algebra. Cambridge University Press, 1990.

    Google Scholar 

  4. Tommaso Bolognesi and Ed Brinksma. Introduction to the ISO specification language LOTOS. Computer Networks and ISDN System, 14:25–59, 1987.

    Google Scholar 

  5. Bell Laboratories,AT&T. Standard ML of New Jersey — User's Guide (Version 0.93), Feb 1993.

    Google Scholar 

  6. G. Berry and G. Gonthier. The Esterel Synchronous Programming Language: Design, Semantics, Implementation. Technical report, ENSMP and INRIA, 1988.

    Google Scholar 

  7. 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. 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. A.J. Field and P.G. Harrison. Functional Programming. Addison Wesley, 1988.

    Google Scholar 

  10. W. Ferreira and M. Hennessy. Towards a Semantic Theory of CML. Technical report, University of Sussex, 1995.

    Google Scholar 

  11. 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. Thomas Gehrke. Eine Programmiersprache für verteilte Systeme mit funktionalem Datenanteil. Master's thesis, Universität Hildesheim, 1996.

    Google Scholar 

  13. Thomas Gehrke and Michaela Huhn. ProFun — a Language for Executable Specifications. Technical Report HIB 17/96, Universität Hildesheim, 1996.

    Google Scholar 

  14. 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. 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. 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. C.A.R. Hoare. Communicating Sequential Processes. Prentice Hall, 1985.

    Google Scholar 

  18. ISO-OSI. LOTOS — A Formal Description Technique Based on the Temporal Ordering of Observational Behaviour. DIS 8807, 1987.

    Google Scholar 

  19. 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. Rita Loogen. Parallele Implementierung funktionaler Programmiersprachen. Springer, 1990.

    Google Scholar 

  21. Robin Milner. Communication and Concurrency. Prentice Hall, 1989.

    Google Scholar 

  22. Eugenio Moggi. Notions of computation and monads. Information and Computation, 93:55–92, 1991.

    Google Scholar 

  23. 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. 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. Charles Pecheur. A Proposal for Data Types for E-LOTOS. Technical report, University of Liège, 1994.

    Google Scholar 

  26. 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. J.H. Reppy. CML: A Higher-order Concurrent Language. Technical report, Cornell University, 1993.

    Google Scholar 

  28. B. Stroustrup. The C++ programming language. Addison-Wesley, 1992.

    Google Scholar 

  29. Sun Microsystems GmbH. Multithreaded Programming Guide, 1994.

    Google Scholar 

  30. B. Thomsen et al. Facile Antigua Release Programming Guide. Technical Report ECRC-93-20, ECRC GmbH, München, 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Herbert Kuchen S. Doaitse Swierstra

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Gehrke, T., Huhn, M. (1996). ProFun — A Language for executable specifications. In: Kuchen, H., Doaitse Swierstra, S. (eds) Programming Languages: Implementations, Logics, and Programs. PLILP 1996. Lecture Notes in Computer Science, vol 1140. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-61756-6_93

Download citation

  • DOI: https://doi.org/10.1007/3-540-61756-6_93

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-61756-3

  • Online ISBN: 978-3-540-70654-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics