--------------------------------------------------------------------------------
-- Solve a fixed-point of a dataflow problem.
--- O(N+H*E) calls to update where
--- N = number of nodes,
--- E = number of edges,
--- H = maximum height of the lattice for any particular node.
+--
-- dependants: map from nodes to those who's value depend on the argument node
-- update:
-- Given the node which needs to be updated, and
-- state: some sort of state (usually a map)
-- containing the initial value for each node
--
+-- Complexity: O(N+H*E) calls to 'update' where
+-- N = number of nodes,
+-- E = number of edges,
+-- H = maximum height of the lattice for any particular node.
+--
-- Sketch for proof of complexity:
-- Note that the state is threaded through the entire execution.
-- Also note that the height of the latice at any particular node