Note: two cellstates (dead/off/0 and alive/on/1), square grid, and range-1 Moore neighbourhood are assumed in most of the discussion.
dvgrn wrote: July 8th, 2024, 11:31 am
[...] the conwaylife community's current standard usage [...]
I think it is counterproductive to attempt to declare any "standard usage". There is no "standard usage" in the local community on this website, because there is no reliable, commonly agreed, uncontroversial way to determine what counts as "standard".
It would be much more productive to aim for intuitive, self-explanatory terminology that is easy to understand and hard to misunderstand.
Existing usage of words and phrases in the local community is frequently counterintuitive or self-contradictory.
dvgrn wrote: July 8th, 2024, 11:31 am
[...]
Andreen suggests recording the necessary and don't-care information in the form of one of his transition tables -- like this for a figure-eight oscillator:
Code: Select all
8sum
\ 0 1 2 3 4 5 6 7 8
|--------------------------
Center 0 | 0 0 0 1 0 0 0 DON'T-CARE DON'T-CARE
Cell 1 | 0 0 1 1 0 0 0 DON'T-CARE 0
That's workable, but quite hard to read compared to the standard terminology we're using these days. We can track that same information a lot more succinctly with a minrule-maxrule rule range, as we do in the figure-eight article:
"B3/S23 – B378/S237".
I disagree. Transition tables are more illuminating and helpful. They highlight the existing possibilities explicitly, instead of packing them into a "rulestring gibberish" (which is basically how newcomers see most rulestring notations). A table is easier to read, easier to understand, and easier to derive further information of interest.
It should be obvious that "easy to write" doesn't imply "easy to read".
dvgrn wrote: July 8th, 2024, 11:31 am
[...]
if you pay attention to just the information in the row headers --
center cell = 0 for the first row of the transition table, and
center cell = 1 for the second row -- then each entry of that array obviously
implies a LIFELINE-transition (and nothing more). You get the oldstate "0" or "1" from the row header, and the newstate from the array entry.
So far so good. The entries themselves aren't LIFELINE-transitions, but together with row header information, they
imply LIFELINE-transitions. [...]
Within a transition table of the kind given in
the message by Andreen, every single entry is a choice between either specifying one of two possible
cellstate-to-cellstate transitions for that entry, or leaving the transition unspecified ("Don't Care").
If you consider only specific cellular automata (rather than
minimal transition tables of structures), then for every fully specified condition, there are exactly two possible choices of the transition that is prescribed to happen whenever that condition is met:
- If the fully specified condition tells that "the" cell is currently dead, then the transition happening in that case can be either Birth or Abstain. It's impossible to prescribe either Survival or Death in this case.
- If the fully specified condition tells that "the" cell is currently alive, then the transition happening in that case can be either Survival or Death. It's impossible to prescribe either Birth or Abstain in this case.
There is a correspondence between positions in the transition table array and fully specified conditions available in the rulespace. 18 entries, 18 fully specified conditions. 102 entries, 102 fully specified conditions. 512 entries, 512 fully specified conditions.
There is a correspondence between allowed values of an entry in the transition table array and transitions that can be prescribed to happen. Specifying '0' or '1' in an entry specifies which of two state-to-state transitions happens (under the condition determined by the position of that entry). It's either "birth vs. abstain" choice, or "survival vs. death" choice.
For that reason, it feels quite intuitive and natural to interpret those "single bits" as cellstate-to-cellstate transitions, in the sense consistent with Lifeline:
https://conwaylife.com/w/index.php?oldid=126314#Page_2
Those "single bits" aren't rules. Changing a single entry in the table changes what happens (the transition) without changing when it happens (the condition).
dvgrn wrote: July 8th, 2024, 11:31 am
[...] Andreen's phrases "necessary transitions" and "Don't Care transitions" [...]
dvgrn wrote: July 8th, 2024, 11:31 am
[...] When Andreen talks about "necessary transitions" and "Don't Care transitions", he really doesn't seem to be referring to simple LIFELINE-transitions that are nothing more than ordered pairs of cell states. He's talking about
specific positions in his transition tables -- which imply neighbor-count information along with the oldstate and newstate. [...]
I believe your interpretation is incorrect.
"Don't Care" means "don't care what happens if such-and-such condition is met", rather than "don't care what is the condition".
When Andreen talks about "necessary transitions" and "Don't Care transitions", they are referring to
specific values in the array entries, rather than to positions.
A necessary transition corresponds to a value that has to remain unchanged, for the structure of interest to evolve in the same way.
A "Don't Care" transition corresponds to a value that can be changed, without affecting the evolution of the structure of interest.
Changing the value in an entry doesn't affect where the entry is located within the array.
Here is a quote from the 1994 source:
alife/topics/cas/threads/natural/0007.html wrote:[...] Isolate these structures and analytically or experimentally determine their minimal transition tables, ie, the array of *necessary* transitions to produce the structure along with indications of the "Don't Care" transitions. [...]
For the figure eight oscillator to work unchanged, it doesn't matter whether the rules prescribe the transition "birth" or the transition "abstain" when the condition B8/A8 is met. That condition is never queried during evolution of the structure of interest. The corresponding entry in the transition table array is never read:
Code:
Select all
x = 6, y = 6, rule = B38/S23
3o$3o$3o$3b3o$3b3o$3b3o!
The transition table for Conway's Life specifies the transition 0 -> 0 "abstain" for the condition B8/A8 "a dead cell with eight alive neighbours".
The minimal transition table for the figure eight oscillator specifies 0 -> ? "Don't Care" for the same condition B8/A8.
For the figure eight oscillator to work unchanged, the rules must prescribe the transition "death" when the condition S8/D8 is met.
Ironically, prescribing the transition "survival" instead leads to the structure failing to survive:
Code:
Select all
x = 6, y = 6, rule = B3/S238
3o$3o$3o$3b3o$3b3o$3b3o!
Both the transition table for Conway's Life, and the minimal transition table for the figure eight oscillator, specify the transition 1 -> 0 "death" for the condition S8/D8 "an alive cell with eight alive neighbours".
dvgrn wrote: July 8th, 2024, 11:31 am
A
figure eight has "necessary transitions" B3, S2, and S3, and "Don't Care transitions" B7, B8, and S7. A figure eight doesn't work if any of the necessary transitions are removed -- but it does continue to work just fine if the Don't-Care transitions are added.
I think your invented example is nonsensical.
It is incompatible with Andreen's usage, because Andreen refers to state-to-state transitions. Neither of B3, S2, S3, B7, B8, S7 you listed is a transition. Those abbreviations can be read as referring to
transition rules.
"Don't Care transitions" are state-to-state transitions that are left unspecified in some entries of the minimal transition table for the oscillator (rather than rules like B7, B8, S7).
The figure eight oscillator is an object ("structure"). Transition rules belong to the ruleset, rather than to the object. The figure eight oscillator doesn't "have" any rules.
It is impossible to "add" or "remove" a rule. One cannot "add" the S3 rule when there is already the D3 rule; instead, one can replace the rule D3 by the rule S3. All four possible transitions are relevant to determining the minimal transition table of an object. In addition to specifying required/optional "birth" and "survival" transitions, one has to specify required/optional "abstain" and "death" transitions in the table as well.