Difference between revisions of "Bird's array notation"

From Cantor's Attic
Jump to: navigation, search
(Example)
(Nested arrays)
(5 intermediate revisions by the same user not shown)
Line 10: Line 10:
 
*'''Rule 5'''. Otherwise:
 
*'''Rule 5'''. Otherwise:
 
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 +
 +
Limit: \(\{n,n[2]2\}\) has growth rate \(\omega^\omega\)
  
 
=== Example ===
 
=== Example ===
Line 25: Line 27:
 
3\uparrow^{3\uparrow\uparrow7625597484987}3 \end{eqnarray*}
 
3\uparrow^{3\uparrow\uparrow7625597484987}3 \end{eqnarray*}
  
== Multidimentional ==
+
== Multidimentional arrays ==
  
 
*'''Rule M1'''. If there are only two entries, \(\{a, b\} = a^b\).
 
*'''Rule M1'''. If there are only two entries, \(\{a, b\} = a^b\).
Line 34: Line 36:
 
*'''Rule M5'''. If there is a non-zero entry after batch of unfilled separators and a 1.
 
*'''Rule M5'''. If there is a non-zero entry after batch of unfilled separators and a 1.
 
*:\(\{a,b [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\} = \{a \langle m_1-1 \rangle b [m_1] a \langle m_2-1 \rangle b [m_2] \cdots a \langle m_x-1 \rangle b [m_x] \{a,b-1 [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\},c-1 \#\}\)
 
*:\(\{a,b [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\} = \{a \langle m_1-1 \rangle b [m_1] a \langle m_2-1 \rangle b [m_2] \cdots a \langle m_x-1 \rangle b [m_x] \{a,b-1 [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\},c-1 \#\}\)
*'''Rule M7'''. Rules M1-M6 don't apply.
+
*'''Rule M6'''. Rules M1-M5 don't apply.
 
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 
*'''Rule A1'''. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
 
*'''Rule A1'''. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
 
*'''Rule A2'''. If \(b = 1\), we have \(\textrm` a \langle c \rangle 1 = a \textrm'\).
 
*'''Rule A2'''. If \(b = 1\), we have \(\textrm` a \langle c \rangle 1 = a \textrm'\).
 
*'''Rule A3'''. Otherwise, \(\textrm` a \langle c \rangle b \textrm' = \textrm` a \langle c - 1 \rangle b [c] a \langle c \rangle (b - 1) \textrm'\).
 
*'''Rule A3'''. Otherwise, \(\textrm` a \langle c \rangle b \textrm' = \textrm` a \langle c - 1 \rangle b [c] a \langle c \rangle (b - 1) \textrm'\).
 +
 +
Limit: \(\{n,n[1,2]2\}\) has growth rate \(\omega^{\omega^\omega}\)
  
 
=== Example ===
 
=== Example ===
Line 51: Line 55:
 
\{3,\{3,\{3,3[2]2,3\}[2]2,3\},2[2]2,3\} \\ &=&
 
\{3,\{3,\{3,3[2]2,3\}[2]2,3\},2[2]2,3\} \\ &=&
 
\{3,\{3,\{3,\{3,\{3,3[2]1,3\}[2]1,3\},2[2]1,3\}[2]2,3\},2[2]2,3\}
 
\{3,\{3,\{3,\{3,\{3,3[2]1,3\}[2]1,3\},2[2]1,3\}[2]2,3\},2[2]2,3\}
 +
\end{eqnarray*}
 +
 +
== Hyperdimentional arrays ==
 +
 +
*'''Rule M1'''. If there are only two entries, \(\{a, b\} = a^b\).
 +
*'''Rule M2'''. If \(m < n\), we have \(\{\# [m] 1 [n] \#^*\} = \{\# [n] \#^*\}\). (This also removes ones from the end of an array.)
 +
*'''Rule M3'''. If the second entry is 1, we have \(\{a,1 \#\} = a\).
 +
*'''Rule M4'''. If there is a non-zero entry immediately after batch of unfilled separators:
 +
*:\(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] (c-1) \#\}\)
 +
*'''Rule M5'''. If there is a non-zero entry after batch of unfilled separators and a 1.
 +
*:\(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] \{a,b-1 [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\},c-1 \#\}\)
 +
*'''Rule M6'''. Rules M1-M5 don't apply.
 +
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 +
*'''Rule A1'''. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
 +
*'''Rule A2'''. If \(b = 1\), we have \(\textrm` a \langle A \rangle 1 = a \textrm'\).
 +
* '''Rule A3'''. If the first entry in the angle brackets is zero, and there exists a non-zero entry after it:
 +
*: \(\textrm` a \langle 0,\underbrace{1,1,\cdots,1,1}_n,c \# \rangle b \textrm' = \textrm` a \langle \underbrace{b,b,b,\cdots,b,b}_{n+1},c-1 \# \rangle b \textrm'\)
 +
*'''Rule A4'''. Otherwise, \(\textrm` a \langle c \# \rangle b \textrm' = \textrm` a \langle c - 1 \# \rangle b [c \#] a \langle c \rangle (b - 1) \textrm'\).
 +
 +
Limit: \(\{n,n[1[2]2]2\}\) has growth rate \(^4 \omega\)
 +
 +
=== Example ===
 +
 +
\begin{eqnarray*} \{3,2[1,1,2]2\} &=& \{3 \langle 0,1,2 \rangle 2\} \\ &=&
 +
\{3 \langle 2,2 \rangle 2\} \\ &=&
 +
\{3 \langle 1,2 \rangle 2[2,2]3 \langle 1,2 \rangle 2\} \\ &=&
 +
\{3,3[2]3,3[1,2]3,3[2]3,3[2,2]3,3[2]3,3[1,2]3,3[2]3,3\}
 +
\end{eqnarray*}
 +
 +
== Nested arrays ==
 +
 +
*'''Rule M1'''. If there are only two entries, \(\{a, b\} = a^b\).
 +
*'''Rule M2'''. If \(m < n\), we have \(\{\# [m] 1 [n] \#^*\} = \{\# [n] \#^*\}\). (This also removes ones from the end of an array.)
 +
*'''Rule M3'''. If the second entry is 1, we have \(\{a,1 \#\} = a\).
 +
*'''Rule M4'''. If there is a non-zero entry immediately after batch of unfilled separators:
 +
*:\(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] (c-1) \#\}\)
 +
*'''Rule M5'''. If there is a non-zero entry after batch of unfilled separators and a 1.
 +
*:\(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] \{a,b-1 [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\},c-1 \#\}\)
 +
*'''Rule M6'''. Rules M1-M5 don't apply.
 +
*:\(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
 +
*'''Rule A1'''. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
 +
*'''Rule A2'''. If \(b = 1\), we have \(\textrm` a \langle A \rangle 1 = a \textrm'\).
 +
*'''Rule A3'''. If \([A] < [B]\), \(\textrm` a <\# [A] 1 [B] \#^*> b \textrm' = \textrm` a <\# [B] \#^*> b \textrm'\).
 +
*'''Rule A4'''. If the first entry in the angle brackets is zero, and there exists a non-zero entry after it:
 +
*: \(\textrm` a \langle 0 [x_1 \#_1] 1 [x_2 \#_2] \cdots 1 [x_n \#_n] c \# \rangle b \textrm' = \textrm` a \langle b \langle x_1-1 \#_1 \rangle b [x_1 \#_1] b \langle x_2-1 \#_2 \rangle b [x_2 \#_2] \cdots b \langle x_n-1 \#_n \rangle b [x_n \#_n] c-1 \# \rangle b \textrm'\)
 +
*: \(\textrm` a \langle 0,\underbrace{1,1,\cdots,1,1}_n,c \# \rangle b \textrm' = \textrm` a \langle \underbrace{b,b,b,\cdots,b,b}_{n+1},c-1 \# \rangle b \textrm'\)
 +
*'''Rule A5'''. Otherwise, \(\textrm` a \langle c \# \rangle b \textrm' = \textrm` a \langle c - 1 \# \rangle b [c \#] a \langle c \rangle (b - 1) \textrm'\).
 +
 +
=== Example ===
 +
 +
\begin{eqnarray*} \{3,2[1[2]2]2\} &=& \{3 \langle 0[2]2 \rangle 2\} \\ &=&
 +
\{3 \langle 2 \langle 1 \rangle 2 \rangle 2\} \\ &=&
 +
\{3 \langle 2,2 \langle 2\} \\ &=&
 +
\{3,3[2]3,3[1,2]3,3[2]3,3[2,2]3,3[2]3,3[1,2]3,3[2]3,3\}
 
\end{eqnarray*}
 
\end{eqnarray*}

Revision as of 02:43, 15 April 2017

Bird's array notation is a parallel notation to BEAF.

Linear arrays

  • Rule 1. With one or two entries, we have \(\{a\} = a\), \(\{a,b\} = a^b\).
  • Rule 2. If the last entry is 1, it can be removed: \(\{\#,1\} = \{\#\}\).
  • Rule 3. If the second entry is 1, the value is just the first entry: \(\{a,1 \#\} = a\).
  • Rule 4. If the third entry is 1:
    \(\{a,b,\underbrace{1,1,\cdots,1,1}_n,c \#\} = \{\underbrace{a,a,a,a,\cdots,a}_{n+1},\{a,b-1,\underbrace{1,1,\cdots,1,1}_n,c \#\},c-1 \#\}\)
  • Rule 5. Otherwise:
    \(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)

Limit: \(\{n,n[2]2\}\) has growth rate \(\omega^\omega\)

Example

\begin{eqnarray*} \{3,3,1,2\} &=& \{3,3,\{3,2,1,2\},1\} \\ &=& \{3,3,\{3,3,\{3,1,1,2\},1\}\} \\ &=& \{3,3,\{3,3,3\}\} \\ &=& \{3,3,\{3,\{3,2,3\},2\}\} \\ &=& \{3,3,\{3,\{3,\{3,1,3\},2\},2\}\} \\ &=& \{3,3,\{3,\{3,3,2\},2\}\} \\ &=& \{3,3,\{3,\{3,\{3,2,2\},1\},2\}\} \\ &=& \{3,3,\{3,\{3,\{3,\{3,1,2\},1\}\},2\}\} \\ &=& \{3,3,\{3,\{3,\{3,3\}\},2\}\} \\ &=& \{3,3,\{3,7625597484987,2\}\} \\ &=& 3\uparrow^{3\uparrow\uparrow7625597484987}3 \end{eqnarray*}

Multidimentional arrays

  • Rule M1. If there are only two entries, \(\{a, b\} = a^b\).
  • Rule M2. If \(m < n\), we have \(\{\# [m] 1 [n] \#^*\} = \{\# [n] \#^*\}\). (This also removes ones from the end of an array.)
  • Rule M3. If the second entry is 1, we have \(\{a,1 \#\} = a\).
  • Rule M4. If there is a non-zero entry immediately after batch of unfilled separators:
    \(\{a,b [m_1] 1 [m_2] \cdots 1 [m_x] c \#\} = \{a \langle m_1-1 \rangle b [m_1] a \langle m_2-1 \rangle b [m_2] \cdots a \langle m_x-1 \rangle b [m_x] (c-1) \#\}\)
  • Rule M5. If there is a non-zero entry after batch of unfilled separators and a 1.
    \(\{a,b [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\} = \{a \langle m_1-1 \rangle b [m_1] a \langle m_2-1 \rangle b [m_2] \cdots a \langle m_x-1 \rangle b [m_x] \{a,b-1 [m_1] 1 [m_2] \cdots 1 [m_x] 1,c \#\},c-1 \#\}\)
  • Rule M6. Rules M1-M5 don't apply.
    \(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
  • Rule A1. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
  • Rule A2. If \(b = 1\), we have \(\textrm` a \langle c \rangle 1 = a \textrm'\).
  • Rule A3. Otherwise, \(\textrm` a \langle c \rangle b \textrm' = \textrm` a \langle c - 1 \rangle b [c] a \langle c \rangle (b - 1) \textrm'\).

Limit: \(\{n,n[1,2]2\}\) has growth rate \(\omega^{\omega^\omega}\)

Example

\begin{eqnarray*} \{3,2[3]2\} &=& \{3 \langle 2 \rangle 2[3]1\} \\ &=& \{3 \langle 1 \rangle 2[2]3 \langle 1 \rangle 2\} \\ &=& \{3,3[2]3,3\} \\ &=& \{3,3,3[2]2,3\} \\ &=& \{3,\{3,2,3[2]2,3\},2[2]2,3\} \\ &=& \{3,\{3,3,2[2]2,3\},2[2]2,3\} \\ &=& \{3,\{3,\{3,2,2[2]2,3\}[2]2,3\},2[2]2,3\} \\ &=& \{3,\{3,\{3,3[2]2,3\}[2]2,3\},2[2]2,3\} \\ &=& \{3,\{3,\{3,\{3,\{3,3[2]1,3\}[2]1,3\},2[2]1,3\}[2]2,3\},2[2]2,3\} \end{eqnarray*}

Hyperdimentional arrays

  • Rule M1. If there are only two entries, \(\{a, b\} = a^b\).
  • Rule M2. If \(m < n\), we have \(\{\# [m] 1 [n] \#^*\} = \{\# [n] \#^*\}\). (This also removes ones from the end of an array.)
  • Rule M3. If the second entry is 1, we have \(\{a,1 \#\} = a\).
  • Rule M4. If there is a non-zero entry immediately after batch of unfilled separators:
    \(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] (c-1) \#\}\)
  • Rule M5. If there is a non-zero entry after batch of unfilled separators and a 1.
    \(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] \{a,b-1 [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\},c-1 \#\}\)
  • Rule M6. Rules M1-M5 don't apply.
    \(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
  • Rule A1. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
  • Rule A2. If \(b = 1\), we have \(\textrm` a \langle A \rangle 1 = a \textrm'\).
  • Rule A3. If the first entry in the angle brackets is zero, and there exists a non-zero entry after it:
    \(\textrm` a \langle 0,\underbrace{1,1,\cdots,1,1}_n,c \# \rangle b \textrm' = \textrm` a \langle \underbrace{b,b,b,\cdots,b,b}_{n+1},c-1 \# \rangle b \textrm'\)
  • Rule A4. Otherwise, \(\textrm` a \langle c \# \rangle b \textrm' = \textrm` a \langle c - 1 \# \rangle b [c \#] a \langle c \rangle (b - 1) \textrm'\).

Limit: \(\{n,n[1[2]2]2\}\) has growth rate \(^4 \omega\)

Example

\begin{eqnarray*} \{3,2[1,1,2]2\} &=& \{3 \langle 0,1,2 \rangle 2\} \\ &=& \{3 \langle 2,2 \rangle 2\} \\ &=& \{3 \langle 1,2 \rangle 2[2,2]3 \langle 1,2 \rangle 2\} \\ &=& \{3,3[2]3,3[1,2]3,3[2]3,3[2,2]3,3[2]3,3[1,2]3,3[2]3,3\} \end{eqnarray*}

Nested arrays

  • Rule M1. If there are only two entries, \(\{a, b\} = a^b\).
  • Rule M2. If \(m < n\), we have \(\{\# [m] 1 [n] \#^*\} = \{\# [n] \#^*\}\). (This also removes ones from the end of an array.)
  • Rule M3. If the second entry is 1, we have \(\{a,1 \#\} = a\).
  • Rule M4. If there is a non-zero entry immediately after batch of unfilled separators:
    \(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] (c-1) \#\}\)
  • Rule M5. If there is a non-zero entry after batch of unfilled separators and a 1.
    \(\{a,b [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\} = \{a \langle m_1-1 \#_1 \rangle b [m_1 \#_1] a \langle m_2-1 \#_2 \rangle b [m_2 \#_2] \cdots a \langle m_x-1 \#_x \rangle b [m_x \#_x] \{a,b-1 [m_1 \#_1] 1 [m_2 \#_2] \cdots 1 [m_x \#_x] 1,c \#\},c-1 \#\}\)
  • Rule M6. Rules M1-M5 don't apply.
    \(\{a,b,c \#\} = \{a,\{a,b-1,c \#\},c-1 \#\}\)
  • Rule A1. If \(c = 0\), we have \(\textrm` a \langle 0 \rangle b = a \textrm'\).
  • Rule A2. If \(b = 1\), we have \(\textrm` a \langle A \rangle 1 = a \textrm'\).
  • Rule A3. If \([A] < [B]\), \(\textrm` a <\# [A] 1 [B] \#^*> b \textrm' = \textrm` a <\# [B] \#^*> b \textrm'\).
  • Rule A4. If the first entry in the angle brackets is zero, and there exists a non-zero entry after it:
    \(\textrm` a \langle 0 [x_1 \#_1] 1 [x_2 \#_2] \cdots 1 [x_n \#_n] c \# \rangle b \textrm' = \textrm` a \langle b \langle x_1-1 \#_1 \rangle b [x_1 \#_1] b \langle x_2-1 \#_2 \rangle b [x_2 \#_2] \cdots b \langle x_n-1 \#_n \rangle b [x_n \#_n] c-1 \# \rangle b \textrm'\)
    \(\textrm` a \langle 0,\underbrace{1,1,\cdots,1,1}_n,c \# \rangle b \textrm' = \textrm` a \langle \underbrace{b,b,b,\cdots,b,b}_{n+1},c-1 \# \rangle b \textrm'\)
  • Rule A5. Otherwise, \(\textrm` a \langle c \# \rangle b \textrm' = \textrm` a \langle c - 1 \# \rangle b [c \#] a \langle c \rangle (b - 1) \textrm'\).

Example

\begin{eqnarray*} \{3,2[1[2]2]2\} &=& \{3 \langle 0[2]2 \rangle 2\} \\ &=& \{3 \langle 2 \langle 1 \rangle 2 \rangle 2\} \\ &=& \{3 \langle 2,2 \langle 2\} \\ &=& \{3,3[2]3,3[1,2]3,3[2]3,3[2,2]3,3[2]3,3[1,2]3,3[2]3,3\} \end{eqnarray*}