module Let_Expander where data Expr = Var String | App Expr Expr | Let String Expr Expr expand :: Expr -> Expr expand ... expanded :: Expr -> Bool expanded (Var x) = True expanded (App t1 t2) = expanded t1 && expanded t2 expanded (Let n t1 t2) = False prop_expanded t = expanded (expand t)