  Refactorings must not alter the program's functionality. However, not all
refactorings fulfill this requirement. Hence, one must explicitly check that a
refactoring does not alter the functionality. Since one rarely has a formal
specification of the program's behavior, we utilize the original program as
functional specification. Then, we check whether the original and refactored
program are functionally equivalent. To this end, we apply a common idea and
reduce equivalence checking to program verification. To increase efficiency,
our equivalence checker PEQcheck constructs one verification task per
refactored code segment instead of one per function as typically done by prior
work. In addition, PEQcheck considers the context of the code segments. For
instance, only variables that are modified and live are required to be
equivalent and read-only variables may be shared between original and
refactored code segments. We show that PEQcheck is sound.Moreover, our
evaluation testifies that the localized and context-aware checking performed by
\peqcheck can indeed be beneficial.
