Functors with type depending on some extra data, the "index"
They are expected to obey the laws
imap g . imap f = imap (\i => g i . f i)
and
imap (\i => id {t i}) = id
interface DepFunctor : (i : Type) -> ((i -> Type) -> Type) -> Typedmap : ((x : i) -> u x -> v x) -> t u -> t vDepFunctor i (DPair i)DepFunctor k (SortedDMap k)dmap : DepFunctor i t => ((x : i) -> u x -> v x) -> t u -> t v