sig
  exception CfAstError
  type expr =
      Apply of Loc.loc * string * CfAst.expr * CfAst.expr list
    | Connect of Loc.loc * CfAst.expr * CfAst.expr
    | Cond of Loc.loc * CfAst.expr * CfAst.expr * CfAst.expr
    | Name of Loc.loc * string
    | Comp of Loc.loc * string * string list * CfAst.stmt list
    | Prim of Loc.loc * string * string list
    | DotName of Loc.loc * CfAst.expr * string
    | DotPosition of Loc.loc * CfAst.expr * Intbig.intbig
    | Integer of Loc.loc * Intbig.intbig
    | Float of Loc.loc * float
    | Boolean of Loc.loc * bool
    | Vector of Loc.loc * string
    | Record of Loc.loc * (string * CfAst.expr) list
    | Free of Loc.loc
  and stmt = ApplyStmt of CfAst.expr | ConnectStmt of CfAst.expr
  val expr_loc : CfAst.expr -> Loc.loc
  val stmt_loc : CfAst.stmt -> Loc.loc
  val add_sub_env : CfAst.expr -> CfAst.expr -> string -> CfAst.expr
  val write_apply : CfAst.expr -> string -> Pervasives.out_channel -> unit
end