subeverywhere trans (Lit x) = return $ Lit x
subeverywhere trans (Type x) = return $ Type x
+subeverywhere trans (Cast expr ty) = do
+ expr' <- trans expr
+ return $ Cast expr' ty
+
subeverywhere trans expr = error $ "NormalizeTools.subeverywhere Unsupported expression: " ++ show expr
-- Apply the given transformation to all expressions, except for direct