Module Pulselib.PulseFormulaInstanceOf

module F = Stdlib.Format
module L = IBase.Logging
module Var = PulseFormulaVar

Domain for tracking dynamic type of variables via positive and negative instanceof constraints

type dynamic_type_data = {
  1. typ : IR.Typ.t;
  2. source_file : IBase.SourceFile.t option;
}
val compare_dynamic_type_data : dynamic_type_data -> dynamic_type_data -> int
val equal_dynamic_type_data : dynamic_type_data -> dynamic_type_data -> bool
val yojson_of_dynamic_type_data : dynamic_type_data -> Ppx_yojson_conv_lib.Yojson.Safe.t
type instance_fact =
  1. | Known of dynamic_type_data
  2. | Unknown of {
    1. below : IR.Typ.t list;
    2. notbelow : IR.Typ.t list;
    }
val compare_instance_fact : instance_fact -> instance_fact -> int
val equal_instance_fact : instance_fact -> instance_fact -> bool
val yojson_of_instance_fact : instance_fact -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_instance_fact : F.formatter -> instance_fact -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_with_pp_var : (F.formatter -> Var.Map.key -> unit) -> IStdlib.Pp.F.formatter -> instance_fact Var.Map.t -> unit
val is_subtype : IR.Typ.t -> IR.Typ.t -> bool
val is_final : IR.Typ.t -> bool
val is_concrete_or_abstract : IR.Typ.t -> bool
val is_abstract : IR.Typ.t -> bool