  Program slicing reduces a program to a smaller version that retains a chosen
computation, referred to as a slicing criterion. One recent multi-lingual
slicing approach, observation-based slicing (ORBS), speculatively deletes parts
of the program and then executes the code. If the behavior of the slicing
criteria is unchanged, the speculative deletion is made permanent.
  While this makes ORBS language agnostic, it can lead to the production of
some non-intuitive slices. One particular challenge is when the execution
environment plays a role. For example, ORBS will delete the line "a = 0" if the
memory location assigned to a contains zero before executing the statement,
since deletion will not affect the value of a and thus the slicing criterion.
Consequently, slices can differ between execution environments due to factors
such as initialization and call stack reuse.
  The technique considered, nVORBS, attempts to ameliorate this problem by
validating a candidate slice in n different execution environments. We conduct
an empirical study to collect initial insights into how often the execution
environment leads to slice differences. Specifically, we compare and contrast
the slices produced by seven different instantiations of nVORBS. Looking
forward, the technique can be seen as a variation on metamorphic testing, and
thus suggests how ideas from metamorphic testing might be used to improve
dynamic program analysis.
