  Logic programming with tabling and constraints (TCLP, tabled constraint logic
programming) has been shown to be more expressive and in some cases more
efficient than LP, CLP or LP + tabling. Previous designs of TCLP systems did
not fully use entailment to determine call / answer subsumption and did not
provide a simple and well-documented interface to facilitate the integration of
constraint solvers in existing tabling systems. We study the role of projection
and entailment in the termination, soundness and completeness of TCLP systems,
and present the design and an experimental evaluation of Mod TCLP, a framework
that eases the integration of additional constraint solvers. Mod TCLP views
constraint solvers as clients of the tabling system, which is generic w.r.t.
the solver and only requires a clear interface from the latter. We validate our
design by integrating four constraint solvers: a previously existing constraint
solver for difference constraints, written in C; the standard versions of
Holzbaur's CLP(Q) and CLP(R), written in Prolog; and a new constraint solver
for equations over finite lattices. We evaluate the performance of our
framework in several benchmarks using the aforementioned constraint solvers.
Mod TCLP is developed in Ciao Prolog, a robust, mature, next-generation Prolog
system. Under consideration in Theory and Practice of Logic Programming (TPLP).
