User blog:Syst3ms/Parallel Funky Notation

In this video, I'll be explaining exactly what I do to collect Watch for Rolling Rocks in 0.5 A presses.

Er, today I'm gonna be presenting my extension to Funky Notation, Parallel Funky Notation.

Definition :
Definition of arrays :

 \(m\) is an array, where \(m\) is any natural number. \(m\) is an entry. \([\#]\) is an array, where \(\#\) is an array. We call # a nested array. \([\#]\) is an entry. \(\#Sm\) is an array, where \(m\) is a natural number, \(S\) is a separator and \(\#\) is an array. \(m\) is an entry. \(\#S[\#']\) is an array, where \(S\) is a separator and \(\#\) and \(\#'\) are arrays. \(#'\) is a nested array. \([\#']\) is an entry. \(\#S\{\#'\}\) is an array, where \(S\) is a separator and \(\#\) and \(\#'\) are arrays. \(\{\#'\}\) is an entry. 

Definition of separators :

 \(\{m\}\) is a separator, where \(m\) is any natural number. \(m\) is an entry. \(\{[\#]\}\) is a separator, where \(\#\) is an array. We call # a nested array. \([\#]\) is an entry.</li> \(\{\#Sm\}\) is a separator, where \(m\) is a natural number, \(S\) is a separator and \(\#\) is an array. \(m\) is an entry.</li> \(\{\#S[\#']\}\) is a separator, where \(S\) is a separator and \(\#\) and \(\#'\) are arrays. \(#'\) is a nested array. \([\#']\) is an entry.</li> \(\{\#S\{\#'\}\}\) is a separator, where \(S\) is a separator and \(\#\) and \(\#'\) are arrays. \(\{\#'\}\) is an entry.</li> </ul> Additional functions :
 * For some given array A and natural number n, let \((A)@n = N_n\), where \(N_{x+1} = \{N_x\}\) and \(N_0 = A\)

Note :

 The comma is a shorthand for \(\{0\}\)</li> </ul>

Rules :

<ol> Base rule : \(a[0] = a+1\)</li> Trailing rule : \(a[\#\enspace A\enspace (0)@n] = a[\#]\) and \(\{\#\enspace A\enspace (0)@n\} = \{\#\}\). n is a natural number.</li> Sandwich rule : \(a[\#\enspace A\enspace (0)@n\enspace B\enspace \#'] = a[\#\enspace B\enspace \#']\) and \(\{\#\enspace A\enspace (0)@n\enspace B\enspace \#'\} = \{\#\enspace B\enspace \#'\}\) iff \(L(A)<L(B)\). A and B are separators, and n is a natural number.</li> </ol>

Process :

 Let the variables \(\text{ad}\) and \(\text{rad}\) = 1, and the variables \(\text{sd}\), \(\text{rsd}\), \(\text{lbd}\) and \(\text{pbd}\) = 0</li> Let \(A_0\) be the main array</li> \(a\) is always the base, and \(b\) is always the current entry</li> </ul> <ol> Set \(\text{pbd} = \min(\text{pbd},\text{lbd})</li> If \(b = 0\), set \(\text{rad},\text{rsd}=0\) and move to the next entry. Go back to step 1.</li> If \(b = [0]\), replace it with \(a\). The process ends.</li> If \(b\) is a pair of square brackets with a nested array that is not "\(0\)" inside it, let \(A_\text{ad}\) be the said nested array, increment both \(\text{ad}\) and \(\text{rad}\), jump inside it at its first entry, and go back to step 1.</li> <li>If \(b\) is a pair of curly brackets of the form \((A)@n\) for some array A and number n : <ol> <li>If \(\text{sd} = 0\), then the expression is invalid. The process ends.</li> <li>If \(A = 0\), set \(\text{lbd} = n\) set \(\text{rad},\text{rsd}=0\) and move to the next entry. Go back to step 1.</li> <li style="list-style-type: disc;">If all entries of \(A_\text{ad}\) are of the form \((\#)@d_a\) for any array \(\#\), then let \(m\) such that \(\not\exists n<m(d_n>d_m)\)</li> <li>If \(m > \text{pbd}\) :</li> <li>Find the smallest strings X, Y, P, Q and number \(c\) such that \(S_{\text{sd}-\text{rsd}} = ``X\enspace(P\enspace c\enspace Q)@m\enspaceY``\)</li> <li>Replace \(S_{\text{sd}-\text{rsd}}\) by \(\{N_a\}\), where \(N_{n+1} = ``X\enspace(0\{S_n\}1,\enspace(\enspace\max(c-1,0)\enspace Q)@m)@(m-1)\enspace Y``\) and \(N_0 = ``0``\)</li> <li>Else, \(m = \text{pbd}\) :</li> <li>Find the smallest strings X, Y, P, Q, R, S and numbers \(c\) and \(d\) such that \(S_{\text{sd}-\text{rsd}} = ``X\enspace(0)@\text{psd}\enspace\{P\enspace c\enspace Q\}\enspace(R\enspace d\enspaceS)@\text{psd}\enspace Y``\), where \((R\enspace d\enspaceS)@\text{psd}\) is the current entry.</li> <li>If \(“\{P\enspace c\enspace Q\}”\) is the comma (P and Q are empty and \(c=0\)) :</li> <li>Replace \(S_{\text{sd}-\text{rsd}}\) by \(\{N_a\}\), where \(N_{n+1} =``X\enspace(N_n)@\text{psd}\enspace(R\enspace d-1\enspace S)@\text{psd}\enspace Y``\) and \(N_0 = ``1``\)</li> <li>If \(c>0\) and P contains no numbers: <ul> <li style="list-style-type: disc;">Replace \(A_{\text{ad}-\text{rad}-1}\) with \(``\{X\enspace N_a\}``\), where \(N_{n+1} = ``@\text{psd}\enspace\{P\enspace c-1\enspace Q\}N_n``\) and \(N_0 = ``1\{P\enspace c\enspace Q\}\enspace (R\enspace b-1\enspace S)@\text{psd}\enspace Y``\)</li> <li style="list-style-type: disc;">The process ends.</li></ul></li> <li>Otherwise, replace \(“\{P\enspace c\enspace Q\}\enspace(R\enspace d\enspaceS)@\text{psd}”\) with \(“\{P\enspace c\enspace Q\}1\{P\enspace c\enspace Q\}\enspace(R\enspace d-1 \enspaceS)@\text{psd}”\). Let \(S_\text{sd}\) be the separator, increment \(\text{sd}\) and \(\text{rsd}\), and jump inside it at its first entry.</li></ol></li> <li>If \(b > 0\) : <ol> <li>If \(\text{ad}=\text{rad}\) : <ul> <li style="list-style-type: disc;">Let \(f(n) = n[B]\) where \(B\) is the same as \(A_0\) except that \(b\) is decremented.</li> <li style="list-style-type: disc;">Replace the entire expression with \(f^a(a)\)</li> <li style="list-style-type: disc;">The process ends.</li></ul></li> <li style="list-style-type: disc;">Find the smallest strings X, Y, P, Q and number \(c\) such that \(A_{\text{ad}-\text{rad}-1} = ``X\enspace 0\enspace \{P\enspace c\enspace Q\}\enspace b\enspace Y``\)</li> <li>If \(“\{P\enspace c\enspace Q\}”\) is the comma (P and Q are empty and \(c=0\)) : <ul> <li style="list-style-type: disc;">Replace \(A_{\text{ad}-\text{rad}-1}\) with \(``X\enspace N_a\enspace ,b-1\enspace Y``\), where \(N_{n+1} = “[X\enspace N_n\enspace ,b-1\enspace Y]'\) and \(N_0 = ``0``\)</li> <li style="list-style-type: disc;">The process ends.</li></ul></li> <li>If \(c>0\) and P contains no numbers: <ul> <li style="list-style-type: disc;">Replace \(A_{\text{ad}-\text{rad}-1}\) with \(``X\enspace N_a``\), where \(N_{n+1} = ``0\{P\enspace c-1\enspace Q\}N_n``\) and \(N_0 = ``1\{P\enspace c\enspace Q\}\enspace b-1\enspace Y``\)</li> <li style="list-style-type: disc;">The process ends.</li></ul></li> <li>Otherwise, replace \(“\{P\enspace c\enspace Q\}b”\) with \(“\{P\enspace c\enspace Q\}1\{P\enspace c\enspace Q\}b-1”\). Let \(S_\text{sd}\) be the separator, increment \(\text{sd}\) and \(\text{rsd}\), and jump inside it at its first entry.</li></ol></li> </ol> Separator and array comparison process (totally not ripped from SAN) :
 * For any two natural numbers n and m, L(n) > L(m) iff n > m and L(n) = L(m) iff n = m
 * If \(A = (A')@n\) and \(B = (B')@m\) for n>0, then L(A) > L(B) if n > m, otherwise let A=A' and B=B'.
 * If A and B are separators, replace occurrences of \(\langle\ldots\rangle\) with \(\{\ldots\}\); if A and B are arrays, ignore them.
 * 1) Let \(A = \langle a_1A_1a_2A_2\cdots a_{k-1}A_{k-1}a_k\rangle\) and \(B = \langle b_1B_1b_2B_2\cdots b_{l-1}B_{l-1}b_l\rangle\)
 * 2) If \(k = 1\) and \(l > 1\), then \(L(A) < L(B)\); if \(k > 1\) and \(l = 1\), then \(L(A) > L(B)\); if \(k = l = 1\), follow steps 3; if \(k > 1\) and \(l > 1\), follow steps 4 to 9
 * 3) If \(L(a_1) < L(b_1)\), then \(L(A) < L(B)\); if \(L(a_1) > L(b_1)\), then \(L(A) > L(B)\); if \(L(a_1) = L(b_1)\), then \(L(A) = L(B)\)
 * 4) Let \(M(A)=\{i\in\{1,2,\cdots,k-1\}|\forall j\in\{1,2,\cdots,k-1\}(L(A_i)\ge L(A_j))\}\), and \(M(B)=\{i\in\{1,2,\cdots,l-1\}|\forall j\in\{1,2,\cdots,l-1\}(L(B_i)\ge L(B_j))\}\).
 * 5) If \(L(A_{\text{maxM}(A)}) < L(B_{\text{maxM}(B)})\), then \(L(A) < L(B)\); if \(L(A_{\text{maxM}(A)}) > L(B_{\text{maxM}(B)})\), then \(L(A) > L(B)\); or else –
 * 6) If \(|M(A)| < |M(B)|\), then \(L(A) < L(B)\); if \(|M(A)| > |M(B)|\), then \(L(A) > L(B)\); or else –
 * 7) Let \(A = \langle\#_1\enspace A_{\text{maxM}(A)}\enspace \#_2\rangle\) and \(B = \langle\#_3\enspace B_{\text{maxM}(B)}\enspace \#_4\rangle\)
 * 8) If \(L(\langle\#_2\rangle) < L(\langle\#_4\rangle)\), then\(L(A) < L(B)\); if \(L(\langle\#_2\rangle) > L(\langle\#_4\rangle)\), then \(L(A) > L(B)\); or else –
 * 9) If \(L(\langle\#_1\rangle) < L(\langle\#_3\rangle)\), then \(L(A) > L(B)\); if \(L(\langle\#_1\rangle) > L(\langle\#_3\rangle)\), then \(L(A) > L(B)\); if \(L(\langle\#_1\rangle) = L(\langle\#_3\rangle)\), then \(L(A) = L(B)\)

Explanation and examples
[WIP]

Table of ordinals
[WIP]