sig
  type op2 =
      Add
    | Sub
    | Mul
    | Div
    | Mod
    | LShift
    | RShift
    | BAnd
    | BOr
    | LAnd
    | LOr
    | Eq
  type op1 = LNot | BNot
  type id = string
  type exp =
      EId of Sketching.id
    | EInt of int
    | EWidth
    | EOp2 of Sketching.op2 * Sketching.exp * Sketching.exp
    | EOp1 of Sketching.op1 * Sketching.exp
    | EHole of int
  type cmd =
      CSkip
    | CAbort
    | CAssign of Sketching.id * Sketching.exp
    | CIf of Sketching.exp * Sketching.cmd * Sketching.cmd
    | CSeq of Sketching.cmd * Sketching.cmd
    | CRepeat of Sketching.id * Sketching.exp * Sketching.cmd
  val from_string : string -> Sketching.cmd
  val from_file : string -> Sketching.cmd
  val to_string : Sketching.cmd -> string
end