A correct, precise and efficient integration of set-sharing, freeness and linearity for the analysis of finite and rational tree languages 1
It is well known that freeness and linearity information positively interact with aliasing information, allowing both the precision and the efficiency of the sharing analysis of logic programs to be improved. In this paper, we present a novel combination of set-sharing with freeness and linearity information, which is characterized by an improved abstract unification operator. We provide a new abstraction function and prove the correctness of the analysis for both the finite tree and the rational tree cases. Moreover, we show that the same notion of redundant information as identified in Bagnara et al. (2000) and Zaffanella et al. (2002) also applies to this abstract domain combination: this allows for the implementation of an abstract unification operator running in polynomial time and achieving the same precision on all the considered observable properties.
Key Words: abstract interpretation; logic programming; abstract unification; rational trees; set-sharing; freeness; linearity.
1 This work has been funded by MURST projects “Automatic Program Certification by Abstract Interpretation”, “Abstract Interpretation, type systems and control-flow analysis”, and “Automatic Aggregate- and Number-Reasoning for Computing: from Decision Algorithms to Constraint Programming with Multisets, Sets, and Maps”; by the Integrated Action Italy-Spain “Advanced Development Environments for Logic Programs”; by the University of Parma's FIL scientific research project (ex 60%) “Pure and applied mathematics”; and by the UK's Engineering and Physical Sciences Research Council (EPSRC) under grant M05645.