sig
  type env
  type label
  type value =
      Term
    | Addr of Sigs.s_lval
    | Lval of Sigs.s_lval * Pcfg.label
    | Chunk of string * Pcfg.label
  val create : unit -> Pcfg.env
  val register : Conditions.sequence -> Pcfg.env
  val at : Pcfg.env -> id:int -> Pcfg.label
  val find : Pcfg.env -> Lang.F.term -> Pcfg.value
  val updates :
    Pcfg.env ->
    Pcfg.label Sigs.sequence -> Lang.F.Vars.t -> Sigs.update Bag.t
  val visible : Pcfg.label -> bool
  val subterms : Pcfg.env -> (Lang.F.term -> unit) -> Lang.F.term -> bool
  val prev : Pcfg.label -> Pcfg.label list
  val next : Pcfg.label -> Pcfg.label list
  val iter : (Sigs.mval -> Lang.F.term -> unit) -> Pcfg.label -> unit
  val branching : Pcfg.label -> bool
  class virtual engine :
    object
      method is_atomic_lv : Sigs.s_lval -> bool
      method pp_addr : Format.formatter -> Sigs.s_lval -> unit
      method virtual pp_atom : Format.formatter -> Lang.F.term -> unit
      method pp_chunk : Format.formatter -> string -> unit
      method virtual pp_flow : Format.formatter -> Lang.F.term -> unit
      method pp_host : Format.formatter -> Sigs.s_host -> unit
      method pp_label : Format.formatter -> Pcfg.label -> unit
      method pp_lval : Format.formatter -> Sigs.s_lval -> unit
      method pp_offset : Format.formatter -> Sigs.s_offset list -> unit
      method pp_ofs : Format.formatter -> Sigs.s_offset -> unit
    end
end