Mlsem_common.VariableProgram variables.
Variables are identified by identity, never by name: two variables with the same display name are distinct. Terms are therefore expected to be already alpha-converted, which is what lets Mlsem_system.Ast.fv compute free variables as "used minus bound" over a whole term.
val create : string option -> tFresh variable with an optional display name, no location.
val attach_location : t -> Position.t -> unitSets the definition site of the variable (there is only one).
val attach_sig_location : t -> Position.t -> unitAdds a declaration site (a val declaration); a variable may have several.
val get_location : t -> Position.tPosition.dummy if no location was attached.
val get_sig_locations : t -> Position.t listval get_name : t -> string optionval pp : Stdlib.Format.formatter -> t -> unitPrints the display name, which is not injective (see refresh).
val pp_uniq : Stdlib.Format.formatter -> t -> unitPrints the display name suffixed by the variable's unique id.
val show : t -> stringval show_uniq : t -> string