I wrote this simple Prolog program.
man(socrates). mortal(X) :- man(X). immortal(X) :- immortal(X).
I asked it the usual questions, such as
Using tabling with XSB:
:- table foo/1. foo(X) :- foo(X). bar(X) :- bar(X).
and then:
| ?- [tabled]. [tabled loaded] yes | ?- foo(1). no | ?- bar(1). % does not finish