YAProlog

YAP is a high performance Prolog compiler that can be configured in a version with tabling.

yap 6.2.2 is built calling sed -i.bak s/Clause_new/Clause::Clause_new/g packages/swi-minisat2/C/Solver.C ; sed -i.bak s/friend\ C/static\ C/g packages/swi-minisat2/C/SolverTypes.h ; ./configure --enable-tabling --enable-coroutining && make. The minisat2 source code distributed with yap 6.2.2 has some visibility issues that makes it incompatible with current compilers.

For yap we can measure the resource usage using /usr/bin/time.

tcff

We ran our tests loading the data with load_dync and enabled subsumtive tabling, and a trie index on the par relation.

% tcff.pl
:- table(tc/2).
tc(X,Y) :- par(X,Y).
tc(X,Y) :- par(X,Z), tc(Z,Y).
bench :- tc(_,_), fail.
bench.
:- initialization(main).
main :- unix(argv([File|_])),
        consult(File), bench.

Launch: yap -L tcff.pl -- {instance}

sgff

% sgff.pl
:- table(sg/2).
sg(X,X) :- par(_,X).
sg(X,Y) :- par(X,A), sg(A,B), par(Y,B).
bench :- sg(_,_), fail.
bench.