sig
  type tenv = {
    te_vars : (string * Types.typ) list;
    te_ctors : (string * Types.typ) list;
    te_rfields : (string * Types.typ) list;
    te_defns : (string * Types.typ) list;
    te_prims : (string * Types.typ_scheme) list;
  }
  val builtin_tenv : Typing.tenv
  exception Undef_symbol of string * string * string
  exception Type_error of Expr.t * Types.typ * Types.typ
  exception Typing_error of string * string * Types.typ * Types.typ
  exception Illegal_cast of Expr.t
  exception Unbound_type_ctor of string
  exception Invalid_record_access of Expr.t
  val type_of_type_expr : Typing.tenv -> Type_expr.t -> Types.typ
  val type_expression : Typing.tenv -> Expr.t -> Types.typ
  val type_check_stim :
    Typing.tenv -> string -> Types.typ -> Global.stim_desc -> unit
  val type_fsm_model : Typing.tenv -> Fsm.model -> unit
  val type_fsm_inst : Typing.tenv -> Fsm.inst -> unit
  val dump_tenv : Pervasives.out_channel -> Typing.tenv -> unit
end