shiftE
    :: (SyntacticExp f, Elt t)
    => (forall t'. Elt t' => Idx env t' -> f acc env' aenv t')
    -> Idx     (env,  s)      t
    -> f   acc (env', s) aenv t
shiftE _ ZeroIdx      = varIn ZeroIdx
shiftE
    :: (SyntacticExp f, Elt t)
    => (forall t'. Elt t' => Idx env t' -> f acc env' aenv t')
    -> Idx     (env,  s)      t
    -> f   acc (env', s) aenv t
shiftE _ ZeroIdx      = varIn ZeroIdx
shiftE _ ZeroIdx      = varIn ZeroIdx