sig
  type cmp = Imp_syntax.cmp = Lt | Gt | Eq | Lte | Gte
  type aop = Imp_syntax.aop = Add | Sub | Mul
  type aexp =
    Imp_syntax.aexp =
      AConst of int
    | AVar of string
    | AOp of Imp.aop * Imp.aexp * Imp.aexp
  type bexp =
    Imp_syntax.bexp =
      BConst of bool
    | BAnd of Imp.bexp * Imp.bexp
    | BOr of Imp.bexp * Imp.bexp
    | BNot of Imp.bexp
    | BCmp of Imp.cmp * Imp.aexp * Imp.aexp
  type cmd =
    Imp_syntax.cmd =
      CSkip
    | CAbort
    | CAssign of string * Imp.aexp
    | CIf of Imp.bexp * Imp.cmd * Imp.cmd
    | CWhile of Imp.bexp * Imp.bexp * Imp.cmd
    | CSeq of Imp.cmd * Imp.cmd
  val from_string : string -> Imp.bexp * Imp.cmd * Imp.bexp
  val from_file : string -> Imp.bexp * Imp.cmd * Imp.bexp
  val bexp_to_string : Imp.bexp -> string
end