NameopsIdentifiers and names
val make_ident : string -> int option -> Names.Id.tval repr_ident : Names.Id.t -> string * int optionval atompart_of_id : Names.Id.t -> stringremove trailing digits
val root_of_id : Names.Id.t -> Names.Id.tremove trailing digits, ' and _
val add_suffix : Names.Id.t -> string -> Names.Id.tval add_prefix : string -> Names.Id.t -> Names.Id.tBelow, by subscript we mean a suffix composed solely from (decimal) digits.
module Subscript : sig ... endmodule Fresh : sig ... endval has_subscript : Names.Id.t -> boolval get_subscript : Names.Id.t -> Names.Id.t * Subscript.tSplit an identifier into a base name and a subscript.
val add_subscript : Names.Id.t -> Subscript.t -> Names.Id.tAppend the subscript to the identifier.
val increment_subscript : Names.Id.t -> Names.Id.tReturn the same identifier as the original one but whose subscript is incremented. If the original identifier does not have a suffix, 0 is appended to it.
Example mappings:
bar ↦ bar0
bar0 ↦ bar1
bar00 ↦ bar01
bar1 ↦ bar2
bar01 ↦ bar01
bar9 ↦ bar10
bar09 ↦ bar10
bar99 ↦ bar100
val forget_subscript : Names.Id.t -> Names.Id.tmodule Name : sig ... endval pr_meta : Constr.metavariable -> Pp.tMetavariables
val string_of_meta : Constr.metavariable -> string