A Virtual Machine for Functional Logic Computations

  • Sergio Antoy
  • Michael Hanus
  • Jimeng Liu
  • Andrew Tolmach
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3474)


We describe the architecture of a virtual machine for executing functional logic programming languages. A distinguishing feature of our machine is that it preserves the operational completeness of non-deterministic programs by concurrently executing a pool of independent computations. Each computation executes only root-needed sequential narrowing steps. We describe the machine’s architecture and instruction set, and show how to compile overlapping inductively sequential programs to sequences of machine instructions. The machine has been implemented in Java and in Standard ML.


Virtual Machine Logic Programming Instruction Sequence Machine Instruction Operational Completeness 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albert, E., Hanus, M., Huch, F., Oliver, J., Vidal, G.: Operational semantics for declarative multi-paradigm languages. Journal of Symbolic Computation (2005) (to appear)Google Scholar
  2. 2.
    Antoy, S.: Definitional trees. In: Kirchner, H., Levi, G. (eds.) ALP 1992. LNCS, vol. 632, pp. 143–157. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  3. 3.
    Antoy, S.: Optimal non-deterministic functional logic computations. In: Hanus, M., Heering, J., Meinke, K. (eds.) ALP 1997 and HOA 1997. LNCS, vol. 1298, pp. 16–30. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  4. 4.
    Antoy, S.: Constructor-based conditional narrowing. In: Proc. of the 3rd International Conference on Principles and Practice of Declarative Programming (PPDP 2001), Florence, Italy, pp. 199–206. ACM, New York (2001)CrossRefGoogle Scholar
  5. 5.
    Antoy, S.: Evaluation strategies for functional logic programming. Journal of Symbolic Computation (2005) (to appear)Google Scholar
  6. 6.
    Antoy, S., Echahed, R., Hanus, M.: A needed narrowing strategy. Journal of the ACM 47(4), 776–822 (2000)CrossRefMathSciNetGoogle Scholar
  7. 7.
    Antoy, S., Hanus, M.: Compiling multi-paradigm declarative programs into Prolog. In: Kirchner, H. (ed.) FroCos 2000. LNCS, vol. 1794, pp. 171–185. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  8. 8.
    Antoy, S., Hanus, M., Massey, B., Steiner, F.: An implementation of narrowing strategies. In: Proc. of the 3rd International ACM SIGPLAN Conference on Principles and Practice of Declarative Programming (PPDP 2001), pp. 207–217. ACM Press, New York (2001)CrossRefGoogle Scholar
  9. 9.
    Antoy, S., Johnson, S.: TeaBag: A functional logic language debugger. In: Proc. 13th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2004), Aachen, Germany, pp. 4–18 (2004); Technical Report AIB-2004-05, RWTH AachenGoogle Scholar
  10. 10.
    Chakravarty, M.M.T., Lock, H.C.R.: Towards the uniform implementation of declarative languages. Computer Languages 23(2-4), 121–160 (1997)zbMATHCrossRefGoogle Scholar
  11. 11.
    González Moreno, J.C., López Fraguas, F.J., Hortalá González, M.T., Rodríguez Artalejo, M.: An approach to declarative programming based on a rewriting logic. The Journal of Logic Programming 40, 47–87 (1999)zbMATHCrossRefGoogle Scholar
  12. 12.
    Hanus, M.: The integration of functions into logic programming: From theory to practice. Journal of Logic Programming 19, 20, 583–628 (1994)CrossRefMathSciNetGoogle Scholar
  13. 13.
    Hanus, M.: A unified computation model for functional and logic programming. In: Proc. 24st ACM Symposium on Principles of Programming Languages (POPL 1997), pp. 80–93 (1997)Google Scholar
  14. 14.
    Hanus, M., Antoy, S., Engelke, M., Höppner, K., Koj, J., Niederau, P., Sadre, R., Steiner, F.: PAKCS: The Portland Aachen Kiel Curry System (2004), Available at,
  15. 15.
    Hanus, M., Prehofer, C.: Higher-order narrowing with definitional trees. Journal of Functional Programming 9(1), 33–75 (1999)zbMATHCrossRefMathSciNetGoogle Scholar
  16. 16.
    Hanus, M., Sadre, R.: An abstract machine for Curry and its concurrent implementation in Java. Journal of Functional and Logic Programming 1999(6) (1999)Google Scholar
  17. 17.
    Hanus, M., Steiner, F.: Controlling search in declarative programs. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 374–390. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  18. 18.
    Hanus, M. (ed.): Curry: An integrated functional logic language (vers. 0.8) (2003), Available at,
  19. 19.
    López-Fraguas, F., Sánchez-Hernández, J.: TOY: A Multiparadigm Declarative System. In: Narendran, P., Rusinowitch, M. (eds.) RTA 1999. LNCS, vol. 1631, pp. 244–247. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  20. 20.
    Lux, W., Kuchen, H.: An efficient abstract machine for Curry. In: Beiersdörfer, K., Engels, G., Schäfer, W. (eds.) Informatik 1999 — Annual meeting of the German Computer Science Society (GI), pp. 390–399. Springer, Heidelberg (1999)Google Scholar
  21. 21.
    Middeldorp, A.: Call by need computations to root-stable form. In: Proc. 24th ACM Symposium on Principles of Programming Languages, Paris, pp. 94–105 (1997)Google Scholar
  22. 22.
    Tolmach, A., Antoy, S., Nita, M.: Implementing functional logic languages using multiple threads and stores. In: Proc. of the Ninth International Conference on Functional Programming (ICFP 2004), Snowbird, Utah, USA, pp. 90–102. ACM Press, New York (2004)CrossRefGoogle Scholar
  23. 23.
    Warren, D.H.D.: Higher-order extensions to PROLOG: are they needed? Machine Intelligence 10, 441–454 (1982)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Sergio Antoy
    • 1
  • Michael Hanus
    • 2
  • Jimeng Liu
    • 1
  • Andrew Tolmach
    • 1
  1. 1.Computer Science Dept.Portland State UniversityPortlandU.S.A.
  2. 2.Institut für InformatikChristian-Albrechts-Universität KielKielGermany

Personalised recommendations