Module IR.Ident

Identifiers: program variables and logical variables

type t

Program and logical variables.

include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
include Ppx_hash_lib.Hashable.S with type t := t
val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
val hash_normalize : t -> t
val hash_normalize_opt : t option -> t option
val hash_normalize_list : t list -> t list
val equal : t -> t -> bool

Equality for identifiers.

type name

Names used to replace strings.

val compare_name : name -> name -> int
val hash_fold_name : Ppx_hash_lib.Std.Hash.state -> name -> Ppx_hash_lib.Std.Hash.state
val hash_name : name -> Ppx_hash_lib.Std.Hash.hash_value
val hash_normalize_name : name -> name
val hash_normalize_name_opt : name option -> name option
val hash_normalize_name_list : name list -> name list
val equal_name : name -> name -> bool

Equality for names.

type kind

Kind of identifiers.

val compare_kind : kind -> kind -> int
val equal_kind : kind -> kind -> bool

Equality for kind.

module Set : Stdlib.Set.S with type elt = t

Set for identifiers.

module Map : Stdlib.Map.S with type key = t

Map with ident as key.

module HashQueue : IStdlib.IStd.Hash_queue.S with type key = t
module NameGenerator : sig ... end
val idlist_to_idset : t list -> Set.t

Convert an identifier list to an identifier set

val kprimed : kind
val knormal : kind
val kfootprint : kind
val knone : kind
val name_spec : name

Name used for spec variables

val name_return : Mangled.t

Name used for the return variable

val string_to_name : string -> name

Convert a string to a name.

val name_to_string : name -> string

Convert a name to a string.

val get_name : t -> name

Name of the identifier.

val create_with_stamp : kind -> name -> int -> t
val create : kind -> int -> t

Create an identifier with default name for the given kind

val create_normal : name -> int -> t

Generate a normal identifier with the given name and stamp.

val create_none : unit -> t

Create a "null" identifier for situations where the IR requires an id that will never be read

val update_name_generator : t list -> unit

Update the name generator so that the given id's are not generated again

val create_fresh : kind -> t

Create a fresh identifier with default name for the given kind.

val create_path : string -> t

Generate a normal identifier whose name encodes a path given as a string.

val is_primed : t -> bool

Check whether an identifier is primed or not.

val is_normal : t -> bool

Check whether an identifier is normal or not.

val is_footprint : t -> bool

Check whether an identifier is footprint or not.

val is_path : t -> bool

Check whether an identifier represents a path or not.

val is_none : t -> bool

Check whether an identifier is the special "none" identifier

val get_stamp : t -> int

Get the stamp of the identifier

val set_stamp : t -> int -> t

Set the stamp of the identifier

Pretty Printing

val pp_name : Stdlib.Format.formatter -> name -> unit

Pretty print a name.

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

Pretty print an identifier.

val to_string : t -> string

Convert an identifier to a string.

val hashqueue_of_sequence : ?init:unit HashQueue.t -> t IStdlib.IStd.Sequence.t -> unit HashQueue.t
val set_of_sequence : ?init:Set.t -> t IStdlib.IStd.Sequence.t -> Set.t
val counts_of_sequence : t IStdlib.IStd.Sequence.t -> t -> int