## Research Areas

### Permuting machines

We are developing a theory of machines whose sole or main purpose is to move objects from one place to another. An example of such a permuting machine is the road layout of a city; the roads are a means of conducting a queue of traffic from one end of the city to another even if the vehicles might (by taking different routes) change their order in the queue. Another example is a stack in a computer program; data items move onto the stack and leave it, often in a different order. The key property of any permuting machine is its potential to reorder the objects which pass through it. We study such machines partly through the classical theory of automata, and investigate how they may be combined to produce new machines.

The long term applications of such a theory could include the design of efficient road topologies, and an understanding of how to build data types with a specified function.

### Permutation patterns

The central theory that underpins our work on permuting machines is the theory of patterns in permutations. Therefore we are studying the foundations of this subject and that involves combinatorial and enumeration investigations.

Usually, the set of permutations generated by a permuting machine are characterised by a set of minimal impossible permutations. Machines where this minimal set is finite are rare in theory but abundant in practice. Deciding whether it is finite or infinite is often the first step to understanding the machine. Further understanding comes from knowing how many permutations there are of each length generated by the machine.