SWI-Prolog

SWI Prolog is a robust and scalable implementation of the Prolog language. However, the support for tabling is very new, and declared as merely a first prototype. As mentioned on the SWI Prolog web page, it cannot be considered yet as a serious competitor to the above systems.

swipl is built calling ./prepare; ./build.templ. We built and benchmarked the versions

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

tcff

The ensure termination we have to enable tabling on the tc relation.

% tcff.pl
:- use_module(library(tabling)).
:- table tc/2.
tc(A, B) :- par(A, B).
tc(A, B) :- par(A, X), tc(X, B).
bench :- tc(_,_),fail.
bench.
go :- current_prolog_flag(argv, [Datafile|_]),
      consult(Datafile), bench.

Launch: swipl -l tcff.pl -g go -g halt -- {instance}