Library and tool to define and test abstract data types