varU :: (Monad m, Monoid dec, Monoid r)
  => Translate m dec C.Term r
varU = translate $ \e -> case e of
  (C.Var x) -> return $ mempty (C.Var x)
  _         -> fail "varU"
varU :: (Monad m, Monoid dec, Monoid r)
  => Translate m dec C.Term r
varU = translate $ \e -> case e of
  (C.Var x) -> return $ mempty (C.Var x)
  _         -> fail "varU"
varU = translate $ \e -> case e of
  (C.Var x) -> return $ mempty (C.Var x)
  _         -> fail "varU"