Error reporting logic is a simple technique and tool for automatically generating error messages from first-order predicate logic based specifications. From a failing specification, ERL will produce a human-readable error message and will provide a "responsible object" that is designated as the source of the error.
ERL requires that the host system implement a simple interface which (in our experience) is just a wrapper around your existing typechecker and a translation from any host-specific predicates into English phrases.
If you would like to use ERL in your system, please contact us!
More information on the details of ERL can be found in our publication at the conference on Automated Software Engineering, 2008.