sig
  type t
  val create : ?default:TypeInference.type_ -> unit -> TypeInference.Ctx.t
  val copy : TypeInference.Ctx.t -> TypeInference.Ctx.t
  val exit_scope : TypeInference.Ctx.t -> unit
  val declare : TypeInference.Ctx.t -> ID.t -> TypeInference.type_ -> unit
  val pop_new_types :
    TypeInference.Ctx.t -> (ID.t * TypeInference.type_) list
end