Super supports the same set of rules as QuickLife (excluding Wolfram) and adds history and label states. The Super algorithm currently supports three rulename suffixes, History, Super and Investigator.
A rule specific to Conway's Life, "LifeHistory", was added along with Golly 2.0, as soon as multistate rules were supported. It largely duplicated the functionality of a "HistoricalLife" rule included in a previous CA editor, MCell 4.20.
A key idea also borrowed from MCell is that odd-numbered states are ON states and even-numbered states are OFF states. Any odd-numbered state in the vicinity of a cell counts as a neighbor, but any even-numbered state is just considered to be background.
The Super algo extends the behavior of the seven LifeHistory states to any non-Wolfram rule supported by QuickLife. To enable it, add the suffix "History" to the standard rule string.
State | Name | Color | Description | |
0 | OFF | black | the default background OFF state | |
1 | ON | green | the default ON state | |
2 | history/envelope | blue | state=2 if cell was ever ON but now OFF | |
3 | marked ON | white | may change to marked OFF but will always remain marked | |
4 | marked OFF | red | may change to marked ON but will always remain marked | |
5 | start ON | yellow | becomes a normal marked OFF cell when it dies | |
6 | boundary OFF | gray | can never turn on, so subpatterns separated by state-6 walls can never affect each other |
The primary idea was to make the evolutionary history of a pattern visible by including additional OFF states to the rule. A state-0 cell would change to state 1 as usual when it had three neighbors, but when a state-1 cell died, it would change to a blue state-2 cell.
The blue region is commonly known as the "history" or the "reaction envelope" of a pattern. It can be very useful for editing purposes. For example, in LifeHistory, one phase of an oscillator can be pasted directly on top of another phase, and cells all that should be OFF in the new phase are all turned off (replaced by blue state-2 cells). A similar phase change in a two-state rule would generally require blanking out the oscillator's rotor cells before pasting; otherwise ON cells from both phases would remain ON, usually breaking the oscillator.
Another use of blue state-2 cells is to mark the edge of the "safe region" for oscillators, Herschel circuitry, etc., making it much easier to adjust subpatterns so that they are as close as possible to each other without conflicting. In logic circuitry, input and output glider or spaceship lanes can be easily seen and aligned between components.
The LifeHistory rule also supported the idea of "marked" locations in a pattern. With two-state CA rules, it could be somewhat difficult to mark key locations precisely. This might be done with labels made out of isolated cells that would die quickly without affecting a pattern, or by adding still lifes shaped like letters, arrows, etc. a safe distance to the side, to point out key features without affecting the evolution of the pattern.
With states 3 (greenish white) and 5 (yellow), two additional colors are available to highlight ON cells that are special in some way. State 5 was originally designed to carry information about cells that always remained ON from T=0 onward, never turning off even temporarily. However, in practice this specialized functionality is not exercised very often. State 5 is more often used as an alternate color to differentiate one type of highlighting from another.
State 6 is another cell type that is seldom used for its original purpose. State-6 cells can never turn on, so lines of them can be used as barriers to prevent subpatterns in a stamp collection from ever influencing each other. This can be helpful for collections of Herschel conduits, for example, or any set of subpatterns that releases a lot of gliders. For technical reasons having to do with the behavior of incoming gliders and spaceships at orthogonal gray-cell boundaries, gray cells are not just passive boundaries; any ON cells that they come in contact with will turn OFF On the next tick.
State-6 "gray cells" are the only one of these cell types that can potentially make the History version of a rule behave radically differently from the base non-History version. The other five cell types can only alter the colors of ON and OFF cells, but can not make a pattern evolve essentially differently. By contrast, in standard Conway's Life, scatterings of gray cells have been used to build extremely small guns, glider reflectors, and other types of signal circuitry.
The "Super" rules were conceived as a superset of the History cell states, to be used in cases where -- for example -- two extra ON states and two extra OFF states are not enough to clearly annotate a very large or complex pattern.
Appending the suffix "Super" to any two-state rule string will make available a rule with twenty-six states instead of two, with behavior generally matching the two-state rule -- with the partial exception of state 6! -- but allowing a wide variety of annotation and history-state options, as follows:
The first seven states behave identically to their [Rule]History equivalents, to make it easier to translate patterns to and from [Rule]Super.
A side effect of state 4 is that a glider made with a higher-numbered ON state that does not leave behind history cells, will be reduced to state 1 and will begin to leave a state-2 trail if it passes through a boundary made of state-4 cells. See also state 8, below: a cleaner transition can be created by placing a line of state-8 cells on the "upstream" side of a crossing, and a line of state-4 cells on the "downstream" side.
State | Name | Color | Description | |
0 | OFF | black | same function as History: default background OFF state | |
1 | ON trail #1 | green | same function as History: default ON state with "history" trail | |
2 | OFF trail #1 | blue | same function History: state=2 if cell was ever state 1 | |
3 | marked ON | pink | same as History: changes to state 4 if it turns OFF, then back to state 3 if it turns ON again | |
4 | marked OFF | red | same function as History: changes to state 3 if it turns ON | |
5 | start ON | yellow | changes to state 4 if it turns OFF, then to state 3 if it turns ON again | |
6 | boundary OFF | gray | can never turn on, so subpatterns separated by state-6 walls can never affect each other |
States 2 and 3 are deliberately chosen to be slightly different in a Super version of a rule than in the equivalent History rule. State 2 is a slightly brighter blue, to match the brightness of the other two trail colors, states 10 and 12. In Super rules, it's possible to make a deliberate decision as to whether a moving pattern leaves a trail of "history" cells behind it or not, so the trail states all need to be clearly visible.
History rules' greenish-white state 3 conflicted with other Super ON states, so it was changed to pink, signalling an overlap between an ON cell and the red marked background color, state 4. These differences make it easier to distinguish a Super rule from its History version at a quick glance.
Complex signal-circuitry constructions, large glider syntheses, and other engineered patterns often require tracking a particular moving subpattern. In a large pattern it can be difficult to keep track of precise causes and effects -- to know, for example, which of several gliders at T=0 is the source of some key active pattern at T=1000.
To address this, the Super algo supports several different colored states that can be applied to moving patterns. States 9 and 11 are ON cells equivalent to state 1, but when they turn OFF they leave behind different colored history/envelope cells, states 10 and 12 respectively. Compare this to the behavior of ON cells with states higher than 12, which do not leave behind a trail when they turn OFF.
Analogous to the behavior of boundary made of state-4 cells, a boundary made of state-8 cells will not allow a moving pattern to leave a trail after making the crossing. The pattern itself will pass through the state-8 boundary unaffected, but it will no longer leave a trail on the far side of the boundary, whatever its behavior was on the near side.
State | Name | Color | Description | |
7 | marked ON no-trail boundary | hot pink | With state 8, this state provides a boundary beyond which moving patterns will not leave trails | |
8 | marked OFF no-trail boundary | purple | With state 7, this state provides a boundary beyond which moving patterns will not leave trails | |
9 | ON trail #2 | sky blue | The second of three states that leave different-colored trails when they turn OFF | |
10 | OFF trail #2 | gray-blue | Envelope/history state for state-9 ON cells | |
11 | ON trail #3 | turquoise | The third of three states that leave different-colored trails when they turn OFF | |
12 | OFF trail #3 | blue-green | Envelope/history state for state-11 ON cells |
A glider made with any one of the following ON states will remain in that same state. This makes it easier to track in a glider synthesis or in signal circuitry (for example). All of these no-trail ON states propagate their own state to new births, as long as there isn't any disagreement. If the three neighbors of an OFF cell don't share the same state, the new ON cell will be created in the lowest no-trail state, state 13. A similar rule for ON states with trails reduces a new birth cell to state 1 when there's any disagreement.
State | Name | Color | Description | |
13 | ON no-trail #1 | white | Patterns in this state will remain in this state as they evolve, but leave no trail | |
14 | vanishing OFF labels | tomato | This cell state vanishes in one tick (spreads to state-16 neighbors) | |
15 | ON no-trail #2 | salmon | Patterns in this state leave no trail | |
16 | removable OFF labels | pale red | This cell state decays to state 14 if touched by an ON state or an adjacent state-14 cell) | |
17 | ON no-trail #3 | orange | Patterns in this state leave no trail | |
18 | cyclable OFF state #1 (labeling) | wheat | Label state, switches to state 22 if a neighbor is state 22 | |
19 | ON no-trail #4 | cyan | Patterns in this state leave no trail | |
20 | cyclable OFF state #2 (labeling) | silver | Label state, switches to state 18 if a neighbor is state 18 | |
21 | ON no-trail #5 | yellow-green | Patterns in this state leave no trail | |
22 | cyclable OFF state #3 (labeling) | light pink | Label state, switches to state 20 if a neighbor is state 20 | |
23 | ON no-trail #6 | brighter green | Patterns in this state leave no trail | |
24 | hidden OFF state (pop-up labels) | near-black | This label state is close in color to an OFF cell, but converts to state 18 if touched by an ON cell | |
25 | ON no-trail #7 | red-magenta | Patterns in this state leave no trail |
[Rule]Investigator rules implement a series of functional states on top of the original two states, which see use in areas such as theoretical circuitry, permitting far more compact solutions in a given target rule than regular 2-state rules would allow.
[Rule]Investigator rules are a superset of the "Extended Life" rule, devised in 2011 by Martin "Extrementhusiast" Grant, which implemented six new states on top of regular 2-state Life which permitted nonstandard behavior. One of these cells functions identically to the state-6 cell present in [Rule]History and later [Rule]Super.
An initial version of this rule family specific to the Conway's Life rule, titled StateInvestigator, was devised by conwaylife.com forum user "Entity Valkyrie" in April 2018. Patterns in Extended Life do not use the same state numbers as are present in [Rule]Investigator. Therefore patterns from Extended Life will need manual conversion to function identically in [Rule]Investigator. Alternatively, safeopenclip.lua may be used to attempt an automatic conversion of the Extended Life rule and its variants, to the native "LifeInvestigator" state mapping.
The Investigator algo has the following states:
State | Name | Color | Description | |
0 | OFF | black | default background OFF state | |
1 | ON | green | default ON state | |
2 | killer ON | cyan | turns off all adjacent state 1 cells, is treated as ON | |
3 | killer OFF | red | turns off all adjacent state 1 cells, is treated as OFF, equivalent to [Rule]History state 6 | |
4 | eternal ON | white | is treated as ON | |
5 | eternal OFF | dark gray | is treated as OFF | |
6 | P2 killer ON | magenta | turns off all adjacent state 1 cells, is treated as on, changes into state 7 on next generation | |
7 | P2 killer OFF | dark purple | turns off all adjacent state 1 cells, is treated as off, changes into state 6 on next generation | |
8 | egg ON | yellow | turns on all adjacent state 0 cells, is treated as ON | |
9 | egg OFF | gold | turns on all adjacent state 0 cells, is treated as OFF | |
10 | P2 ON | mid green | is treated as ON, changes into state 11 on next generation | |
11 | P2 OFF | dark green | is treated as OFF, changes into state 10 on next generation | |
12 | P2 egg ON | orange | turns on all adjacent state 0 cells, is treated as ON, changes into state 13 on next generation | |
13 | P2 egg OFF | dark orange | turns on all adjacent state 0 cells, is treated as OFF, changes into state 12 on next generation | |
14 | inverter | blue | turns off all adjacent state 1 cells, turns on all adjacent state 0 cells | |
15 | catalyst | silver | is treated as ON but requires state 1 cells to give birth | |
16 | catalyst killer | gray | turns off all adjacent state 1 cells, is treated as ON but requires state 1 cells to give birth | |
17 | ON births | pink | is treated as ON for births, is treated as OFF for deaths | |
18 | OFF births | dark magenta | is treated as OFF for births, is treated as ON for deaths | |
19 | ON P2 births | dull cyan | is treated as ON for births, is treated as OFF for deaths, changes into state 20 on next generation | |
20 | OFF P2 births | dark cyan | is treated as OFF for births, is treated as ON for deaths, changes into state 19 on next generation |
State 2-5, 8-9 and 14-18 never change. States 6-7, 10-11, 12-13 and 19-20 always toggle.
In addition, unlike [Rule]History and [Rule]Super, odd states are not necessarily "alive" nor are even states "dead" in this rulespace.
The default colors for the Super algorithm can be changed by opening Preferences > Colors and switching to the Super algorithm. To allow the Super algo to support different color schemes for each of the three rule families, the default colors for Super rules will be states 0 to 25, the default colors for History rules will be states 26 to 32, and the default colors for Investigator rules will be states 33 to 53.
Five conversion scripts are included in Golly's Scripts/Lua folder. The first four of these scripts -- toInvestigator.lua, toSuper.lua, toHistory.lua, and toStandard.lua -- allow for switching between the various rule families that the Super algo supports, making sure that the correct suffix is applied to the current rule -- "...Investigator", "...Super", "...History", or no suffix -- switching to the Super algorithm if needed. The last script, toChangeState.lua, never changes the algo or the rule; it simply allows for an easy method of changing one specific state (either in the entire pattern or in a selection) to a different value.
"Upward" conversions, increasing the number of states, are done simply by adding the "History" or "Super" suffix, with no changes made to any cell states. "Downward" conversions are more complicated. If the suffix were to be changed manually from "Super" to "History", for example, any states higher than 6 would be reduced to state 6. This is not an optimal conversion for two reasons: state 6 is an OFF state with non-standard behavior, and all odd-numbered states in a Super rule are considered to be ON states, so would be better mapped to a valid History ON state.
Therefore, toHistory.lua changes any with-trail ON state to state 1, and any with-trail OFF state to state 2. No-trail ON states are also reduced to state 1, but no-trail OFF states are removed (changed to state 0). States 7 and 8 are reduced to state 3 and state 4, respectively.
Similarly, toStandard.lua converts any odd-numbered Super or History ON state to state 1, and any even-numbered state to state 0. This provides an easy way to remove unwanted history or label cells in a History or Super pattern.
The "Investigator" suffix is a special case, and is not currently considered to be either an "upward" or "downward" conversion -- simply because there is no obvious standard mapping between Investigator states and History or Super states. The scripts will suggest that a downward conversion to a Standard rule should be done from a History or Super rule before conversion to Investigator, and vice versa.
The default key mapping for the conversion scripts is Alt+G for toSuper.lua, Alt+H for toHistory.lua, Alt+I for toInvestigator.lua, and Alt+J for toStandard.lua. As usual, the Alt modifier corresponds to the Option key on a Mac.
If you have migrated to the current version of Golly from an earlier version, you may have to go to Preferences > Keyboard and manually map one or more of these keyboard shortcuts, since they are only mapped when a new GollyPrefs is created.
Alt+K is mapped by default to the helper script toChangeState.lua, which allows state adjustments to be made in bulk much more easily in History, Super, and Investigator rules. It is a search-and-replace function for cells of one specific state chosen by a mouse click, either in the entire pattern or inside a selection. This provides a way to remove or modify unwanted states while retaining others. The script remembers the last chosen target state, which is independent Golly's current drawing state. The current target state is reported by the script. Change it by clicking the state you want in the edit bar after running the script.
Rules containing B0 with Smax are emulated to prevent pattern strobing.
Rules containing B0 without Smax are not supported.
The Patterns/Super folder contains several sample patterns illustrating some possible uses of the extra states provided by the Super algo, both for Conway's Life and other rules, using the "History" and "Super" suffixes.