Module type Fix.DATA_FLOW_GRAPH

The signature DATA_FLOW_GRAPH describes a data flow analysis problem. It is used by DataFlow.Run and friends.

type variable

The type of variables, or graph vertices.

type property

The type of properties.

val foreach_root : (variable -> property -> unit) -> unit

foreach_root describes the root nodes of the data flow graph as well as the properties associated with them. foreach_root contribute must call contribute x p to indicate that x is a root and that p is a lower bound on the solution at x. It may call contribute x _ several times at a single root x.

val foreach_successor : variable -> property -> (variable -> property -> unit) -> unit

foreach_successor describes the edges of the data flow graph as well as the manner in which a property at the source of an edge is transformed into a property at the target. The property at the target must of course be a monotonic function of the property at the source.