This example models probably the best-known classic cellular automaton (CA) model: [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life). It shows an alternative use of ```System``` for synchronous updating of ```Equations```.

## Model description
In this model, the lattice is filled with cells of size $1$. Each cell counts the number of neighboring cells that are 'alive' and acts accordingly. The rules that make up the Game of Life are implemented in a ```System``` of ```Equations``` in which all ```Equations``` are updated synchronously.
This example does nothing -- expect being the minimal valid Morpheus model. Such a model is generated when choosing ```File``` → ```New```.
{{<figurelibrary="true"src="examples/miscellaneous/minimal_model.png"lightbox="true"title="Minimal valid XML model.">}}
## Model description
The basic model only includes the required nodes ```MorpheusModel```, ```Description```, ```Space``` and ```Time```. Their required nodes and attributes are added recursively, such as ```Lattice``` class and ```StopTime``` value.
## Things to try
- Invalidate this minimal model by editing it (but keeping it well-formed). When opening this model in Morpheus GUI, it triggers a warning saying what went wrong and how it was solved. Check the ```Fixboard``` to see the changes that were made to the model.
This example shows Wolpert's classical [French Flag model](https://en.wikipedia.org/wiki/French_flag_model). Depending on the local concentration of a morphogen, cells adopt one of three cell types based on internal thresholds.

## Model description
The model sets up a morphogen gradient in the $x$ direction as a 2D field in the ```Global``` section. Note that no diffusion is used, since we use the steady-state solution of the diffusion and degradation process with fixed boundary source.
The cells in ```CellType``` register the (average) local morphogen concentration using a ```Mapper```. Based on the specified threshold values, they choose an identity $I$ as defined in the ```Equation```.
Note that this model is not time-dependent. ```Time``` is therefore set from ```StartTime``` $0$ to ```StopTime``` $0$.
## Things to try
[//]:#(- Change the physical length of the domain by editing ```Space``` → ```NodeLength``` that controls the physical size per lattice site.)
- Change the model such that the morphogen gradient is set up by production and diffusion, using ```Diffusion``` and a ```System``` with ```DiffEqn```. That is, change the model into a time-dependent model.
This models approximates an interacting particle system (IPS) model of particle aggregation. Each black dot represents a particle that moved due to spin flips with random neighbors. The particles perform random walks in which the probability of moving depends on the number of neighboring cells.

## Model description
Each lattice site (white or black) counts the number of particles (black neighboring sites) using a ```NeighborsReporter```.
The probability of movement of each particle is made dependent on its number of neighbors by using it in the ```Condition``` of ```FlipCells```. When this condition is satisfied, the particle changes positions with a random neighboring lattice site.
A ```PopulationReporter``` is used to return the fraction of isolated black particles. This number is logged and plotted using the ```Logger```.