TY - GEN
T1 - The semantics of program slicing and program integration
AU - Reps, Thomas
AU - Yang, Wuu
PY - 1989/1/1
Y1 - 1989/1/1
N2 - A slice of a program with respect to a program point p and variable x consists of all statements of the program that might affect the value of x at point p. Slices can be extracted particularly easily from a program representation called a program dependence graph, originally introduced as an intermediate program representation for performing optimizing, vectorizing, and parallelizing transformations. Such slices are of a slightly restricted form: rather than permitting a program to be sliced with respect to program point p and an arbitrary variable, a slice must be taken with respect to a variable that is defined at or used at p. This paper concerns the relationship between the execution behavior of a program and the execution behavior of its slices. Our main results about slicing are those stated as the Slicing Theorem and the Termination Theorem. The Slicing Theorem demonstrates that a slice captures a portion of a program's behavior in the sense that, for any initial state on which the program halts, the program and the slice compute the same sequence of values for each element of the slice. The Termination Theorem demonstrates that if a program is decomposed into (two or more) slices, the program halts on any state for which all the slices halt. These results are then used to provide semantic justification for a program-integration algorithm of Horwitz, Prins, and Reps.
AB - A slice of a program with respect to a program point p and variable x consists of all statements of the program that might affect the value of x at point p. Slices can be extracted particularly easily from a program representation called a program dependence graph, originally introduced as an intermediate program representation for performing optimizing, vectorizing, and parallelizing transformations. Such slices are of a slightly restricted form: rather than permitting a program to be sliced with respect to program point p and an arbitrary variable, a slice must be taken with respect to a variable that is defined at or used at p. This paper concerns the relationship between the execution behavior of a program and the execution behavior of its slices. Our main results about slicing are those stated as the Slicing Theorem and the Termination Theorem. The Slicing Theorem demonstrates that a slice captures a portion of a program's behavior in the sense that, for any initial state on which the program halts, the program and the slice compute the same sequence of values for each element of the slice. The Termination Theorem demonstrates that if a program is decomposed into (two or more) slices, the program halts on any state for which all the slices halt. These results are then used to provide semantic justification for a program-integration algorithm of Horwitz, Prins, and Reps.
UR - http://www.scopus.com/inward/record.url?scp=77950883012&partnerID=8YFLogxK
U2 - 10.1007/3-540-50940-2_47
DO - 10.1007/3-540-50940-2_47
M3 - Conference contribution
AN - SCOPUS:77950883012
SN - 9783540509400
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 360
EP - 374
BT - TAPSOFT 1989
A2 - Diaz, Josep
A2 - Orejas, Fernando
PB - Springer Verlag
T2 - 3rd International Joint Conference on Theory and Practice of Software Development, TAPSOFT 1989
Y2 - 13 March 1989 through 17 March 1989
ER -