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; and forming a symbolic value at an output of a multiplexer, that conditionally evaluates to a symbolic value, chosen from a set of symbolic values input to the multiplexer, dependent upon a value at a selector input of the multiplexer.