Foundations Of Algebraic Specification And Formal Software Development by Andrzej Tarlecki