An Application of Constraint Propagation to Data-Flow Analysis