Computations, abstractions and constraints in logic programs
Philippe Codognet, Gilberto Filé · 2003
A general framework, the computation system, that encompasses both the execution of constraint logic programs and their static analyses based on the abstract interpretation paradigm is presented. The notion of approximation (or abstraction) between two computation systems C and C' is defined. For a concrete program P of a computation system C, a corresponding abstract program P' of C' is defined such that the execution of P' in C' performs the abstract interpretation of P. In order to address the problem of making the computations finite, a general tabulation mechanism for any computation system that can be used to factorize the computation work and to prevent infinite computations is proposed. The equivalence of the normal and tabled computations is proved provided that the computation system's domain enjoys some adequate properties. The approach is illustrated by groundness analysis of logic programs and definiteness analysis of constraint logic programs.>