I'd like to be able to reorganize my code and then verify that I didn't change any functionality.  That is, the old and new code have precisely the same meaning.

Also, I'd like to be able to change a function and verify that efficiency was the only thing affected.

Are either of these possible in Haskell or any language?

Thanks,
Greg