Title: Tabled Prolog and Linear Tabling
1Tabled Prolog and Linear Tabling
- Neng-Fa Zhou
- (City Univ. of New York)Yi-Dong Shen
- (Chinese Academy of Sciences)
- Taisuke Sato
- (Tokyo Inst. of Technology)
2Tabling is Useful
- Eliminate infinite loops path(X,Y)-edge(X,Y). p
ath(X,Y)-edge(X,Z),path(Z,Y). - Reduce redundant computations fib(0,1). fib(1,1)
. fib(N,F)-Ngt1, N1 is N-1,fib(N1,F1),
N2 is N-2,fib(N2,F2), F is F1F2.
3Tabling in OLDT (SLG-WAM)
- suspend/resume
- Complicate implementation
- freeze stacks
- overhead on standard programs
- garbage collection
table
producer
A...
...
consumer
A...
A is suspended after the existing answers are
exhausted
4Linear Tabling
- Advantages
- Easy to implement
- Space efficient
- Overhead-free
- Disadvantage
- Re-computation
- Optimizations
- Subgoal optimization
- Semi-naïve evaluation
table
A...
pioneer
...
follower
A...
A fails or becomes a producerafter consuming
existing answers A needs to be re-evaluated in
some cases
5The Linear Tabling Framework
p(X,Y)-p(X,Z),e(Z,Y).p(X,Y)-e(X,Y).
p(X,Y)-p(X,Z),e(Z,Y),memo(p(X,Y)).p(X,Y)-e(X,Y)
,memo(p(X,Y)). p(X,Y)-check_completion(p(X,Y)).
6The Linear Tabling Framework(cont.)
- table_start(A)
- Executed when a tabled subgoal A is encountered
- memo(A)
- Executed when a clause succeeds
- check_completion(A)
- Executed after all clauses have been tried.
7Definitions
- Loops, pioneers and followers
-
- A derivation Gi??Gj forms a loop if
- Gi(A,) and Gj(A,)
- A and A are variants
- A is an ancestor of A
- Subgoal A is called a pioneer and A is called a
follower of A.
8Definitions (cont.)
- Top-most looping nodes and subgoals
- A node in an SLD-tree is called a top-most
looping node if the selected subgoal of the node
is the pioneer of a loop that is not contained in
any other loops. -
9A Linear Tabling Method
- table_start(A)
- If A is complete, resolve A by using answers.
- If A is a pioneer, register A and resolve A by
using program clauses. - If A is a follower, resolve A by using answers
and fail A after all existing answers are
exhausted.
10A Linear Tabling Method (cont.)
- memo(A)
- Add A into the table and fail.
11A Linear Tabling Method (cont.)
- check_completion(A)
- If A has never occurred in a loop, complete A and
resolve A by using the answers. - If A is a top-most looping subgoal
- If no new answer was produced in the last round,
then complete A and resolve A by using the
answers - Otherwise, start a new round of evaluation of A.
- If A is a looping subgoal but not a top-most one
- Set As state to temporary complete and resolve A
by using the answers
12Example
p(X,Y)-p(X,Z),e(Z,Y),memo(p(X,Y)). (p1)p(X,Y)-e
(X,Y),memo(p(X,Y)). (p2) p(X,Y)-check_completion
(p(X,Y)). (p3) e(a,b). (e1) e(b,c). (e2)
program
1. p(a,Y0).
First round
p1
p3
p2
2. p(a,Z1), e(Z1,Y0), memo(p(a,Y0)).
3. e(a,Y0), memo(p(a,Y0)).
5. check_comp(p(a,Y0)).
e1
4. memo(p(a,b)).
13p(X,Y)-p(X,Z),e(Z,Y),memo(p(X,Y)). (p1)p(X,Y)-e
(X,Y),memo(p(X,Y)). (p2) p(X,Y)-check_completion
(p(X,Y)). (p3) e(a,b). (e1) e(b,c). (e2)
p(a,b).
table
program
Second round
1. p(a,Y0).
p1
p3
p2
6. p(a,Z1), e(Z1,Y0), memo(p(a,Y0)).
10. check_comp(p(a,Y0)).
use p(a,c)
use p(a,b)
9. e(c,Y0), memo(p(a,Y0)).
7. e(b,Y0), memo(p(a,Y0)).
p(a,b). p(a,c).
e2
8. memo(p(a,c)).
14Characteristics of the Method
- Fixpoints are computed by iterating the
evaluation of top-most looping subgoals - Followers consume answers only
- Pioneers consume answers lazily
- Top-most looping subgoals consume answers after
they are complete - Other looping subgoals consume answers after all
clauses have been tried
15Adopted and Related Tabling Strategies
- Lazy answer consumption
- Local scheduling strategy in SLG-WAM Freire96
- What to do after a follower consumes all
available answers? - Steals the pioneers choice pointer Zhou00
- Fails the follower Guo Gupta 01
- Where to start re-computation?
- At the top-most looping subgoal Shen98
- At every looping subgoal Guo01
16Strengths and Weaknesses
- Lazy answer consumption is suitable for
all-solution search - A basic operation used in PRISM
- Not suitable for single-solution search or
programs with cuts - For the query, once(p(X)), all solutions are
computed even though only one is needed.
17Optimization Techniques
- Subgoal Optimization
- In each round of evaluation of a top-most looping
subgoal, each subgoal needs to be evaluated only
once. - Semi-naïve Optimization
- Mimic the semi-naïve technique in bottom-up
evaluation at least one new answer is involved
in the join of answers for each rule.
18Semi-naïve Evaluation in Linear Tabling
- Let H-A1,,Ak,,An be a rule where Ak is the
last dependent subgoal of H. For a subgoal C of
H, it is safe for Ak to consume only new answers
if - 1. C has occurred in an early round
- 2. No subgoal Ai (iltk) has consumed a new answer.
19Performance Evaluation
20Papers
- N.F. Zhou, Y.D. Shen, L. Yuan, and J. You A
Linear Tabling Mechanism, The Journal of
Functional and Logic Programming, 2001. - N.F. Zhou and T. Sato Efficient Fixpoint
Computation in Linear Tabling, ACM SIGPLAN
International Conference on Principles and
Practice of Declarative Programming (PPDP),
pp.275-283, 2003. - N.F. Zhou, Y. Shen, and T. Sato Semi-naive
Evaluation in Linear Tabling, ACM PPDP, pp.90-97,
2004.