tyLamR :: Monad m
  => Rewrite m [C.CoreContext] C.Term
  -> Rewrite m [C.CoreContext] C.Term
tyLamR rr = transparently $ rewrite $ \e -> case e of
  C.TyLambda tv e -> liftM (C.TyLambda tv) (apply (C.TyLambdaBody tv) rr e)
  _               -> fail "tyLamR"
tyLamR :: Monad m
  => Rewrite m [C.CoreContext] C.Term
  -> Rewrite m [C.CoreContext] C.Term
tyLamR rr = transparently $ rewrite $ \e -> case e of
  C.TyLambda tv e -> liftM (C.TyLambda tv) (apply (C.TyLambdaBody tv) rr e)
  _               -> fail "tyLamR"
tyLamR rr = transparently $ rewrite $ \e -> case e of
  C.TyLambda tv e -> liftM (C.TyLambda tv) (apply (C.TyLambdaBody tv) rr e)
  _               -> fail "tyLamR"