1. A method of propagating values in a data-flow graph, comprising: marking each node, of an initial set of nodes, with a symbolic value indicative of whether a node carries the same data content as another node; determining a first and a second combinational function, of the data-flow graph, are equivalent; determining a first condition under which the first and second combinational functions should produce a symbolic value in common; and forming a first symbolic value, at a first output of the first combinational function, that evaluates to a symbolic value in common with a second output of the second combinational function when the first condition is satisfied.