Abstract syntax constructs that are common to all nominal rewriters.
These definitions need to be separate from the NominalRewriter class
so that the classes here don't get an outer field referring to an
instance of that class.
A generic abstract binding of a name in a term.
A name comprising a base string with an optional integer index.
A name comprising a base string with an optional integer index. The
index defaults to being omitted.
A transposition of two names is just a tuple.