We generalize the notion of slice introduced in our earlier paper [6]. A slice of a distributed computation with respect to a global predicate is the smallest computation that contains all consistent
cuts of the original computation that satisfy the predicate. We prove that slice exists for all global predicates. We also
establish that it is, in general, NP-complete to compute the slice. An optimal algorithm to compute slices for special cases
of predicates is provided. Further, we present an efficient algorithm to graft two slices, that is, given two slices, either
compute the smallest slice that contains all consistent cuts that are common to both slices or compute the smallest slice
that contains all consistent cuts that belong to at least one of the slices. We give application of slicing in general andgrafting
in particular to global property evaluation of distributed programs. Finally, we show that the results pertaining to consistent
global checkpoints [14],[18] can be derived as special cases of computation slicing.
supportedin part by the NSF Grants ECS-9907213, CCR-9988225, Texas Education BoardGran t ARP-320, an Engineering Foundation
Fellowship, andan IBM grant.