I am planning to implement a FOL proof assistant in Haskell, what are some useful libraries and implementations I should be looking at?