Content deleted Content added
Cite |
m Open access bot: url-access updated in citation with #oabot. |
||
(30 intermediate revisions by 12 users not shown) | |||
Line 1:
{{Short description|Technique in natural language processing}}
{{redirect|Tabling|the parliamentary procedure|Table (parliamentary procedure)}} '''Tabling''' is a technique first developed for natural language processing, where it was called [[Earley parsing]]. It consists of storing in a table (a.k.a. chart in the context of parsing) partial successful analyses that might come in handy for future reuse. Tabling consists of maintaining a table of goals that are called during execution, along with their answers, and then using the answers directly when the same goal is subsequently called. Tabling gives a guarantee of total correctness for any (pure) Prolog program without function symbols.<ref>{{Cite journal |
Tabling can be extended in various directions. It can support recursive predicates through '''SLG resolution''' or linear tabling. In a multi-threaded Prolog system tabling results could be kept private to a thread or shared among all threads. And in incremental tabling, tabling might react to changes.<ref>{{Cite journal |last1=Swift |first1=T. |journal=Annals of Mathematics and Artificial Intelligence |volume=25 |issue=3/4 |pages=201–240|title=Tabling for non-monotonic programming |year=1999 |doi=10.1023/A:1018990308362 |s2cid=16695800}}</ref><ref>{{cite journal|last1=Zhou|first1=Neng-Fa|last2=Sato|first2=Taisuke|title=Efficient Fixpoint Computation in Linear Tabling|journal=Proceedings of the 5th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming|date=2003|pages=275–283|url=http://www.sci.brooklyn.cuny.edu/~zhou/papers/ppdp03.pdf}}</ref>
== History ==
The adaptation of tabling into a logic programming proof procedure, under the name of Earley deduction, dates from an unpublished note from 1975 by [[David H. D. Warren|David H.D. Warren]].<ref>{{Cite book |
David S. Warren and his students adopted this technique with the motivation of changing Prolog’s semantics from the completion semantics to the minimal model semantics.
Tabled [[Prolog]] was first introduced in [[XSB]].<ref>{{Cite journal |
== References ==
{{reflist}}
* {{
[[Category:Logic programming]]
[[Category:Dynamic programming]]
{{prog-lang-stub}}
|