There are two types of mathematical programming that people usually have in mind here. Languages with strong type systems, like Agda and Coq, can be interactive or assistive theorem provers - they have been used to prove the four color theorem, for example. In Haskell, this is somewhat possible if you use certain language extensions; but it's not really what Haskell is about.
The other, more common idea is to take advantage of purely functional (referentially transparent) coding to prove two programs are semantically equivalent. This is feasible in Haskell, and useful: the book Pearls of Functional Algorithm Design gives many good examples. In it, Richard Bird defines simple but inefficient algorithms for various problems, then proceeds by equational reasoning to transform them into efficient solutions. So in the end, you have fast algorithms whose correctness is hard to discern; but you have proved they are equivalent to simple, intuitively correct versions.
If you really want to learn about purely functional algorithms, you could check out Pearls of Functional Algorithm Design by Richard Bird.