sig
  type t
  type tau
  type lenv
  type r
  type phi
  type q
  val t_top : Inf.Type.t
  val t_undef : Inf.Type.t
  val t_int : Inf.Type.t
  val create_t_obj : Inf.Type.q -> Inf.Type.phi -> Inf.Type.t
  val create_t_fun :
    Inf.Vars.LEVar.t ->
    Inf.Type.t ->
    Inf.Type.t ->
    Inf.Type.phi -> Inf.Vars.LEVar.t -> Inf.Type.t -> Inf.Type.t
  val create_t_tv : Inf.Vars.TVar.t -> Inf.Type.t
  val empty_lenv : Inf.Type.lenv
  val add_to_lenv :
    Inf.Type.lenv -> Location.Loc.t -> Inf.Type.r -> Inf.Type.lenv
  val union_lenv : Inf.Type.lenv -> Inf.Type.lenv -> Inf.Type.lenv
  val create_lenv_levar : Inf.levar -> Inf.Type.lenv
  val empty_obj : Inf.Type.r
  val add_to_obj :
    Inf.Type.r -> Syntax.label -> Inf.Vars.TVar.t -> Inf.Type.r
  val create_r_otv : Inf.Vars.OTVar.t -> Inf.Type.r
  val create_phi_ls : Location.LSet.t -> Inf.Type.phi
  val create_phi_lsvar : Inf.Vars.LSVar.t -> Inf.Type.phi
  val q_in : Inf.Type.q
  val q_ex : Inf.Type.q
  val create_q_pv : Inf.Vars.PrVar.t -> Inf.Type.q
  val string_of : Inf.Type.t -> string
  val string_of_p : Inf.Type.q * Inf.Type.phi -> string
  val string_of_lenv : Inf.Type.lenv -> string
  val string_of_r : Inf.Type.r -> string
  val string_of_phi : Inf.Type.phi -> string
  val string_of_q : Inf.Type.q -> string
end