Abstract. Ad e s c r i p t i o ni nt h eJ a c o b sa n dL a n g e nd o m a i ni sas e to f sharing groups where each sharing group is a set of program variables. The presence of a sharing group in a description indicates that all the variables in the group can be bound to terms that contain a common variable. The expressiveness of the domain, alas, is compromised by its intractability. Not only are descriptions potentially exponential in size, but abstract unification is formulated in terms of an operation, called closure under union, that is also exponential. This paper shows how abstract unification can be reformulated so that closures can be collapsed in two senses. Firstly, one closure operation can be folded into another so as to reduce the total number of closures that need to be computed. Secondly, the remaining closures canb ea p p l i e dt os m a l l e rd e s c r i p t i o n s . Therefore, although the operation remains exponential, the overhead of closure calculation is reduced. Experimental evaluation suggests that the cost of analysis can be substantially reduced by collapsing closures.
1I n t r o d u c t i o nThe philosophy of abstract interpretation is to simulate the behaviour of a program without actually running it. This is accomplished by replacing each operation in the program with an abstract analogue that operates, not on the concrete data, but a description of the data. The methodology applied in abstract interpretation is first to focus on the data, that is, pin down the relationship between the concrete data and a description, and then devise abstract operations that preserve this relationship. This amounts to showing that if the input to the abstract operation describes the input to the concrete operation, then the output of the abstract operation faithfully describes the output of the concrete operation. When this methodology is applied in logic programming, the focus is usually on the operation of abstract unification since this is arguably the most complicated domain operation. The projection operation, that merely removes information from a description, is rarely a major concern.In this paper, we revisit the projection operation of the classic set-sharing domain and we argue that the complexity of the abstract unification (amgu) operation can be curbed by the careful application of a reformulated projection operation. The computational problem at the heart of amgu is the closure under union operation [14] that operates on sharing abstractions which are constructed from sets of sharing groups. Each sharing group is, in turn, a set of program variables. Closure under union operation repeatedly unions together sets of sharing groups, drawn from a given sharing abstraction, until no new sharing group can be obtained. This operation is inherently exponential, hence the interest in different, and possibly more tractable, encodings of set-sharing [8,10]. However, even the most creative and beautiful set-sharing encoding proposed thus far [8], does not entirely finesse the complexity of clos...