Slicing is a technique to decompose programs based on the analysis of the c
ontrol and data flow. In the original Weiser's definition, a slice consists
of any subset of program statements preserving the behaviour of the origin
al program with respect to a program point and a subset of the program vari
ables (slicing criterion), for any execution path. We present conditioned s
licing, a general slicing model based on statement deletion. A conditioned
slice consists of a subset of program statements which preserves the behavi
our of the original program with respect to a slicing criterion for a given
set of execution paths. The set of initial states of the program that char
acterise these paths is specified in the form of a first order logic formul
a on the input variables. We also show how slices deriving from other state
ment deletion based slicing models can be defined as conditioned slices. Th
is is used to formally define a partial ordering relation between slicing m
odels and to build a classification framework. (C) 1998 Elsevier Science B.
V. All rights reserved.