Hardy array notation

This is an array notation that TrialPurpleCube made.

## Part 1

The limit is {{{{...}3}2}1}, which corresponds to ψ0(Ωω) in Buchholz's function. It also corresponds well with PSS.

### Conventions

```
For an array J = {I0}{I1}...{In}, I use J[k] = Ik if k≥0,  J[k] = In+k+1 if k<0, len(J) = n+1, and "+" to mean concatcenation of two arrays. If I = {J}n, I* = J, "}0" is abbreviated as "}", {I}kn is {I}k repeated n times. We abbreviate {0} as 1, n{0} as n+1, and {1} as ω, {0}[0] = {0}, {0}[anything else] = 0.

```

### Definition

```
Define E(X,n):
1. If X[-1]=0: Return X[:-1]
2. If len(X)>1: Return X[:-1]+E(X[-1],n)
3. If X*[-1]={0}:
     If X={0}: Return 0
     Else: Return {X*[:-1]}n
4. If there exists at least 1 string of the form "{0}k", k>0:
     X0=the last string of the form "{0}k", k>0 in X
     X1=X0
     Infinite loop:
       X2=first character of the form "}r" that is right of X1
       X1=everything from X2 until its matching left brace, inclusive
       If X2="}k-1": break
     If n=0: X3=X, but replace X0 with ""
     Else: X3=X, but replace X0 with E(X,n-1)
     Return X3, but replace "{}k" with "{0}k", for any k
5. Else:
     X0=
        [last string of the form {{J0}x0{J1}x1...{Jp}xm{I0}{I1}...{Ir}}k,
        x0,x1,x2,...>0, k>0 in X] (if there are no terms with subscripts>0, m=-1)
     If Ir={0}: return X but X0 is replaced with {X0*[:-1]}kn
     Else: return X but X0 is replaced with {X0*[:p+1]+E(X0*[p+1:],n)}k

```

```
Define [#]n:
1. If #=0: Return n
2. If #[-1]={0}: Return [#[:-1]]n-1
3. Else: Return [E(#,n)]n

```

### Example

X0 is green, outer parts of copies of X1 are red

```
[{{{1}2{0}1}1}]3 = ψ0(Ω2ω+ΩεΩ+ω+1)
[{{{1}2{0}1}1}]3 (rule 4)
[{{{1}2{0}1}1}]3 (rule 4 loop)
[{{{1}2{0}1}1}]3 (rule 4 loop)
[{{{1}2{{{1}2{{{1}2{{{1}2}1}}1}}1}}1}]3 (rule 4)

[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{0}2}1}}1}}1}}1}]3 (rule 5)

[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{0}2}1}}1}}1}}1}]3 (rule 4)
[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{0}2}1}}1}}1}}1}]3 (rule 4 loop)
[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{{0}2{0}2{{0}2{0}2{{0}2{0}2}1}1}1}1}}1}}1}}1}]3 (rule 4)

[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{{0}2{0}2{{0}2{0}2{{0}2{0}2}1}1}1}1}}1}}1}}1}]3 (rule 4)
[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{{0}2{0}2{{0}2{0}2{{0}2{0}2}1}1}1}1}}1}}1}}1}]3 (rule 4 loop)
[{{{1}2{{{1}2{{{1}2{{{0}2{0}2{{0}2{0}2{{0}2{0}2{{0}2{{0}2{{0}2{{0}2}1}1}1}1}1}1}1}}1}}1}}1}]3 (rule 4)

```

[#]n is comparable to Hα(n) using the FSes for Extended Buchholz, where α is *o*(#), the ordinal level of the array as defined below:

```
o(0) = 0
If #[-1]!={0}, and # is not 0, o(#) = sup{o(E(#,n)) | n<ω} for the E defined above
Otherwise, o(#) = o(#[:-1])+1

```

## Part 2

The limit is {{0}{0}{0}...}, which corresponds to ψ0(Λ) in Extended Buchholz's function. This part allows for arrays in subscripts, and is the same as part 1 until BHO, which is {{{0}2}1} in part 1, and {{0}2} in part 2, since the {0}2 searches out for a layer *smaller* than it, not having a subscript that is one less than it. Then, it changes the subscript.

### Definition

```
Define lt(X,Y):
1. If Y=0: Return 0
2. If X=0: Return 1
3. If X[0]=Y[0]: Return lt(X[1:],Y[1:])
4. If X[0]**=Y[0]**: Return lt(X[0]*,Y[0]*)
5. Else: Return lt(X[0]**,Y[0]**)

```

```
Define E(X,n):
1. If X[-1]=0: Return X[:-1]
2. If len(X)>1: Return X[:-1]+E(X[-1],n)
3. If X*[-1]={0}:
     If X={0}: Return 0
     Else: Return {X*[:-1]}n
4. If there exists at least 1 string of the form "{0}k", k[-1]={0}:
     X0=the last string of the form "{0}k", k[-1]={0} in X, it can be in a subscript
     X1=X0
     Infinite loop:
       X2=first character of the form "}r" that is right of X1, it can be in a subscript
       X1=everything from X2 until its matching left brace, inclusive
       If X2="}X3", lt(X3,k)=1: break
     If n=0: X3=X, but replace X0 with ""
     Else:
       X4={E(X,n-1)*}X3[:-1]
       X3=X, but replace X0 with X4
     Return X3, but replace "{}k" with "{0}k", for any k
5. Else:
     X0=
        [last string of the form {{J0}x0{J1}x1...{Jp}xm{I0}{I1}...{Ir}}k,
        x0,x1,x2,...>0, k!=0 in X] (if there are no terms with subscripts>0, m=-1)
     If Ir={0}: return X but X0 is replaced with {X0*[:-1]}kn
     Else: return X but X0 is replaced with {X0*[:p+1]+E(X0*[p+1:],n)}k

```

```
Define [#]n:
1. If #=0: Return n
2. If #[-1]={0}: Return [#[:-1]]n-1
3. Else: Return [E(#,n)]n

```

### Example

X0 is green, outer parts of copies of X1 are red

```
[{{0}{1}1}]3 = ψ0(ΩΩω)
[{{0}{0}1{0}1{0}1}]3 (rule 5)

[{{0}{0}1{0}1{0}1}]3 (rule 4)
[{{0}{0}1{0}1{0}1}]3 (rule 4 loop)
[{{0}{0}1{0}1{{0}{0}1{0}1{{0}{0}1{0}1{{0}{0}1{0}1}}}}]3 (rule 4)

```