Welcome to the Evolvable Systems Homepage
This is a resource page for The Evolvable Systems Project in the School of Computer Science, The University of Manchester, UK.
It contains explanatory material, published and draft papers, downloadable software and some relevant links.
What do we mean by Evolvable Systems?
The traditional understanding of computational systems and their analysis in terms of their semantics, logics and behavioural specification assumes that their syntactical descriptions determine the range of computational behaviours.
Increasingly, however, we build systems which may respond to external stimuli and change their computational behaviour accordingly, not by internal options but by reconfigurations determined externally. These external influences may either reflect an adaptive mode in which changes of environment determine changes in the computational system, or may be determined by internal imperatives in which a `monitoring process' (or a `supervisor') examines the computational behaviour of a system and determines appropriate evolutionary actions when the system behaviour requires modification. This is clearly related to the notion of `run-time monitoring' for system verification.
Examples of such evolvable systems are:
Evolvable systems can when viewed in their entirety, including the computational behaviour of any supervisory processes, be treated as a closed system in the usual form and therefore open to standard treatments of semantics and logics.
However, this account misses crucial common structure which is present in these systems and makes their analysis quite different from ordinary computational systems. The common structure resides in (1) the way that monitoring processes have the ability to examine the behaviour of the underlying system, (2) the way that evolutionary steps interrupt computation and modify systems and their associated behaviour.
Of considerable interest also is the assembly of systems from evolvable components, with evolutionary steps available at the various levels of a structural hierarchy. In this way, we may build-in evolutionary capability into the design process as a new approach in Software Engineering.
Models and logics of evolvable systems
The Project involves: (1) devising suitable logics and models of evolvable systems, and (2) applications to the design, construction and verification of actual systems.
We have devised a logical framework for describing evolvable systems based on logics of revision and meta-level logics. We are now developing a theory of programming for hierarchical component-based evolvable systems.
An evolvable systems animator toolThe Evolvable Systems Animator Tool (ESAT) implements this logical framework (in Java), allowing users to input evolvable system specifications and execute evolvable programs in the specifications. To execute specifications, theorem provers of various kinds, including resolution-based provers and SAT/SMT provers, are used to determine the choice and validity of execution steps. The system has been developed by Djihed Afifi and is available from the ESAT webpage.
PersonnelMembers of the group include:
Publications and papers
Slides from talks
The monitoring aspects of evolutionary systems are widely studied in Runtime Verification and the related topic of Specification Mining. We have introduced a new structure for first-order specifications for Runtime Verification and pattern-based Specification Mining. See the Runtime Verification page.
The notion of `reactivity' in computational systems is closely related to that of evolvability. As well as this work of evolvable systems we are investigating some reactive models of computation.
Here are few useful external links:
Contact the Website Administrator with comments or queries about this website.
All material copyright ŠThe University of Manchester. Last update Jan 2007.