“…What is unique is the simplicity of the method and the freedom it offers the practitioner to choose for each problem an appropriate combination of concepts, notations and techniques, which are integrated by the framework in a coherent way as elements of a uniform mathematical background. Among the examples we will discuss are the following: abstract states, which can be richly structured, possibly unbounded or even infinite, as known from the theory of abstract data types and algebraic specifications [85,78,61,9,10], VDM [66], Z [103], COLD [65], abstract instructions for changing states (high-level operational definition of state changes by guarded assingments), as familiar from pseudo-code notation, Virtual Machines 2 and later RAISE [73], synchronous parallel execution model, including conditional multiple assignments as present also in UNITY [86] and COLD [64], locality principle as known from programming languages, functional definitions, as in mathematics and functional programming, declarative (axiomatic) definitions, as known from logic and declarative programming and specification languages, refinement concept, generalizing the method which has been introduced by Wirth [112] and Dijkstra [58] and adapted to numerous formal specification methods [11,89,12,53], including Z [113,57] and B [1], decomposition and hierarchy concepts, as familiar from automata theory and layered architectures, function classification into monitored, controlled, shared etc., as known from programming and Parnas' SCR method [94,80], verification of model properties by proofs at the needed level of precision: sketched, detailed, machine assisted (interactive or fully automated), simulation by model execution, e.g. for model checking invariants, runtime verification of properties, testing of runs (scenarios).…”