shiftA
    :: (SyntacticAcc f, Arrays t)
    => RebuildAcc acc
    -> (forall t'. Arrays t' => Idx aenv t' -> f acc aenv' t')
    -> Idx     (aenv,  s) t
    -> f   acc (aenv', s) t
shiftA _ _ ZeroIdx      = avarIn ZeroIdx
shiftA
    :: (SyntacticAcc f, Arrays t)
    => RebuildAcc acc
    -> (forall t'. Arrays t' => Idx aenv t' -> f acc aenv' t')
    -> Idx     (aenv,  s) t
    -> f   acc (aenv', s) t
shiftA _ _ ZeroIdx      = avarIn ZeroIdx
shiftA _ _ ZeroIdx      = avarIn ZeroIdx