  Equivalence checking is used to verify whether two programs produce
equivalent outputs when given equivalent inputs. Research in this field mainly
focused on improving equivalence checking accuracy and runtime performance.
However, for program pairs that cannot be proven to be either equivalent or
non-equivalent, existing approaches only report a classification result of
"unknown", which provides no information regarding the programs'
non-/equivalence.
  In this paper, we introduce PASDA, our partition-based semantic differencing
approach with best effort classification of undecided cases. While PASDA aims
to formally prove non-/equivalence of analyzed program pairs using a variant of
differential symbolic execution, its main novelty lies in its handling of cases
for which no formal non-/equivalence proof can be found. For such cases, PASDA
provides a best effort equivalence classification based on a set of
classification heuristics.
  We evaluated PASDA with an existing benchmark consisting of 141
non-/equivalent program pairs. PASDA correctly classified 61-74% of these cases
at timeouts from 10 seconds to 3600 seconds. Thus, PASDA achieved equivalence
checking accuracies that are 3-7% higher than the best results achieved by
three existing tools. Furthermore, PASDA's best effort classifications were
correct for 70-75% of equivalent and 55-85% of non-equivalent cases across the
different timeouts.
