Abstractly, a table can be seen as a set of entry triples
where
is a subgoal,
is its associated
answer set, and
its status -- whether it is
complete or incomplete. In terms of implementation,
``the table'' is actually a set of mini-tables, 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 thus relies not only on the call and on the
subgoals already present in the table, but also upon whether
call-variance or call-subsumption is used (cf. [32]).