Applicative communicating processes in first order logic

  • Marco Bellia
  • Pierpaolo Degano
  • Giorgio Levi
  • Enrico Dameri
  • Maurizio Martelli
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 137)


We describe a first order applicative language for the specification of deterministic systems of communicating computing agents à la Kahn-MacQueen. Both the sequential and parallel interpreter we give are based on lazy evaluation, are demand driven and can handle infinite streams and non-terminating procedures. An equivalent least fixed-point semantics is then presented which neatly copes with the above features of the language. It is worth noting that computations in our logical based model can be considered as formal proofs, thus making formal reasoning about programs easier.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    E.A. Ashcroft and W.W. Wadge — LUCID, a Nonprocedural Language with Iteration — C.ACM 20 (1977), 519–526.Google Scholar
  2. 2.
    M. Bellia, P. Degano and G. Levi — A Functional plus Predicate Logic Programming Language — Proc. Logic Programming Workshop, Debrecen (Hungary) (1980), 334–347.Google Scholar
  3. 3.
    R.M. Burstall and J.A. Goguen — Putting Theories together to Make Specifications — Proc. 5th Int'l Joint Conf. on Artificial Intelligence, Cambridge (1977), 1045–1058.Google Scholar
  4. 4.
    R.M. Burstall, D.B. MacQueen and D.T. Sannella — HOPE: an Experimental Applicative Language — Proc. LISP Conference, Stanford (1980).Google Scholar
  5. 5.
    K. Clark and F. McCabe — IC-PROLOG Language Features — Proc. Logic Programming Workshop, Debrecen (Hungary) (1980), 45–52.Google Scholar
  6. 6.
    J.B. Dennis — First Version of a Data Flow Procedure Language — Proc. Symposium on Programming, Paris (1974), Springer Verlag, 362–376.Google Scholar
  7. 7.
    D. Friedman and D. Wise — CONS Should not Evaluate its Arguments — Automata, Languages and Programming, S. Michaelson ed., Edinburgh Univ. Press (1976), 256–284.Google Scholar
  8. 8.
    J.A. Goguen and J.J. Tardo — An Introduction to OBJ: a Language for Writing and Testing Formal Algebraic Specifications — Proc. IEEE Conf. on Specifications of Reliable Software, Los Angeles (1979), 170–189.Google Scholar
  9. 9.
    A. Hansson, S. Haradi and S.-Å. Tärnlund — Some Aspects on a Logic Machine Prototype — Proc. Logic Programming Workshop, Debrecen (Hungary) (1980), 53–60.Google Scholar
  10. 10.
    P. Henderson and J.H. Morris — A Lazy Evaluator — 3rd ACM Symp. on Principles of Programming Languages (1976), 95–103.Google Scholar
  11. 11.
    G. Huet and D.C. Oppen — Equations and Rewrite Rules: A Survey — in: Formal Languages: Perspectives and Open Problems, R. Book ed., Academic Press (1980)Google Scholar
  12. 12.
    G. Kahn — The Semantics of a Simple Language for Parallel Programming — Information Processing 74, North-Holland (1974), 471–475.Google Scholar
  13. 13.
    G. Kahn and D.B. MacQueen — Coroutines and Networks of Parallel Processes — Information Processing 77, North-Holland (1977), 993–998.Google Scholar
  14. 14.
    R.A. Kowalski — Predicate Logic as Programming Language — Information Processing 74, North-Holland (1974), 569–574.Google Scholar
  15. 15.
    P. Landin — A Correspondence between ALGOL 60 and Church's Lambda Calculus — C.ACM 8, (1965), 89–101.Google Scholar
  16. 16.
    G. Levi and F. Sirovich — Proving Program Properties, Symbolic Evaluation and Logical Procedural Semantics — Proc. MFCS'75. LNCS 32, Springer Verlag (1975), 294–301.Google Scholar
  17. 17.
    G. Levi and A. Pegna — Top-down mathematical semantics and symbolic execution — to be published in RAIRO Informatique Theorique.Google Scholar
  18. 18.
    D.B. MacQueen — Models for Distributed Computing — in: La Conception de Systèmes Reparties, INRIA (1978), 139–174.Google Scholar
  19. 19.
    R. Milner — A Calculus of Communicating Systems — LNCS 92, Springer Verlag (1980).Google Scholar
  20. 20.
    D.B. Musser — Abstract Data Types in the AFFIRM System — Proc. IEEE Conf. on Specifications of Reliable Software, Los Angeles (1979), 47–57.Google Scholar
  21. 21.
    M.H. van Hemden and R.A. Kowalski — The Semantics of Predicate Logic as a Programming Language — J.ACM 23 (1976), 733–742.Google Scholar
  22. 22.
    M.H. vanHemden, G.J. de Lucena and H. de M. Silva — Predicate Logic as a Language for Parallel Programming — CS-79-15, Univ. of Waterloo, Dept. of Comp. Science, Nov. 1980.Google Scholar
  23. 23.
    J. Vuillemin — Correct and Optimal Implementations of Recursion in a Simple Programming Language — J.CSS 9 (1974).Google Scholar
  24. 24.
    C. Wadsworth — Semantics and Pragmatics of the Lambda-Calculus — PhD. Thesis, Oxford, 1971.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1982

Authors and Affiliations

  • Marco Bellia
    • 1
  • Pierpaolo Degano
    • 1
  • Giorgio Levi
    • 1
  • Enrico Dameri
    • 2
  • Maurizio Martelli
    • 3
  1. 1.Istituto di Scienze dell'InformazioneUniversità di PisaItaly
  2. 2.Systems & Management SpA, Area Tecnologie SoftwarePisaItaly
  3. 3.Istituto CNUCE - C.N.R.PisaItaly

Personalised recommendations