First-order Array Notation
Before I start, I want to let you guys know that starting from this part, things are getting more confusing and complicated. So if you guys still don't understand how Almighty Array Notation works, please go back to the previous parts. Otherwise, you're not going to understand anything below. Anyways, let's get started!
First-order Array Notation (FoAN) is the fifth part of almighty array notation. A valid expression in FoAN is of the form a*(a, b X c X d X e X ... X n) where a, b, c, d, e, ..., n ≥ 1, and X are the separators.
Definition
The First-order Array Notation has the following form:
a*(a, b X c X d X e X ... X n) where a, b, c, d, e, ..., n ≥ 1, and X are the separators.
The separator can come in many forms, such as {3}, {1, 4, 5}, {1, 1, 3 {2} 2}.
The first entry of the array is the base, the number after it is the iterator.
The {1} separator stands for comma.
In this extension, the separators are the comma, the exclamation mark (!) [not to be confused with the factorial operation], and {x A n} where x is an expression, A is a separator, and n is an integer > 1.
Rules
Empty array rule: a*() = 1, since a*(1) = a*() using the tailing rule.
Base rule: a*(a) = a and a*(a, b) = a^b
Tailing rule 1: a*(# 1 X #) = a*(#) where # indicates the rest of array (X can be any separators)
Tailing rule 2: a*(# X 1) = a*(#)
Tailing rule 3: a*(# {% 1} #) = a*(# {%} #) where % indicates the rest of array in the separator
Prime rule: a*(a, 1 #) = a
Recursion rule: a*(a, b, 1, 1, ..., 1, 1, c #) = a*(a, a, a, a, ..., a, a*(a, b - 1, 1, 1, ..., 1, 1, c #), c - 1 #) (w/ b number of a's) for a, b, c > 1 and the length of the array ≥ 4
If rules 1 - 7 do not apply: a*(a, b, c #) = a*(a, a*(a, b - 1, c #), c - 1 #)
Comma rule: a*(a, b {1} c #) = a*(a, b, c #)
If more than one rule(s) apply to an array, start from step 1, and find the nearest rule that applies to that array.
So a*(2, 1, 1, 1, 1, 1, 2, 2) = a*(2) = 2 (by rule 6) instead of a*(2, 2, 2, 2, ..., 2, a*(2, 0, 1, 1, ..., 1, 1, 2, 2), 1, 2) (by rule 7), which is ill-formed due to the occurrence of 0.
Followed by some previous rules by following:
Reuse the rules for linear arrays to that row (after separators other than commas)
a*(a, b {2} c) a*(a, a, 1, 1, 1, ..., 1, 1, 2 {2} c - 1) with b string of 1's using comma as a separator.
a*(a, b {2} 1 {2} ... {2} 1 {2} c) = a*(a, a, {2} 1 {2} ... {2} 1, 1, 1, ..., 1, 1, 2 {2} c - 1) with b string of 1's using comma as a separator.
a*(a, b {d} 1 {d} ... {d} 1 {d} c) = a*(a, a, {d - 1} 1 {d - 1} ... {d - 1} 1, 1, 1, ..., 1, 1, 2 {d - 1} c - 1) with b string of 1's using {d - 1} as a separator.
a*(a, b {1, 1, 1, ..., 1, 1, c, d%} 2) = a*(a, a {1, 1, 1, ..., 1, b, c - 1, d%} 2), which is different from a*(a, b, 1, 1, ..., 1, 1, c #) = a*(a, a, a, a, ..., a, a*(a, b - 1, 1, 1, ..., 1, 1, c #), c - 1 #).
a*(a, b {1 {2} c} 2) = a*(a, a {1 {1, 1, 1, ..., 1, 1, 2 {2} c - 1} 2), and so on. Nested arrays reuse the rules 2 through 5.
If n < m, a*(# {n} 1 {m} #) = a*(# {m} #).
At this part, we define the new rules by following:
Reuse the previous rules above and ignore the exclamation mark separators.
Define the simplest expression for that part as a*(a, b {1 ! 2} 2) = a*(a, a {1 { ... 1 {1, 2} 2 ... } 2} 2)
If the first entry before an exclamation mark is just 1, change the {1 ! n + 1 #} to Sb (b is the iterator), where S1 is {1 ! n #}, Sn + 1 = {1 {Sn} 2 ! n #}, then change the iterator to the base.
Explanation
In the First-order Array Notation, let's introduce a new separator, the exclamation mark (!). The ! separator is a high ranking separator, meaning it is higher level than any other separators so far, and even higher ranking than separators that contain it.
Please note that the ! separator is only allowed inside separators, not arrays, so the expression like a*(a, b ! 2) is invalid and meaningless, but a*(a, b {1 ! 2} 2) is allowed.
When we encounter a separator of type {1 ! n #} in the process, we do this: change the 1 ! 2 into Sn, where S1 is 1 ! n - 1 and S(n + 1) = 1 {Sn} 2 ! 2.
So, a*(3, 3 {1 ! 3} 2) = a*(3, 3 {1 {1 {1 ! 2} 2 ! 2} 2 ! 2} 2) (keep in mind that if that had been a 3 before the end of the array, it would have been decreased by 1 and had another {1, 2} before, it, as it was sent to the last case).
a*(a, b {1 ! 2} 2) = a(a, a {1 ... 1 {1, 2} 2 ... 2} 2) with b pairs of 1, 2's For example, a*(3, 4 {1 ! 2} 2) = a*(3, 3 {1 {1 {1, 2} 2} 2} 2). FGH level ε0.
a*(a, b, 2 {2} 2) = a*(a, a*(a, a*(a, ... a*(a, a {1 ! 2} 2) {1 ! 2} 2) {1 ! 2} 2) ... {1 ! 2} 2) (b times). FGH level ε0 + 1.
a*(a, b, 1, 2 {2} 2) = a*(a, a, a*(a, a, a*(a, a, ... a*(a, a, a {1 ! 2} 2) {1 ! 2} 2) {1 ! 2} 2) ... {1 ! 2} 2) (b times). FGH level ε0 + ω.
a*(a, b {2} 2 {1 ! 2} 2) = a*(a, a, 1, 1, 1, ..., 1, 1, 2 {1 ! 2} 2). FGH level ε0 + ω^ω.
a*(a, b {1, 2} 2 {1 ! 2} 2) = a*(a, a {b} 2 {1 ! 2} 2). FGH level ε0 + ω^ω^ω.
a*(a, b {1 ! 2} 3) = a*(a, a {1 ... 1 {1, 2} 2 ... 2} 2 {1 ! 2} 2) with b pairs of 1, 2's. FGH level (ε0)2.
a*(a, b {1 ! 2} 4) = a*(a, a {1 ... 1 {1, 2} 2 ... 2} 2 {1 ! 2} 3) with b pairs of 1, 2's. FGH level (ε0)3.
a*(a, b {1 ! 2} 1, 2) = a*(a, a {1 ! 2} a*(a, a {1 ! 2} a*(a, a {1 ! 2} ... a*(a, a {1 ! 2} a))) ... ))) (b times). FGH level (ε0)ω.
a*(a, b {1 ! 2} 1 {2} 2) = a*(a, a {1 ! 2} 1, 1, 1, ..., 1, 1, 2) with b string of 1's. FGH level (ε0)ω^ω.
a*(a, b {1 ! 2} 1 {1, 2} 2) = a*(a, a {1 ! 2} 1 {b} 2). FGH level (ε0)ω^ω^ω.
a*(a, b {1 ! 2} 1 {1 ! 2} 2) = a*(a, a {1 ! 2} 1 {1 ... 1 {1, 2} 2 ... 2} 2) with b pairs of 1, 2's. FGH level ε0^2.
a*(a, b {1 ! 2} 1 {1 ! 2} 2) = a*(a, a {1 ! 2} 1 {1 ... 1 {1, 2} 2 ... 2} 2) with b pairs of 1, 2's. FGH level ε0^2.
a*(a, b {1 ! 2} 1 {1 ! 2} 1 {1 ! 2} 2) = a*(a, a {1 ! 2} 1 {1 ! 2} 1 {1 ... 1 {1, 2} 2 ... 2} 2) with b pairs of 1, 2's. FGH level ε0^3.
a*(a, b {2 ! 2} 2) = a*(a, a {1 ! 2} 1 {1 ! 2} ... {1 ! 2} 2) with b string of 1's separated by {1 ! 2}. FGH level ε0^ω.
a*(a, b {3 ! 2} 2) = a*(a, a {2 ! 2} 1 {2 ! 2} ... {2 ! 2} 2) with b string of 1's separated by {2 ! 2}. FGH level ε0^ω^2.
a*(a, b {1, 2 ! 2} 2) = a*(a, a {b ! 2} 2). FGH level ε0^ω^ω.
a*(a, b {1 {2} 2 ! 2} 2) = a*(a, a {1, 1, 1, ..., 1, 1, 2 ! 2} 2) with b string of 1's. FGH level ε0^ω^ω^ω.
a*(a, b {1 {1, 2} 2 ! 2} 2) = a*(a, a {1 {b} 2 ! 2} 2). FGH level ε0^ω^ω^ω^ω.
a*(a, b {1 {1 ! 2} 2 ! 2} 2) = a*(a, a {1 {1 ... 1 {1, 2} 2 ... 2} 2 ! 2} with b pairs of 1, 2's inside the {X ! 2} separator. FGH level ε0^ε0.
a*(a, b {1 {1 ! 2} 3 ! 2} 2) = a*(a, a {1 {1 ... 1 {1, 2} 2 ... 2} 2 {1 ! 2} 2 ! 2} 2) with b pairs of 1, 2's inside the {X ! 2} separator. FGH level ε0^ε0^2.
a*(a, b {1 {1 ! 2} 1, 2 ! 2} 2) = a*(a, a {1 {1 ! 2} b ! 2} 2). FGH level ε0^ε0^ω.
a*(a, b {1 {1 ! 2} 1 {1 ! 2} 2 ! 2} 2) = a*(a, a {1 {1 ! 2} 1 {1 ... 1 {1, 2} 2 ... 2} 2 ! 2} 2). FGH level ε0^ε0^ε0.
a*(a, b {1 {2 ! 2} 2 ! 2} 2) ~ FGH level ε0^ε0^ε0^ω.
a*(a, b {1 {1 {1 ! 2} 2 ! 2} 2 ! 2} 2) ~ FGH level ε0^ε0^ε0^ε0.
*(a, b {1 ! 3} 2) = a*(a, a {1 {1 { ... 1 {1 ! 2} 2 ... ! 2} 2 ! 2} 2 ! 2} 2) with b leftmost 1's inside the outermost {}. For example, a*(3, 3 {1 ! 3} 2) = a*(3, 3 {1 {1 {1 ! 2} 2 ! 2} 2 ! 2} 2). FGH level ε1.
a*(a, b {1 ! 3} 1 {1 ! 3} 2) = a*(a, a {1 ! 3} 1 {1 {1 { ... 1 {1 ! 2} 2 ... ! 2} 2 ! 2} 2 ! 2} 2) with b leftmost 1's after the {1 ! 3}. FGH level (ε1)2.
a*(a, b {2 ! 3} 2) = a*(a, a {1 ! 3} 1 {1 ! 3} ... {1 ! 3} 2) with b string of 1's separated by {1 ! 3}. FGH level ε1^ω.
a*(a, b {1 {1 ! 3} 2 ! 3} 2) = a*(a, a {1 {1 {1 { ... 1 {1 ! 2} 2 ... ! 2} 2 ! 2} 2 ! 2} 2 ! 3} 2) with b leftmost 1's inside the X ! 3 separator (red). FGH level ε1^ε1.
a*(a, b {1 ! 4} 2) = a*(a, a {1 {1 { ... 1 {1 ! 3} 2 ... ! 3} 2 ! 3} 2 ! 3} 2) with b leftmost 1's inside the outermost {}. FGH level ε2.
a*(a, b {1 ! 5} 2) = a*(a, a {1 {1 { ... 1 {1 ! 4} 2 ... ! 4} 2 ! 4} 2 ! 4} 2) with b leftmost 1's inside the outermost {}. FGH level ε3.
a*(a, b {1 ! 1, 2} 2) = a*(a, a {1 ! b} 2). FGH level εω.
a*(a, b {1 ! 2, 2} 2) = a*(a, a {1 {1 { ... 1 {1 ! 1, 2} 2 ... ! 1, 2} 2 ! 1, 2} 2 ! 1, 2} 2) with b leftmost 1's inside the outermost {}. FGH level ε(ω + 1).
a*(a, b {1 ! 1, 3} 2) = a*(a, a {1 ! b, 2} 2). FGH level ε(ω2).
a*(a, b {1 ! 1, 4} 2) = a*(a, a {1 ! b, 3} 2). FGH level ε(ω3).
a*(a, b {1 ! 1, 1, 2} 2) = a*(a, a {1 ! 1, b} 2). FGH level ε(ω^2).
a*(a, b {1 ! 1, 1, 1, 2} = a*(a, a {1 ! 1, 1, b} 2). FGH level ε(ω^3).
a*(a, b {1 ! 1 {2} 2} 2) = a*(a, a {1 ! 1, 1, 1, ..., 1, 1, 2} 2) with b string of 1's. FGH level ε(ω^ω).
a*(a, b {1 ! 1 {1, 2} 2} 2) = a*(a, a {1 ! 1 {b} 2} 2). FGH level ε(ω^ω^ω).
a*(a, b {1 ! 1 {1 ! 2} 2} 2) = a*(a, a {1 ! 1 {1 ... 1 {1, 2} 2 ... 2} 2} 2) with b pairs of 1, 2's. FGH level ε(ε0).
a*(a, b {1 ! 1 {1 ! 3} 2} 2) ~ FGH level ε(ε1).
a*(a, b {1 ! 1 {1 ! 4} 2} 2) ~ FGH level ε(ε2).
a*(a, b {1 ! 1 {1 ! 1, 2} 2} 2) ~ FGH level ε(εω).
a*(a, b {1 ! 1 {1 ! 1 {1 ! 2} 2} 2} 2) ~ FGH level ε(ε(ε0)).
a*(a, b {1 ! 1 {1 ! 1 {1 ! 1 {1 ! 2} 2} 2} 2} 2) ~ FGH level ε(ε(ε(ε0))).
The limit of the primitive expanding arrays is the FGH level ζ0 = φ(2, 0) = ψ(Ω) with respect to Madore's OCF = ψ0(Ω^2) = ψ0(ψ1(ψ1(0))) with respect to Buchholz's OCF.