Applications propagate changes to dependent objects by setting new property values on graph nodes, activating the nodes, and evaluating the graph.
Graph evaluation includes two phases. In the first phase, nodes are activated. When an application activates a node, the graph topologically sorts the nodes descending from the activated node. This sort ensures that no cycles are present in the graph.
In the second phase, the graph traverses activated nodes according to the sort order, and evaluates each visited node and edge.