  CiaoPP is an analyzer and optimizer for logic programs, part of the Ciao
Prolog system. It includes PLAI, a fixpoint algorithm for the abstract
interpretation of logic programs which we adapt to use tabled constraint logic
programming. In this adaptation, the tabling engine drives the fixpoint
computation, while the constraint solver handles the LUB of the abstract
substitutions of different clauses. That simplifies the code and improves
performance, since termination, dependencies, and some crucial operations
(e.g., branch switching and resumption) are directly handled by the tabling
engine. Determining whether the fixpoint has been reached uses semantic
equivalence, which can decide that two syntactically different abstract
substitutions represent the same element in the abstract domain. Therefore, the
tabling analyzer can reuse answers in more cases than an analyzer using
syntactical equality. This helps achieve better performance, even taking into
account the additional cost associated to these checks. Our implementation is
based on the TCLP framework available in Ciao Prolog and is one-third the size
of the initial fixpoint implementation in CiaoPP. Its performance has been
evaluated by analyzing several programs using different abstract domains. This
paper is under consideration for publication in Theory and Practice of Logic
Programming (TPLP).
