(** * Properties of node enumeration *)
(** An enumeration of CFG nodes is correct if the following conditions hold: - All nodes for reachable basic blocks must be in the list. - The list is without repetition (so that no code duplication occurs).  We prove that the result of the [enumerate] function satisfies both conditions. *)

Lemma check_reachable_correct:
forall f reach s pc i,
check_reachable f reach s = true ->
f.(LTL.fn_code)!pc = Some i ->
reach!!pc = true ->
Nodeset.In pc s.