Advertisement

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)

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.

Keywords

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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