We describe and compare design choices for meta-predicate semantics, as found in representative Prolog predicate-based module systems and in Logtalk. We look at the consequences of these design choices from a pragmatic perspective, discussing explicit qualification semantics, computational reflection support, expressiveness of meta-predicate directives, meta-predicate definitions safety, portability of meta-predicate definitions, and meta-predicate performance. We also describe how to extend the usefulness of meta-predicate definitions. Our aim is to provide useful insights to discuss meta-predicate semantics and portability issues based on actual implementations and common usage patterns.


meta-predicates predicate-based module systems objects 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Moura, P.: Logtalk – Design of an Object-Oriented Logic Programming Language. PhD thesis, Department of Computer Science, University of Beira Interior, Portugal (September 2003)Google Scholar
  2. 2.
    Moura, P.: Logtalk 2.43.2 User and Reference Manuals (October 2011)Google Scholar
  3. 3.
    Moura, P.: Secure Implementation of Meta-predicates. In: Gill, A., Swift, T. (eds.) PADL 2009. LNCS, vol. 5418, pp. 269–283. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  4. 4.
    ISO/IEC: International Standard ISO/IEC 13211-2 Information Technology — Programming Languages — Prolog — Part II: Modules. ISO/IEC (2000)Google Scholar
  5. 5.
    O’Keefe, R.: An Elementary Prolog Library,
  6. 6.
    Swedish Institute for Computer Science: Quintus Prolog User’s Manual (Release 3.5). Swedish Institute for Computer Science (December 2003)Google Scholar
  7. 7.
    Moura, P. (ed.): ISO/IEC DTR 13211–5:2007 Prolog Multi-threading predicates,
  8. 8.
    ISO/IEC: International Standard ISO/IEC 13211-1 Information Technology — Programming Languages — Prolog — Part I: General core. ISO/IEC (1995)Google Scholar
  9. 9.
    Bueno, F., Cabeza, D., Carro, M., Hermenegildo, M.V., López, P., Puebla, G.: Ciao Prolog System ManualGoogle Scholar
  10. 10.
    Cheadle, A.M., Harvey, W., Sadler, A.J., Schimpf, J., Shen, K., Wallace, M.G.: ECLiPSe: A tutorial introduction. Technical Report IC-Parc-03-1, IC-Parc, Imperial College, London (2003)Google Scholar
  11. 11.
    Wielemaker, J.: An overview of the SWI-Prolog programming environment. In: Mesnard, F., Serebenik, A. (eds.) Proceedings of the 13th International Workshop on Logic Programming Environments, Heverlee, Belgium, pp. 1–16. Katholieke Universiteit Leuven (December 2003); CW 371Google Scholar
  12. 12.
    Cabeza, D., Hermenegildo, M.V.: A New Module System for Prolog. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 131–148. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  13. 13.
    Nadathur, G., Miller, D.: An Overview of λProlog. In: Fifth International Logic Programming Conference, Seattle, pp. 810–827. MIT Press (August 1988)Google Scholar
  14. 14.
  15. 15.
    Group, T.X.R.: The XSB Programmer’s Manual: version 3.3 (April 2011)Google Scholar
  16. 16.
    Yang, G., Kifer, M.: Flora-2: User’s manual (2001)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Paulo Moura
    • 1
    • 2
  1. 1.Dep. of Computer ScienceUniversity of Beira InteriorPortugal
  2. 2.Center for Research in Advanced Computing SystemsINESC–TECPortugal

Personalised recommendations