Tabling as a Library with Delimited Control
Abstract
The logic programming language Prolog uses a resource-efficient SLD resolution strategy for query answering. Yet, its propensity for nontermination seriously detracts from the language's declarative nature. This problem is remedied by tabling, a modified execution strategy that allows a larger class of programs to terminate. Unfortunately, few Prolog systems provide tabling, because the documented implementation techniques are complex, low-level and require a prohibitive engineering effort. To enable more widespread adoption, this paper presents a novel implementation of tabling for Prolog that is both high-level and compact. It comes in the form of a Prolog library that weighs in at under 600 lines of code, is based on delimited control and delivers reasonable performance. PDF
Cite
Text
Desouter et al. "Tabling as a Library with Delimited Control." International Joint Conference on Artificial Intelligence, 2016.Markdown
[Desouter et al. "Tabling as a Library with Delimited Control." International Joint Conference on Artificial Intelligence, 2016.](https://mlanthology.org/ijcai/2016/desouter2016ijcai-tabling/)BibTeX
@inproceedings{desouter2016ijcai-tabling,
title = {{Tabling as a Library with Delimited Control}},
author = {Desouter, Benoit and van Dooren, Marko and Schrijvers, Tom and Vandenbroucke, Alexander},
booktitle = {International Joint Conference on Artificial Intelligence},
year = {2016},
pages = {4145-4149},
url = {https://mlanthology.org/ijcai/2016/desouter2016ijcai-tabling/}
}