We sought more versatile machines which would be able to simulate arbitrary algorithms in a direct and essentially coding-free way. Here the term algorithm is taken in a broad sense including programming languages, architectures, distributed and real-time protocols, etc.. The simulator is not supposed to implement the algorithm on a lower abstraction level; the simulation should be performed on the natural abstraction level of the algorithm.
The evolving algebra thesis asserts that evolving algebras are such versatile machines.
Evolving algebras have been used to specify languages (e.g. C, Prolog and VHDL), to specify real and virtual architectures (e.g. APE, PVM and Transputer), to validate standard language implementations (e.g. of Prolog, Occam), to validate distributed protocols (see examples in Parts III and IV of this book), to prove complexity results, etc..