jon.recoil.org

Module Flambda2_nominal.Renaming

Handling of permutations and import freshening upon all kinds of bindable names and other identifiers (e.g. constants).

We use permutations instead of substitutions because they cannot accidentally disturb the binding structure of terms. See Name_abstraction.

Unlike Name_occurrences this module does not segregate names according to where they occur (e.g. in terms or in types).

type t
val is_identity : Flambda2_nominal.Renaming.t -> bool
val has_import_map : Flambda2_nominal.Renaming.t -> bool

Note that compose is not commutative on the permutation component. The permutation in the result of compose ~second ~first is that permutation acting initially like first then subsequently like second. second must not hold any import map.