For our purposes, a table can be seen as a set of entry triples
S,
, Status
where S is a subgoal,
is its associated
answer set, and Status its status -- whether it is complete
or incomplete. In terms of implementation, ``the table'' is
actually a set of minitables, each one containing entries for a
particular predicate. Hence, we may refer to the table containing
entries for some predicate p/n as ``the table for p/n.''
Further recall that a particular predicate may be evaluated according to
either a variant or subsumptive strategy as chosen by the user.
Invocation of a call during an evaluation leads to the classification of
the call, as well as its possible insertion into the table. Each call
can be classified as either (a) a generator, or producer,
of an answer set, or (b) a consumer of the answer set of some
subgoal in the table. Creation of a table entry relies not only on the
call and the subgoals already present in the table, but upon the tabling
strategy as well.