tyAppU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
tyAppU rr = translate $ \e -> case e of
  (C.TyApp e t) -> (apply C.TyAppFirst rr e)
  _             -> fail "appU"
tyAppU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
tyAppU rr = translate $ \e -> case e of
  (C.TyApp e t) -> (apply C.TyAppFirst rr e)
  _             -> fail "appU"
tyAppU rr = translate $ \e -> case e of
  (C.TyApp e t) -> (apply C.TyAppFirst rr e)
  _             -> fail "appU"