A Prolog or a Concurrent Prolog program can be seen as a specialization or refinement of a program in Horn Clause Logic: In addition to the logic component a Prolog or Concurrent Prolog program contains information about the flow of control. In Prolog we have the cut statement and a leftmost depth first search strategy, in Concurrent Prolog we have read-only variables and commits. In this paper we study the flow of control of these languages by giving transition systems for abstract versions of Prolog, Horn Clause Logic and Concurrent Prolog. On the basis of these transition systems we define operational semantics for all three languages. Three basic sets (success set, finite failure set and the infinite failure set or divergence set) can be derived from the operational semantics. A comparison is made between the different sets: for Prolog we show that the success set and the finite failure sets of a Prolog program are smaller than the corresponding sets of a Horn Clause Logic program. The infinite failure sets are incomparable. A similar comparison is made between the success set and the finite failure sets for Horn Clause Logic and Concurrent Prolog. These comparisons give some feeling what happens if we put extra logical information in Horn Clause Logic programs.
CITATION STYLE
Kok, J. N. (1990). Specialization in logic programming: From Horn Clause Logic to prolog and concurrent prolog. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 430 LNCS, pp. 401–413). Springer Verlag. https://doi.org/10.1007/3-540-52559-9_73
Mendeley helps you to discover research relevant for your work.