Cellular automaton again

As we were doing some logic during the last few lectures (see the post about reasoner), I decided that I wanted to do something usefull with this highly interessting stuff. So as I already had an engine to evaluate propositional logic expressions it was an easy thing to accomplish the following idea:
Consider the following matrix constituting our “world” and initial population:

    \[F = \begin{pmatrix} c_{11} & \dots & c_{1j} \\ \vdots & \ddots & \vdots \\ c_{n0} & \dots & c_{nn} \end{pmatrix}\]


    \[c_{ij} \in \{0,1\}\]


    \[i,j \in [1,n]\]

To compute a new “generation” the aliveness (1 being alive, 0 dead) of each element is determined by evaluating a certain propsitional expression:

    \[c_{ij,\mbox{new}} = E(\beta)\]



being the valuation of the proposition and


being the proposition itself.

    \[\beta \rightarrow \{\top,\bot\}\]

    \[\beta(a) \mapsto c_{ij} = 1\]

    \[\beta(a_n) \mapsto f(i, j) = n\]


    \[f(u, v) = \sum^{u + 1}_{u - 1}\sum^{v + 1}_{v - 1}c_{uv} - c_{ij}\]

Have a look at the screenshot to get a better idea on what the program is doing or run it using Java webstart below (may not work on MacOSX or Windows).

Launch using webstart

Fork me on GitHub