Using the answer_abstract(Size)
attribute, a tabled
subgoal that produces answer substitutions (instances of the variables
in the goal) whose size exceed Size are trapped. In addition
to the tripwire actions, answer abstraction defines two additional modes
for dealing with too large answers as defines by the Prolog flag
max_table_answer_size_action:
- fail
- Ignore the too large answer. Note that this is semantically incorrect.
- bounded_rationality
- In this mode, the large answer is abstracted in the same way as
subgoals are abstracted (see section
7.10.1). This is semantically incorrect, but our third truth value undefined
is used to remedy this problem. In other words, the abstracted value is
added to the table as undefined and all conclusions that depend
on usage of this abstracted value are thus undefined unless they can
also be proved some other way.