tyLamU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
tyLamU rr = translate $ \e -> case e of
  C.TyLambda tv e -> apply (C.TyLambdaBody tv) rr e
  _               -> fail "tyLamU"
tyLamU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
tyLamU rr = translate $ \e -> case e of
  C.TyLambda tv e -> apply (C.TyLambdaBody tv) rr e
  _               -> fail "tyLamU"
tyLamU rr = translate $ \e -> case e of
  C.TyLambda tv e -> apply (C.TyLambdaBody tv) rr e
  _               -> fail "tyLamU"