Skip to Main Content
The present paper introduces the semantic basis for abstract slicing. This notion is more general than standard, concrete slicing, in that slicing criteria are abstract, i.e., defined on properties of data, rather than concrete values. This approach is based on abstract interpretation: properties are abstractions of data. Many properties can be investigated; e.g., the nullity of a program variable. Standard slicing is a special case, where properties are exactly the concrete values. As a practical outcome, abstract slices are likely to be smaller than standard ones, since commands which are relevant at the concrete level can be removed if only some abstract property is supposed to be preserved. This can make debugging and program understanding tasks easier, since a smaller portion of code must be inspected when searching for undesired behavior. The framework also includes the possibility to restrict the input states of the program, in the style of conditioned slicing, thus lying between static and dynamic slicing.