  When checking concurrent software using a finite-state model, we face a
formidable state explosion problem. One solution to this problem is
dependence-based program slicing, whose use can effectively reduce verification
time. It is orthogonal to other model-checking reduction techniques. However,
when slicing concurrent programs for model checking, there are conversions
between multiple irreplaceable models, and dependencies need to be found for
variables irrelevant to the verified property, which results in redundant
computation. To resolve this issue, we propose a Program Dependence Net (PDNet)
based on Petri net theory. It is a unified model that combines a control-flow
structure with dependencies to avoid conversions. For reduction, we present a
PDNet slicing method to capture the relevant variables' dependencies when
needed. PDNet in verifying linear temporal logic and its on-demand slicing can
be used to significantly reduce computation cost. We implement a model-checking
tool based on PDNet and its on-demand slicing, and validate the advantages of
our proposed methods.
