Neat! I've notices the 'swap' behaviour of the weird integer arithmetic that seems only ever to be mentioned in passing, and tried to make APIs with last/prev for levels and first/next for indices but this is nice way of putting it.
I'll add forward/backward indices to my list of alternate names for debruijn levels/indices (which never really give any hints as to what they actually *do* 😅).
I also find it interesting how the 'size' in quotation etc., behaves a bit like an erased/abstract environment? Have been tempted to make a type called `ErasedEnv` in the past (or more accurately, rename my `EnvLen` type to that).