(* This module optimizes [LTL] code by suppressing all [IGoto]
   instructions. In short, every instruction whose successor is an
   [IGoto] instruction is modified so that its successor is the
   successor of the [IGoto] instruction, and this is repeated until no
   reachable [IGoto] instructions remain. Unreachable [IGoto]
   instructions remain in the graph, but will be implicitly eliminated
   in the translation of [LTL] to [LIN]. *)

val compress: Label.t -> LTL.graph -> Label.t * LTL.graph