Module Expr.Labeled

type nonrec t = {
  1. name : string;
  2. f : t;
  3. loc : Loc.t;
}

An expression with a name.

This is used to keep track of where expressions come from in the input problem: the name is only used for display and has no semantic meaning. In particular, the comparison and hashing functions ignore the name: if a given expression has multiple names, it doesn't matter which one we use (on the other hand, distinct expressions should not have the same name).

include Container_types.S_plus_stdlib with type t := t
module T : Container_types_intf.Thing with type t = t
include Container_types_intf.Thing with type t := T.t
include Stdlib.Hashtbl.HashedType with type t := T.t
val equal : T.t -> T.t -> bool
val hash : T.t -> int
include Stdlib.Map.OrderedType with type t := T.t
val compare : T.t -> T.t -> int
val print : T.t Fmt.t
module Map : Container_types_intf.Map_plus_stdlib with type key = t and module Set = Set