Module AccessPath.Abs

type raw = t
type t =
  1. | Abstracted of raw
    (*

    abstraction of heap reachable from an access path, e.g. x.f*

    *)
  2. | Exact of raw
    (*

    precise representation of an access path, e.g. x.f.g

    *)
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val equal : t -> t -> bool
val to_footprint : int -> t -> t

replace the base var with a footprint variable rooted at formal index formal_index

val get_footprint_index_base : base -> int option

return the formal index associated with the base of this access path if there is one, or None otherwise

val with_base : base -> t -> t

swap base of existing access path for base_var (e.g., `with_base_bvar x y.f.g` produces `x.f.g`

val extract : t -> raw

extract a raw access path from its wrapper

val is_exact : t -> bool

return true if t is an exact representation of an access path, false if it's an abstraction

val pp : Stdlib.Format.formatter -> t -> unit