Content deleted Content added
Copying test from Prolog#Tabling |
m Open access bot: url-access updated in citation with #oabot. |
||
(27 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
== 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}}
|