Evaluation of the Implementation of an Abstract Interpretation Algorithm using Tabled CLP

by   Joaquín Arias, et al.

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).


page 1

page 2

page 3

page 4


Characterizations of Stable Model Semantics for Logic Programs with Arbitrary Constraint Atoms

This paper studies the stable model semantics of logic programs with (ab...

Abstract interpretation, Hoare logic, and incorrectness logic for quantum programs

Abstract interpretation, Hoare logic, and incorrectness (or reverse Hoar...

A Concurrent Constraint Programming Interpretation of Access Permissions

A recent trend in object oriented (OO) programming languages is the use ...

Modular Constraint Solver Cooperation via Abstract Interpretation

Cooperation among constraint solvers is difficult because different solv...

Proofs as stateful programs: A first-order logic with abstract Hoare triples, and an interpretation into an imperative language

We introduce an extension of first-order logic that comes equipped with ...

Flow-Sensitive Composition of Thread-Modular Abstract Interpretation

We propose a constraint-based flow-sensitive static analysis for concurr...

Absynthe: Abstract Interpretation-Guided Synthesis

Synthesis tools have seen significant success in recent times. However, ...

Please sign up or login with your details

Forgot password? Click here to reset