  Data flow testing creates test requirements as definition-use (DU)
associations, where a definition is a program location that assigns a value to
a variable and a use is a location where that value is accessed. Data flow
testing is expensive, largely because of the number of test requirements.
Luckily, many DU-associations are redundant in the sense that if one test
requirement (e.g., node, edge, DU-association) is covered, other
DU-associations are guaranteed to also be covered. This relationship is called
subsumption. Thus, testers can save resources by only covering DU-associations
that are not subsumed by other testing requirements. In this work, we formally
describe the Data Flow Subsumption Framework (DSF) conceived to tackle the data
flow subsumption problem. We show that DFS is a distributive data flow analysis
framework which allows efficient iterative algorithms to find the
Meet-Over-All-Paths (MOP) solution for DSF transfer functions. The MOP solution
implies that the results at a point $p$ are valid for all paths that reach $p$.
We also present an algorithm, called Subsumption Algorithm (SA), that uses DSF
transfer functions and iterative algorithms to find the local
DU-associations-node subsumption; that is, the set of DU-associations that are
covered whenever a node $n$ is toured by a test. A proof of SA's correctness is
presented and its complexity is analyzed.
