# Isotropic non-totalistic rule

An **isotropic non-totalistic rule** (abbreviated **INT**) is a generalization of the concept of a Life-like rule, where the state of a cell after one tick depends on how the alive neighbours are arranged, not just their counts.

Patterns in isotropic non-totalistic rules preserve their behaviour when mirrored or rotated, as is the case in totalistic and outer-totalistic rulespaces. This is not necessarily the case for non-isotropic rules.

## Square grid

For generalisations of usual outer-totalistic rules,^{[note 1]} the following notation system is used. This notation is often referred to as *Hensel notation*, a system originally devised and named after Alan Hensel.

Rulestrings use the standard B[counts]/S[counts] system, the same as with outer-totalistic rules. Letters can be appended to each number to specify if birth or survival should happen depending on how surrounding cells are arranged; a minus sign can be placed between the number and letters to instead exclude listed arrangements. If a number is not followed by any letters, all arrangements will be accepted, as is the case for outer-totalistic rules.

For example, the rule tlife differs from Life in two ways:

- a living cell
*will not survive*if it has two diametrically-opposite orthogonal neighbours, like the central cell of a blinker, - a living cell
*will survive*if it has four neighbours, like the two middle cells in the beacon's dense phase.

tlife otherwise functions identically to Life. We can express tlife using Hensel notation, which gives the rulestring *B3/S2-i34q* - survival on 2i is negated using a preceding minus sign, and survival on 4q is permitted. Birth and survival on 3 neighbours do not have any extra letters, indicating that arrangement is ignored for these. Note the similarity to Life's rulestring, *B3/S23*, since there are only two cases where behaviour is different.

A full list of letters and what arrangements they correspond to is as follows:

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|

— (no letter) |
|||||||||

c (corner) |
|||||||||

e (edge) |
|||||||||

k (knight) |
|||||||||

a (adjacent) |
|||||||||

i | |||||||||

n | |||||||||

y | |||||||||

q | |||||||||

j | |||||||||

r | |||||||||

t | |||||||||

w | |||||||||

z |

## Hexagonal grid

Much like the Moore neighbourhood of the square grid, it is possible to define isotropic non-totalistic rules on the hexagonal grid. The standard notation used for the hexagonal grid, *Callahan notation*, was devised by Paul Callahan and generalises outer-totalistic hexagonal rulestrings in much the same way as for square-grid Moore rulestrings. The higher symmetry of hexagons combined with the smaller number of neighbours results in a comparatively smaller transition table, requiring only three letters compared to the thirteen needed for the square grid; these were chosen in analogy to arene substitution patterns^{[1]} in aromatic chemistry.^{[2]}^{[3]}

A full list of transitions is as follows:

0 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|

— (no letter) |
|||||||

o (ortho) |
|||||||

m (meta) |
|||||||

p (para) |

## Generalizations

*Main article: Higher-range isotropic non-totalistic rule*

Isotropic non-totalistic rules can be generalized to higher ranges, higher cell state counts and other grid types.

## Properties

### Hensel's notation

This notation has the following symmetry: For any letter *x* and number *n* ≠ 4, *nx* is defined if and only (8 - *n*)*x* is defined and moreover (8 - *n*)*x* is the complement (change live cells to dead and dead cells to live; ignore the center cell) of *nx*.

#### Ability for a pattern to escape its bounding shape

To allow patterns to exceed their initial bounding box, a rule must have at least one of B1(c,e), B2(c,a) and B3i enabled, and to escape their bounding diamond, at least one of B1(c,e), B2(e,a), B3a.

Irrespective of other transitions, for patterns in a rule to be able to exit their bounding octagon, of the 2^{7} combinations across these 7 transitions, those where any of B1c, B1e and B2a are enabled provide 2^{6}+2^{5}+2^{4}, leaving only 2^{4} cases in which both B2e and B2c, or both B3i and B3a, must be on, of which there are 7 such cases, providing an upper bound of 119/128ths of the 2^{102} such INT rules. These are necessary for spaceships, as well as for a finite pattern to be Turing-complete (because otherwise, it may only enter fixedly many states depending on its initial size).

What restrictions apply for rules with B0 remain to be described.

#### von Neumann emulation

The `2 ^{6}=64` isotropic 2-state rules in the von Neumann neighbourhood can be simulated via isotropic non-totalistic rules on the Moore neighbourhood; for example, B1/SV becomes B1e2ak3inqy4ny5e/S.

To be a von Neumann rule, birth and survival transitions in the following equivalence classes must be the same:

`0 : 0=1c=2n=2c=3c=4c`

`1 : 1e=2a=2k=3i=3n=3y=3q=4n=4y=5e`

`2e: 2e=3k=3a=3j=4k=4a=4q=4w=5a=5j=5k=6e``2i: 2i=3r=4i=4t=4z=5r=6i`

`3 : 3e=4j=4r=5i=5n=5y=5q=6a=6k=7e`

`4 : 4e=5c=6c=6n=7c=8`

For it to be outer-totalistic, the `2e` and `2i` transitions must be equivalent.

A similar set of constraints is given in the static symmetry article, that are sufficient for the preservation of D8_2 symmetry.

#### Dualities

They are generated as follows,

- For the black/white reversal, take the bitwise NOT of the input and output.
- For the strobing dual,

- in even generations, take the bitwise NOT of the output, and
- in odd generations, take the bitwise NOT of the input.

- For the checkerboard dual,

- for even-parity cells, XOR the input with an "X" in the four corners and centre, and
- for odd-parity cells, XOR the input with an "O" in the four edges.

`
`

Outer total |
Identity | Black/white reversal |
Strobing dual |
Checkerboard dual | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|

b | s | even | odd | even | odd | ||||||

b | s | b | s | b | s | b | s | ||||

0 | ~s8 | ~b8 | ~b0 | ~s0 | s8 | b8 | ~s4c | ~b4c | b4e | s4e | |

1 | c | ~s7c | ~b7c | ~b1c | ~s1c | s7c | b7c | ~s3c | ~b3c | b5c | s5c |

e | ~s7e | ~b7e | ~b1e | ~s1e | s7e | b7e | ~s5e | ~b5e | b3e | s3e | |

2 | c | ~s6c | ~b6c | ~b2c | ~s2c | s6c | b6c | ~s2c | ~b2c | b6c | s6c |

e | ~s6e | ~b6e | ~b2e | ~s2e | s6e | b6e | ~s6e | ~b6e | b2e | s2e | |

k | ~s6k | ~b6k | ~b2k | ~s2k | s6k | b6k | ~s4n | ~b4n | b4r | s4r | |

a | ~s6a | ~b6a | ~b2a | ~s2a | s6a | b6a | ~s4y | ~b4y | b4j | s4j | |

i | ~s6i | ~b6i | ~b2i | ~s2i | s6i | b6i | ~s6i | ~b6i | b2i | s2i | |

n | ~s6n | ~b6n | ~b2n | ~s2n | s6n | b6n | ~s2n | ~b2n | b6n | s6n | |

3 | c | ~s5c | ~b5c | ~b3c | ~s3c | s5c | b5c | ~s1c | ~b1c | b7c | s7c |

e | ~s5e | ~b5e | ~b3e | ~s3e | s5e | b5e | ~s7e | ~b7e | b1e | s1e | |

k | ~s5k | ~b5k | ~b3k | ~s3k | s5k | b5k | ~s5a | ~b5a | b3a | s3a | |

a | ~s5a | ~b5a | ~b3a | ~s3a | s5a | b5a | ~s5k | ~b5k | b3k | s3k | |

i | ~s5i | ~b5i | ~b3i | ~s3i | s5i | b5i | ~s3y | ~b3y | b5y | s5y | |

n | ~s5n | ~b5n | ~b3n | ~s3n | s5n | b5n | ~s3n | ~b3n | b5n | s5n | |

y | ~s5y | ~b5y | ~b3y | ~s3y | s5y | b5y | ~s3i | ~b3i | b5i | s5i | |

q | ~s5q | ~b5q | ~b3q | ~s3q | s5q | b5q | ~s3q | ~b3q | b5q | s5q | |

j | ~s5j | ~b5j | ~b3j | ~s3j | s5j | b5j | ~s5j | ~b5j | b3j | s5j | |

r | ~s5r | ~b5r | ~b3r | ~s3r | s5r | b5r | ~s5r | ~b5r | b3r | s3r | |

4 | c | ~s4e | ~b4e | ~b4c | ~s4c | s4e | b4e | ~s0 | ~b0 | b8 | s8 |

e | ~s4c | ~b4c | ~b4e | ~s4e | s4c | b4c | ~s8 | ~b8 | b0 | s0 | |

k | ~s4k | ~b4k | ~b4k | ~s4k | s4k | b4k | ~s4a | ~b4a | b4a | s4a | |

a | ~s4a | ~b4a | ~b4a | ~s4a | s4a | b4a | ~s4k | ~b4k | b4k | s4k | |

i | ~s4t | ~b4t | ~b4t | ~s4t | s4t | b4t | ~s4i | ~b4i | b4t | s4t | |

n | ~s4r | ~b4r | ~b4r | ~s4r | s4r | b4r | ~s2k | ~b2k | b6k | s6k | |

y | ~s4j | ~b4j | ~b4j | ~s4j | s4j | b4j | ~s2a | ~b2a | b6a | s6a | |

q | ~s4w | ~b4w | ~b4w | ~s4w | s4w | b4w | ~s4w | ~b4w | b4q | s4q | |

j | ~s4y | ~b4y | ~b4y | ~s4y | s4y | b4y | ~s6a | ~b6a | b2a | s2a | |

r | ~s4n | ~b4n | ~b4n | ~s4n | s4n | b4n | ~s6k | ~b6k | b2k | s2k | |

t | ~s4i | ~b4i | ~b4i | ~s4i | s4i | b4i | ~s4t | ~b4t | b4i | s4i | |

w | ~s4q | ~b4q | ~b4q | ~s4q | s4q | b4q | ~s4q | ~b4q | b4w | s4w | |

z | ~s4z | ~b4z | ~b4z | ~s4z | s4z | b4z | ~s4z | ~b4z | b4z | s4z | |

5 | c | ~s3c | ~b3c | ~b5c | ~s5c | s3c | b3c | ~s7c | ~b7c | s1c | b1c |

e | ~s3e | ~b3e | ~b5e | ~s5e | s3e | b3e | ~s1e | ~b1e | b7e | s7e | |

k | ~s3k | ~b3k | ~b5k | ~s5k | s3k | b3k | ~s3a | ~b3a | b5a | s5a | |

a | ~s3a | ~b3a | ~b5a | ~s5a | s3a | b3a | ~s3k | ~b3k | b5k | s5k | |

i | ~s3i | ~b3i | ~b5i | ~s5i | s3i | b3i | ~s5y | ~b5y | b3y | s3y | |

n | ~s3n | ~b3n | ~b5n | ~s5n | s3n | b3n | ~s5n | ~b5n | b3n | s3n | |

y | ~s3y | ~b3y | ~b5y | ~s5y | s3y | b3y | ~s5i | ~b5i | b3i | s3i | |

q | ~s3q | ~b3q | ~b5q | ~s5q | s3q | b3q | ~s5q | ~b5q | b3q | s3q | |

j | ~s3j | ~b3j | ~b5j | ~s5j | s3j | b3j | ~s3j | ~b3j | b5j | s5j | |

r | ~s3r | ~b3r | ~b5r | ~s5r | s3r | b3r | ~s3r | ~b3r | b5r | s5r | |

6 | c | ~s2c | ~b2c | ~b6c | ~s6c | s2c | b2c | ~s6c | ~b6c | b2c | s2c |

e | ~s2e | ~b2e | ~b6e | ~s6e | s2e | b2e | ~s2e | ~b2e | b6e | s5e | |

k | ~s2k | ~b2k | ~b6k | ~s6k | s2k | b2k | ~s4r | ~b4r | b4n | s4n | |

a | ~s2a | ~b2a | ~b6a | ~s6a | s2a | b2a | ~s4j | ~b4j | b4y | s4y | |

i | ~s2i | ~b2i | ~b6i | ~s6i | s2i | b2i | ~s2i | ~b2i | b6i | s6i | |

n | ~s2n | ~b2n | ~b6n | ~s6n | s2n | b2n | ~s6n | ~b6n | b2n | s2n | |

7 | c | ~s1c | ~b1c | ~b7c | ~s7c | s1c | b1c | ~s5c | ~b5c | b3c | s3c |

e | ~s1e | ~b1e | ~b7e | ~s7e | s1e | b1e | ~s3e | ~b3e | b5e | s5e | |

8 | ~s0 | ~b0 | ~b8 | ~s8 | s0 | b0 | ~s4e | ~b4e | b4c | s4c |

## Software support

Support for isotropic non-totalistic rules on the square grid was implemented into Golly in August 2016 with the release of version 2.8. Prior to this, they could be ran as custom table rules under the RuleLoader algorithm, for which this was widely used. As of August 2024, Golly does not support Callahan notation for hexagonal rules.

LifeViewer supports Hensel notation for the square grid as of build 177 (officially build 182),^{[4]} and Callahan notation as of build 313.^{[5]}

Adam P. Goucher's apgsearch was modified to support isotropic non-totalistic rules by praosylen on December 17, 2015.^{[6]} This hacked version was later modified in late January 2016 to be able to upload the search results to Catagolue.^{[7]} However, apgsearch did not gain native support for these rules until v4.2, released on September 10, 2017, which can search isotropic non-totalistic rules without B0.^{[8]} v4.66 and above also support the searching of isotropic hexagonal neighbourhood rules.^{[9]}

## See also

- Life-like cellular automaton
- Non-isotropic cellular automaton
- Generations
- Larger than Life
- Dualities

## Notes

- ↑ rules that operate on the square grid, with a Moore neighbourhood of range 1, and two cellstates

## References

- ↑ Arene substitution pattern at Wikipedia
- ↑ Experiments with a somewhat "Life-like" hexagonal CA (long) at Paul Callahan's Page of Conway's Life Miscellany
- ↑ "ExtendedCallahanHexagonal.gif".
*ConwayLife.com forums*. Retrieved on December 8, 2018. - ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=29766#p29766
- ↑ https://conwaylife.com/forums/viewtopic.php?f=3&t=1622&p=73364#p73364
- ↑ praosylen (December 17, 2015). Re: Hacking apgsearch (discussion thread) at the ConwayLife.com forums
- ↑ Adam P. Goucher (January 21, 2016). Re: apgsearch v2.2 (discussion thread) at the ConwayLife.com forums
- ↑ Adam P. Goucher (September 10, 2017). Re: apgsearch v4.2 (discussion thread) at the ConwayLife.com forums
- ↑ Adam P. Goucher (December 1, 2018). Re: Non-totalistic hex rules (discussion thread) at the ConwayLife.com forums

## External links

- Alan Hensel. "Table of non-totalistic neighborhoods". Retrieved on 2016-06-12.
- Alan Hensel. "Rule notation". Retrieved on 2016-06-12. (note that the linked page describes an earlier version of Hensel notation that has fallen into disuse)
- Non-totalistic Rules - notations, projects, & discussion (discussion thread) at the ConwayLife.com forums