I would make the notation much more well-defined by completely remaking this notation with many tweaks, but there isn't enough time here.
Since the original definition of Username5243's Array Notation (UNAN) was ill-defined as P進大好きbot pointed out in the wiki, I decided to fix the definition of UNAN as follows:
Base rule: First, if the array is just 0, a[0]b = a × b, for a greater than 0. If the array is 1, a[1]b = a^b, for a greater than 0.
Prime rule: Second, for any a greater than 0, if the iterator b is 1, a[c]1 = a; If the iterator b is 0, a[c]0 = 1 for a greater than 0.
Base zero rule: Third, in case of a = 0 (the base is equal to 0), 0[0]b = 0 for all b, 0[1]c = 0 for c greater than 0, 0[c]1 = 0 for all c, 0[1]0 is undefined (see also zero to the power of zero).
Recursion rule: Finally, if the three rules above don't meet, a is greater or equal to 0, c is greater than 0, and b is greater than 1, then the result is a[c-1](a[c](b-1)). This rule do not conflict with the base rule on a[1]b, since a^b = a × a^(b-1), hence a[1]b = a[0](a[1](b-1)), which returns the same value when we apply the base rule for a[1]b.
In later parts:
Base rule: First, if the array merely contains 0 (excluding separators), a[0#]b = a × b, for a greater than 0, and # has no nonzero entries.
Tailing rule: Second, if there are zeroes next to the last nonzero entry, it may be removed: a[#,0]b = a[#]b.
Base zero rule: Third, in case of a = 0 (the base is equal to 0), 0[0]b = 0 for all b, 0[1]b = 0 for b greater than 0, 0[c]1 = 0 for all c, 0[1]0 is undefined.
Recursion rule: Finally, if the first entry c in a[c#]b is greater than 0, a is greater or equal to 0, and b is greater than 1, then the result is a[c-1#](a[c#](b-1)).
In that case, if the four basic rules above don't meet, apply the new rules to the expression, such as hyperoperation rule, which are unchanged.
And defining some properties of this notation with respect to the fixed definition as follows:
a[0]0 = 0 for all a.
1[c]b = 1 for c > 0 and for all b.
0[c]b is always undefined if c > 1 and b ≠ 1 in the basic array notation.
1[#]b = 1 for all arrays # beyond the basic array notation.
2[#]b = 4 for all arrays # beyond the basic array notation (in the simplest case, 2[0,1]b = 2[b]2).
2[c]2 = 4 for all c (see circulation).
a[c+1]2 = a[c]a for c > 0.
0[0,1]b = 0 for b = 0, and undefined for b > 0.
0[c#]1 = 0 for all c in c# greater than 0, where # is the rest of the array (in the simplest case, 0[1,1]1 = 0 (by the prime rule)).
0[0,d#]b is always undefined for all b and d greater than 0, where # is the rest of the array beyond the second entry, because 0[0,1]b = 0[b]0, which is undefined by the property above.
0[1#]b is equal to 0 for all b greater than 0, where # is the rest of the array (in the simplest cases, 0[1,1]1 = 0, and 0[1,1]2 = 0[0,1]0 = 0).
0[0,0#]b is equal to 0, where # is the rest of the array beyond the second entry that contains at least one nonzero entry.
0[c#]0 is always undefined for all c in c# greater or equal to 1, where # is the rest of the array (in the simplest case, 0[1,1]0)
0[c#]b is always undefined for all c in c# greater than 1, and for all b greater than 1, where # is the rest of the array (in the simplest case, 0[2,1]2 = 0[1,1]0, which is undefined by the previous property).
3[3]2
= 3[2](3[3]1)
= 3[2]3
= 3[1](3[2]2)
= 3[1]3[1](3[2]1)
= 3[1]3[1]3
In case of a[1]b (assuming that there are two distinct rules applicable as follows):
If we apply the base rule, then 3[1]3[1]3 = 3[1]3^3 = 3[1]27 = 3^27 = 7,625,597,484,987
If we apply the recursion rule, then 3[1]3[1]3 = 3[1]3[0](3[1]2) = 3[1]3[0]3[0](3[1]1) = 3[1]3[0]3[0]3 = 3[1]3[0](3×3) = 3[1]3[0]9 = 3[1](3×9) = 3[1]27 = 3[0](3[1]26) = 3[0]3[0](3[1]25) = ... = 3[0]3[0]...[0]3[0]3 with 27 3's = 3^27 = 7,625,597,484,987
Hence if there are two distinct rules applicable to a[1]b, the base rule must be used instead of the recursion rule, since the base rule is used first, and they also return the same value for both rules.
2[6]3
= 2[5](2[6]2)
= 2[5]4
= 2[4](2[5]3)
= 2[4]2[4](2[5]2)
= 2[4]2[4]4
= 2[4]2[3](2[4]3)
= 2[4]2[3]2[3](2[4]2)
= 2[4]2[3]2[3]4
= 2[4]2[3]2[2](2[3]3)
= 2[4]2[3]2[2]2[2](2[3]2)
= 2[4]2[3]2[2]2[2]4
= 2[4]2[3]2[2]2[1](2[2]3)
= 2[4]2[3]2[2]2[1]2[1](2[2]2)
= 2[4]2[3]2[2]2[1]2[1]4
= 2[4]2[3]2[2]2[1]2^4
= 2[4]2[3]2[2]2[1]16
= 2[4]2[3]2[2]2^16
= 2[4]2[3]2[2]65536
= 2[4]2[3]2[1](2[2]65535)
= 2[4]2[3]2[1]2[1](2[2]65534)
= 2[4]2[3]2[1]2[1]2[1](2[2]65533)
...
0[0,3,1]2
= 0[2,2,1]0
= Undefined (see properties above)
0[0,0,2]3
= 0[0,3,2]0
= 0[0,2,2]0
= 0[0,1,2]0
= 0[0,0,2]0
= 0[0,0,1]0
= 0[0,0,0]0
= 0[0]0
= 0 (see properties above)
0[0{1}0,1]3
= 0[0{1}3]0
= 0[1{1}2]0
= Undefined (see properties above)
0[0{0,1}1]4
= 0[0{4}1]0
= 0[1{3}1]0
= Undefined (see properties above)
0[0{0{2}0{1}1}1]3
= 0[0{0{2}0,0,0,1}1]0
= 0[0{0{2}0,0,0,0}1]0
= 0[0{0{2}0}1]0
= 0[0{0}1]0
= 0[0,1]0
= 0[0]0
= 0 (see properties above)
Since the alternative definition of UNAN is also ill-defined by the similar issues pointed out by P進大好きbot, I am going to reform the definition as follows:
A valid expression in UNAN's basic array notation is of the form a[c]b, where a, b, and c are non-negative integers (0,1,2,3,4,...)*. It has the following rules:
Rule 1 (base rule): a[0]b = a×b.
Rule 2 (prime rule): a[c]0 = 1.
Rule 3 (recursion rule): a[c]b = a[c-1](a[c](b-1)) if b > 0 and c > 0.
If there are two or more distinct rules to apply to a single expression, the lowest-numbered rule which is applicable and whose result is a valid expression will be applied.
In later parts beyond the basic array notation, there will be a minor difference for the rule 2 (prime rule) as follows:
Rule 2 (prime rule): a[#]0 = 1 for any array #.
The other rules remain unchanged.
*Note: Fixed as the second alternative definition was ill-defined as he wrote "A valid expression in UNAN's basic array notation is of the form a[c]b, where a, b, and c are non-integers." before P進大好きbot pointed out the similar issue again.
Abandoned. See also: Fifth alternative definition and Phenol notation.