app x y = case x of [] -> y h : t -> h : app t y
app x (app y z) == app (app x y) z
x
x == []
x == h : t