Module type Fang_flow.FACT

type t

A fact is some kind of information corresponding to each node in a flow graph.

Facts are elements of a lattice. Intuitively,

  • initial is the absence of knowledge of the fact: it's the least there is to be known
  • merge combines two facts into a fact that reflects the knowledge of both. It's the addition of knowledge to "refine" a fact.
  • is_refinement checks whether a fact is a more refined version of another fact (i.e., if it has more information than the other).
val initial : t
val is_refinement : prev:t -> t -> bool
val merge : t -> t -> t