Algebraic Techniques for Program Specification

Algebraic methods are presented that allow the specification of the functional behaviour of software systems together with certain constraints on admissible implementations. For the definition of basic objects and operations we employ “algebraic types”; concurrency is added by “streams” and stream-processing functions.