Module Shape.DeBruijn_index

We use de Bruijn indices for some binders in Shape.t below to increase sharing. That is, de Bruijn indices ensure that alpha-equivalent terms are actually equal. This reduces redundancy when we emit shape information into the debug information in later stages of the compiler (see dwarf_type.ml), since equal shapes produce the same debug information.

type t
val create : int -> t
val move_under_binder : t -> t
val equal : t -> t -> bool
val print : Format.formatter -> t -> unit