sig
  val assume : TypeCore.env -> TypeCore.mode_constraint -> TypeCore.env
  val analyze_data_types : TypeCore.env -> TypeCore.var list -> TypeCore.env
  val has_mode : Mode.mode -> TypeCore.env -> TypeCore.typ -> bool
  val is_duplicable : TypeCore.env -> TypeCore.typ -> bool
  val is_exclusive : TypeCore.env -> TypeCore.typ -> bool
end