simple scheduler that visits CFG nodes in reverse postorder. fast/precise for straightline code and conditionals; not as good for loops (may visit nodes after a loop multiple times).

### Parameters

`CFG : InferModules.ProcCfg.S`

### Signature

`module CFG = CFG`
`module M = CFG.Node.IdMap`
`module WorkUnit : sig ... end`
`type t````=` `{`

`worklist : WorkUnit.t M.t;`
`cfg : CFG.t;`

`}```
`val schedule_succs : t ‑> CFG.Node.t ‑> t`

schedule the succs of `node` for analysis

`val pop : t ‑> (CFG.Node.t * WorkUnit.IdSet.elt list * t) option`

remove and return the node with the highest priority (note that smaller integers have higher priority), the ids of its visited predecessors, and new schedule

`val empty : CFG.t ‑> t`