Prolog + ρLog
Description
PρLog (pronounced Pē-rō-log) is an experimental tool that extends logic programming with strategic conditional transformation rules, combining Prolog with ρLog calculus. It deals with term sequences (also called hedges), transforming them by conditional rules. Transformations are nondeterministic and may yield several results. Strategies provide a control on rule applications in a declarative way. The rules apply matching to the whole input hedge (or, if it is a single term, apply at the top position). Four different types of variables (for terms, term sequences, function symbols, and contexts) give the user flexible control on selecting terms in hedges or subterms in terms. As a result, the obtained code is usually quite short and declaratively clear.
PρLog is implemented in SWI-Prolog. In PρLog programs, Prolog code can also be used. In the current distribution, there are two versions of PρLog: full and light. The light version differs from the full one by not having context variables. As a consequence, PρLog-light can do matching more efficiently based on Prolog's unification, but sometimes the code written in PρLog-light is less compact compared to the full version.
Download
- Download prholog.zip. Version 1.0.5. Contains source files, help, and examples for both full and light versions of PρLog. Emacs users can find the PρLog mode files there. Tested for SWI-Prolog (8.2.1 and later). For instructions, see the readme file in the archive.
- Download an experimental extension of full PρLog with proximity relations prholog-full-prox.zip. Version 1.0.0. Contains source files and examples. Emacs users can find the PρLog mode files there. Tested for SWI-Prolog (8.2.1 and later). For instructions, see the readme file in the archive.
- Licensing: GNU Lesser General Public License (LGPL).
Publications
For the current description of PρLog, see the following two papers:
- Long version:
Besik Dundua, Temur Kutsia, and Klaus Reisenberger-Hagmayer. An Overview of PρLog. In: Yuliya Lierler and Walid Taha, editors. Proceedings of the 19th International Symposium on Practical Aspects of Declarative Languages, PADL 2017. Volume 10137 of Lecture Notes in Computer Science. Springer, 2017. 34–49. PDF, BibTeX. - Short version:
Besik Dundua, Temur Kutsia, and Klaus Reisenberger-Hagmayer. PρLog: Combining Logic Programming with Conditional Transformation Systems (Tool Description). In: Manuel Carro, Andy King, Marina De Vos, and Neda Saeedloei, editors. Technical Communications of the 32nd International Conference on Logic Programming, ICLP 2016. PDF, BibTeX. - The recent version of PρLog with proximity relations:
Besik Dundua. PρLog: ρLog: a system for rule-based programming. https://arxiv.org/abs/2108.11699, BibTeX.
PρLog is based on the ρLog calculus, described in the following paper:
- Mircea Marin and Temur Kutsia. Foundations of the Rule-Based System RhoLog. Journal of Applied Non-Classical Logics, 16(1–2):151–168, 2006. PDF.
The following papers concern earlier versions of PρLog and illustrate how it can be used for rewriting, XML processing, and Web reasoning:
- Besik Dundua, Temur Kutsia, and Mircea Marin, Strategies in PρLog. In: Maribel Fernández, editor, 9th International Workshop on Reduction Strategies in Rewriting and Programming, WRS 2009. Electronic Proceedings in Theoretical Computer Science 15, 2010, 32–43. PDF.
- Jorge Coelho, Besik Dundua, Mario Florido, and Temur Kutsia. A Rule-Based Approach to XML Processing and Web Reasoning. In: Pascal Hitzler and Thomas Lukasiewicz, editors, Proceedings of the 4th International Conference on Web Reasoning and Rule Systems, RR 2010. Volume 6333 of Lecture Notes in Computer Science. Springer, 2010, 164–172. PDF.
People