User blog comment:Ubersketch/Step Worm/@comment-25601061-20190103005947

"Last entry cannot be 1"

Consider the evaluation of an array with its last entry being some integer k > 1. Eventually, the k will reach 1, making the array it's on, and therefore the entire array, invalid; therefore, no array can have its last entry be greater than or equal to 1.
 * Step 1: [...,k]
 * Step 2: [...,[...,k-1]]
 * Step 3: [...,[...,[,...k-2]]]

Furthermore, any array containing any entries ≥ 1 is invalid. Either (1) its last entry is ≥ 1 or (2) its last entry is 0 (and the first entry ≥ 1 is to the left of a chain of 0s at the end of the array of length ≥ 1); case 1 has already been covered, and case 2 eventually reduces to an array belonging to case 1.

Therefore, the only valid arrays are arrays containing only zeroes*, making this notation as slow as the successor function.

"6. worm(a) = step value after array (a) is evaluated."

Using a is too ambiguous: it can be easily misunderstood for a number instead of an array. I suggest you use capital letters instead.


 * It could be argued that rule 5 could be used in the cases I've considered to come to this conclusion; however, it can only be used with non-terminating arrays, not invalid arrays.