Module Pulselib.PulseBaseAddressAttributes

module F = Stdlib.Format
module type S = sig ... end
include S with type key := Pulselib.PulseBasicInterface.AbstractValue.t
type t
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val empty : t
val filter_with_discarded_addrs : (Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
val always_reachable : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val java_resource_release : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_hack_builder : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val csharp_resource_release : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val in_reported_retain_cycle : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val get_closure_proc_name : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> IR.Procname.t option
val remove_copied_return : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_copied_from_const_ref : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val add_dict_contain_const_keys : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_dict_contain_const_keys : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_dict_contain_const_keys : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val std_vector_reserve : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_java_resource_released : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val is_csharp_resource_released : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val is_in_reported_retain_cycle : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val is_std_moved : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val is_std_vector_reserved : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val mark_as_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val remove_allocation_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_taint_attrs : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_all_must_not_be_tainted : ?kinds:Pulselib.PulseBasicInterface.TaintConfig.Kind.Set.t -> t -> t
val finalize_all_hack_builders : t -> t
val remove_must_be_valid_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val has_unknown_effect : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val is_hack_constinit_called : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val make_suitable_for_pre_summary : t -> t
val canonicalize_post : get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t

merge the attributes of all the variables that are equal according to get_var_repr and remove non-canonical variables in favor of their representative