Secondary dropping array notation

Prev: Primary dropping array notation    Next: Dropping array notation

Secondary dropping array notation (sDAN) is the sixth part of my array notation. In this part, first I introduce some 1-separators on the double comma, then 2-separators on 2-separators, finally the 3-separator.

More 2-separators

Let `,, (a combined separator, a grave accent followed by double comma) be the 1-separator of { ____ ,,}. We say the `,, is the 1-separator on the double comma. How it works in { ____ ,,} is similar to how the grave accent works in separators with lower level than the grave accent.

Then the `,, is a shorthand for {1`,,}. We can also have {2`,,}, {1,,2`,,}, {1`,,2`,,}, {1{1`,,2`,,}2`,,}, etc.

Let ` `,, be the 1-separator of { ____ `,,}, and it’s a shorthand for {1` `,,}. Let ` ` `,, be the 1-separator of { ____ ` `,,}, and it’s a shorthand for {1` ` `,,}. And so on. How they works are similar to how the multiple grave accents work in EAN.

Let ,,` (a combined separator, a comma followed by a grave accent) be the next 2-separator – it’s the 2-separator on the double comma. How it works in { ____ ,,} is similar to how the double comma works in separators with lower level than the double comma. The `,, is a shorthand for {1 ,,` 2,,}, the ` `,, is a shorthand for {1 ,,` 3,,}, and the ` ` `,, is a shorthand for {1 ,,` 4,,}.

We can even define arrays on the ,,` – it’s { ____ ,,`}, and 1-separators on ,,`. Then we can define the next 2-separator – it’s the 2-separator on the ,,` – it’s ,,` ` with a comma and 2 grave accents.

To simplify it, we use another notation: {A,,`} is written as {A,,2}, and {A,,` `} is written as {A,,3} now. And the {A,,1} = {A,,}.

Then we define CA-value (means “comma and grave accents”) for separators. Separators without comma at the left-superscript position of the rbrace have CA-value 0, and {A,,m} has CA-value m. Note that the double comma is the least separator with CA-value = 1. A separator with higher CA-value has higher level than a separator with lower CA-value. If two separators have the same CA-value, then their level comparison is done in usual way.

Process

Note that case B1, B2 and B4 are terminal but case A and B3 are not. And note that b, n, m, M, Bt and K are parts of the original array but t, u, v, i, Si, At, X, Y, P and Q are not. Before we start, let A0 be the whole array. First start from the 3rd entry.

  • Case A: If the entry is 1, then you jump to the next entry.
  • Case B: If the entry n is not 1, look to your left:
    • Case B1: If the comma is immediately before you, then
      1. Change the “1,n” into “b,n-1” where n is this non-1 entry and the b is the iterator.
      2. Change all the entries at base layer before them into the base.
      3. The process ends.
    • Case B2: If M = {1,,m} is immediately before you, then
      1. Let t be such that the M is at layer t. And let separator At = Bt = M, and B0 be the whole array now.
      2. Repeat this:
        1. Subtract t by 1.
        2. Let separator Bt be such that it’s at layer t, and the M is inside it.
        3. If t = 1, then break the repeating, or else continue repeating.
      3. Find the maximum of u such that lv(Au) < lv(M).
      4. If Au has CA-value < m-1, then
        1. Let string P and Q be such that Bu = “P Bu+1 Q”.
        2. Change Bu into “P {1 Au+1 2,,m-1} Q”.
        3. The process ends.
      5. Find the maximum of t such that lv(At) < lv(Au).
      6. Let string X and Y be such that Bu = “X M n Y”.
      7. If lv(At) < lv(“X M n-1 Y”), then
        1. Find the minimum of v such that v > t and lv(Av) < lv(M).
        2. Let string P and Q be such that Bt = “P Bv Q”.
        3. Change Bt into “P X Av 2 M n-1 Y Q”.
        4. The process ends.
      8. If lv(At) ≥ lv(“X M n-1 Y”), then
        1. Let string P and Q be such that Bt = “P Bu Q”.
        2. Change Bt into Sb, where b is the iterator, S1 is comma, and Si+1 = “P Si Q”.
        3. The process ends.
    • Case B3: If a separator K is immediately before you, and it doesn’t fit case B1 or B2, then
      1. Change the “K n” into “K 2 K n-1”.
      2. Set separator At = K, here K is at layer t.
      3. Jump to the first entry of the former K.
    • Case B4: If an lbrace is immediately before you, then
      1. Change separator {n #} into string Sb, where b is the iterator, S1 = “{n-1 #}” and Si+1 = “Si 1 {n-1 #}”.
      2. The process ends.

Explanation

Look at case B2. Step 3 and 4 look familiar – in fact, the step 3 comes from the searching-out step in mEAN, and the step 4 comes from the adding rule in mEAN. M is a 2-separator, and by these 2 step, we get a 1-separator Au. We say that a 2-separator M drops down to a 1-separator Au.

Case B2 is terminal, and what’s more, there’re 3 exits of it – step 4, 7 and 8.

Up to a 3-separator

Let the triple comma (,,,) be a 3-separator – it’s a very high leveled separator. {1,,,1} is comma and {A,,,1} = {A} by rule 2b, {1,,,2} is the double comma, {A,,,2} = {A,,}, {A,,,3} = {A,,2}, {A,,,4} = {A,,3}, and so on. So {1,,,m}′s are the 2-separators above, with CA-value m-1.

And we have more 2-separators such as {1,,,1,,,2}, {1,,,1,,,3}, {1,,,1,,,1,,,2}, etc. If we meet a triple comma in the process, first find the separator that the triple comma is inside – that’s a 2-separator. Then the 2-separator drops down to a 1-separator. Then the 1-separator drops down and then expands.

Process

Note that case B1, B2 and B4 are terminal but case A and B3 are not. And note that b, n, Bt and K are parts of the original array but d, t, u, v, i, Si, At, X, Y, P and Q are not. Before we start, let A0 be the whole array. First start from the 3rd entry.

  • Case A: If the entry is 1, then you jump to the next entry.
  • Case B: If the entry n is not 1, look to your left:
    • Case B1: If the comma is immediately before you, then
      1. Change the “1,n” into “b,n-1” where n is this non-1 entry and the b is the iterator.
      2. Change all the entries at base layer before them into the base.
      3. The process ends.
    • Case B2: If the triple comma is immediately before you, then
      1. Let d and t be such that the triple comma is at layer d = t. And let B0 be the whole array now.
      2. Repeat this:
        1. Subtract t by 1.
        2. Let separator Bt be such that it’s at layer t, and the M is inside it.
        3. If t = 1, then break the repeating, or else continue repeating.
      3. Find the maximum of u such that lv(Au) < lv(Ad-1).
      4. Let string X and Y be such that Bd-1 = “X ,,, n Y”.
      5. If lv(Au) < lv(“X ,,, n-1 Y”), then
        1. Let string P and Q be such that Bu = “P Bu+1 Q”.
        2. Change Bu into “P X Au+1 2 ,,, n-1 Y Q”.
        3. The process ends.
      6. Find the maximum of t such that lv(At) < lv(Au).
      7. Let string X and Y be such that Bu = “X Bd-1 2 Y”.
      8. If lv(At) < lv(“X Y”), then
        1. Find the minimum of v such that v > t and lv(Av) < lv(Ad-1).
        2. Let string P and Q be such that Bt = “P Bv Q”.
        3. Change Bt into “P X Av 2 Y Q”.
        4. The process ends.
      9. If lv(At) ≥ lv(“X Y”), then
        1. Let string P and Q be such that Bt = “P Bu Q”.
        2. Change Bt into Sb, where b is the iterator, S1 is comma, and Si+1 = “P Si Q”.
        3. The process ends.
    • Case B3: If a separator K is immediately before you, and it doesn’t fit case B1 or B2, then
      1. Change the “K n” into “K 2 K n-1”.
      2. Set separator At = K, here K is at layer t.
      3. Jump to the first entry of the former K.
    • Case B4: If an lbrace is immediately before you, then
      1. Change separator {n #} into string Sb, where b is the iterator, S1 = “{n-1 #}” and Si+1 = “Si 1 {n-1 #}”.
      2. The process ends.

Level comparison

First, all arrays have the lowest and the same level. Then, the triple comma has the highest level. And note that the same separators have the same level. To compare levels of other separators A and B, we follow these steps.

  1. Apply rule 2 to A and B until rule 2 cannot apply any more.
  2. Let A = {a1A1a2A2…ak-1Ak-1ak} and B = {b1B1b2B2…bl-1Bl-1bl}
  3. If k = 1 and l > 1, then lv(A) < lv(B); if k > 1 and l = 1, then lv(A) > lv(B); if k = l = 1, follow step 4; if k > 1 and l > 1, follow step 5 ~ 10
  4. If a1 < b1, then lv(A) < lv(B); if a1 > b1, then lv(A) > lv(B); if a1 = b1, then lv(A) = lv(B)
  5. Let {M(A)=\{i\in\{1,2,\cdots,k-1\}|\forall j\in\{1,2,\cdots,k-1\}(lv(A_i)\ge lv(A_j))\}}, and {M(B)=\{i\in\{1,2,\cdots,l-1\}|\forall j\in\{1,2,\cdots,l-1\}(lv(B_i)\ge lv(B_j))\}}.
  6. If lv(AmaxM(A)) < lv(BmaxM(B)), then lv(A) < lv(B); if lv(AmaxM(A)) > lv(BmaxM(B)), then lv(A) > lv(B); or else –
  7. If |M(A)| < |M(B)|, then lv(A) < lv(B); if |M(A)| > |M(B)|, then lv(A) > lv(B); or else –
  8. Let A = {#1 AmaxM(A) #2} and B = {#3 BmaxM(B) #4}
  9. If lv({#2}) < lv({#4}), then lv(A) < lv(B); if lv({#2}) > lv({#4}), then lv(A) > lv(B); or else –
  10. If lv({#1}) < lv({#3}), then lv(A) < lv(B); if lv({#1}) > lv({#3}), then lv(A) > lv(B); if lv({#1}) = lv({#3}), then lv(A) = lv(B)

Explanation

Note that Ad-1 and Bd-1 are the same separator.

The triple comma is the 3-separator. To get a 2-separator is simple, just look 1 layer out, it’s Ad-1. To get a 1-separator we need to follow step 3 ~ 5 in case B2, so the 2-separator Ad-1  drops down to Au. To get what the 1-separator needs to expand (0-separator) we need to follow step 6 ~ 8 in case B2, so the 1-separator Au drops down to At. And the step 9 is the expansion. That’s why this notation is called dropping array notation.

Advertisements

15 thoughts on “Secondary dropping array notation

    • {1,,,1{1,,,1,,,2}2} is valid. Here’s how s(n,n{1,,,1{1,,,1,,,2}2}2) expands.
      A_0 = s(n,n{1,,,1{1,,,1,,,2}2}2)
      A_1 = {1,,,1{1,,,1,,,2}2}
      A_2 = {1,,,1,,,2}
      A_3 = ,,,

      And it’s case B2.
      step 1: d = 3, A_d = ,,, and A_(d-1) = {1,,,1,,,2}
      step 3: u = 1, A_u = {1,,,1{1,,,1,,,2}2}
      doesn’t meet step 5
      step 6: t = 0, A_t = s(n,n{1,,,1{1,,,1,,,2}2}2)
      meet step 8
      step 8a: v = 1, A_v = {1,,,1{1,,,1,,,2}2}

      So s(n,n{1,,,1{1,,,1,,,2}2}2) = s(n,n{1,,,1{1,,,1{1,,,1,,,2}2}2}2).

      Next is process on s(n,n{1,,,1{1,,,1{1,,,1,,,2}2}2}2).
      A_0 = s(n,n{1,,,1{1,,,1{1,,,1,,,2}2}2}2)
      A_1 = {1,,,1{1,,,1{1,,,1,,,2}2}2}
      A_2 = {1,,,1{1,,,1,,,2}2}
      A_3 = {1,,,1,,,2}
      A_4 = ,,,

      And it’s case B2.
      step 1: d = 4, A_d = ,,, and A_(d-1) = {1,,,1,,,2}
      step 3: u = 2, A_u = {1,,,1{1,,,1,,,2}2}
      doesn’t meet step 5
      step 6: t = 1, A_t = {1,,,1{1,,,1{1,,,1,,,2}2}2}
      doesn’t meet step 8 (meet step 9)

      So s(n,n{1,,,1{1,,,1{1,,,1,,,2}2}2}2) = s(n,n{1,,,1{1,,,1…{1,,,1{1,,,1,2}2}…2}2}2) = s(n,n{1,,,1{1,,,1…{1,,,1{1,,,n}2}…2}2}2).

      And generally, when we meet {1,,,1{1,,,1,,,2}2}, it’s always case B2, A_(d-1) is always {1,,,1,,,2}, A_u is always {1,,,1{1,,,1,,,2}2}, and we always skip step 5.

      Like

  1. Aarex Tiaokhiao says:

    Step 5 in Case B2 is wrong. It should changes with triple comma not double comma in B part.

    Like

  2. Aarex Tiaokhiao says:

    sDAN is stronger I thought. Further parts and this part will be reanalyzed by me.

    Let ,, = {1,,,2} will be 2-separator of 1{_}2.
    ,,’ = {1,,,3} will be 2-separator of 1{_^,,}2 = 1{_,,,2}2
    ,,” = {1,,,4} will be 2-separator of 1{_^,,’}2 = 1{_,,,3}2
    Then {1,,,1,,,2} will be 2-separator of 1{1,,,_}2

    Like

  3. Samuel Fields says:

    Hypcos how would you describe Sbiis Saibian’s number Blasphemorgulus (E100{#,#,1,2}100) with your Strong Array Notation?

    Like

.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s