Гугология Вики
Advertisement

Нотация птичьего массива (англ. Bird's array notation) — гугологическая нотация, созданная Крисом Бердом.[1] Это интерпретация расширенной нотации массива Джонатана Бауэрса и она похожа на на BEAF как по своей истории, так и по определению.

"Простые" массивы[]

Линейные и многомерные массивы[]

Для линейных и многомерных массивов BAN совпадает с BEAF.

  • Правило 1. С одной или двумя записями мы имеем , (кстати, следует из , так как (обратное правилу 2)).
  • Правило 2. Если последняя запись равна 1, её можно удалить: (хэштег указывает на неизменный остаток массива).
  • Правило 3. Если вторая запись равна 1, значение равно первой записи: .
  • Правило 4. Если третья запись равна 1:
  • Правило 5. В противном случае:

При работе с многомерными массивами Берд использует , что эквивалентно Бауэрса. Эти строки записываются в кавычках и имеют свои собственные правила:

  • Правило A1. Если , мы имеем .
  • Правило A2. Если , мы имеем .
  • Правило A3. В противном случае, .

Основные правила:

  • Правило M1. Если записей всего две, .
  • Правило M2. Если , мы имеем . Также, .
  • Правило M3. Если вторая запись равна 1, мы имеем .
  • Правило M4. Если и , мы имеем
  • Правило M5. Если ,
  • Правило M6. Правила M1-M5 не применяются.

Для примера,

Берд использует в качестве разделителя размерных массивов; в нотациях Бауэрса он эквивалентен разделителю . Это решает небольшую проблему в BEAF, где по умолчанию в массиве используются единицы, а в разделителях — нули. Это означает, что если в BEAF выражение равно {a,b(n)c}, то в нотации массива Берда оно равно {a,b[n+1]c}.

Например: если выражение BEAF равно {10,10(2)2}, то мы говорим, что оно равно {10,10[3]2} в BAN.

В быстрорастущей иерархии функции, которые диагонализируются по линейным и многомерным массивам, сопоставимы с и соответственно, используя иерархию Вайнера.

Гипер-размерные и вложенные массивы[]

Затем разделители скобок становятся массивами (например, ). Правила от M1 до M6 остаются неизменными, за исключением того, что мы заменяем на .

Правила угловых скобок требуют некоторых изменений. Создаётся новое правило A3:

  • Правило A3. Если первая запись в угловых скобках равна нулю и после неё существует ненулевая запись:

Это правило визуально похоже на Правило M4.

Следующий шаг — разрешить строки внутри массивов и тем самым определить вложенную нотацию массива. Правило A3 становится A4, а A4 становится A5. Затем мы добавляем новое A3 и обобщаем A4:

  • Правило A3. Если , то .
  • Правило A4. Если первая запись в угловых скобках равна нулю и после неё существует ненулевая запись:

An и B — массивы и Ai-1 идентичен Ai, за исключением того, что первая запись уменьшается на единицу.

Алгоритм ранжирования двух разделителей[]

Для правил A3 и M2 важно определить, какой разделитель имеет более высокий уровень. Во-первых, пусть количество вложенных друг в друга массивов является уровнем вложенности массива. Можно назвать количество этих слоёв Lev(A). Например, если A = , тогда Lev(A) = 3, так как [2] вложено в [1[2]2], который вложен в [1[1[2]2]2], который вложен в основной массив. Неформально говоря, Lev(A) — число, про которое нам нужно сказать, что оно "вложенное", чтобы добраться до основного массива. Другая функция, Num(H,A), определяется как количество разделителей [H] в массиве A, если например A = , тогда Num(2,A) = 3.

Предположим, мы хотим определить, какой разделитель имеет более высокий уровень: [A] или [B]. Формально это можно описать следующим образом:

  1. Для дальнейших целей пусть [A1]=[A], [A2]=[A1] и [B1]=[B], [B2]=[B1].
  2. Если Lev(A)>Lev(B), то мы заключаем, что [A]>[B], если Lev(A)<Lev(B), то [A]<[B]. Если Lev(A)=Lev(B)>0, то переходим к шагу 3, в противном случае переходим к шагу 6.
  3. Пусть [A*] и [B*] — разделители самого высокого ранга в массивах A2 и B2 соответственно. Если [A*]>[B*], то [A]>[B], если [A*]<[B*], то [A]<[B], в противном случае возьмём [H]=[A*]=[B*] и переходим к шагу 4.
  4. Если Num(H,A2)>Num(H,B2), то [A]>[B], если Num(A)>Num(B), если Num(H,A2)<Num(H,B2), то [A]<[B], в противном случае переходим к шагу 5.
  5. В строках A2 и B2 удалите разделитель [H] и удалите все записи перед ним.
  6. Согласно всем вышеизложенным правилам, строки A2 и B2 должны иметь форму [a] и [b], где a и b — одиночные числа. Итак, если a<b, то [A]<[B], если a>b, то [A]>[B], иначе переходим к шагу 7.
  7. В строках A1 и B1 удалите самую последнюю запись и разделитель перед ней. Если A1 и B1 пусты, то делаем вывод, что [A]=[B], в противном случае возвращаемся к шагу 2.

Гипер-вложенные массивы[]

Массивы со бэкслэшем[]

Чтобы выйти за рамки вложенной нотации массива, Берд определил специальный разделитель [1 \ c] следующим образом:

(где b повторяется b раз от центра вправо).

  • (если A — произвольный массив)

Эта запись позволяет нам создавать массивы, предшествующие бэкслэшу, например [1 [2] 2 \ 2] или [1 [1 \ 2] 2 \ 2]. Размещение бэкслэша на базовом уровне (без хотя бы одной пары квадратных скобок), например {3, 3 \ 2}, является неправильным.

Берд расширил нотацию так, что она может обрабатывать не только массивы с одним бэкслэшем, но также несколькими бэкслэшами и даже массивами бэкслэшей. Он использовал [A]\ для обозначения массива A вокруг слэша. Существует новый набор из трёх правил, которые обрабатывают массивы бэкслэшей:

  • Правило B1. Уровень бэкслэша равен 0 или 1:
    • (где a повторяется b раз)
  • Правило B2. Первая запись угловых скобок слэша не равна 0:
    • (где повторяется b раз)
  • Правило B3. Первая ненулевая запись предшествует одиночному бэкслэшу:
  • Правило B4. В противном случае:

Пределом введённых до сих пор бэкслэшей является ординал Фефермана-Шютте.

Вложенные гипер-вложенные массивы[]

2-гиперразделителя[]

На данный момент нам нужен разделитель, который будет мощнее любого уровня вложенности вокруг массивов с бэкслэшем. В конце своего документа "За пределами вложенных массивов I" Берд предложил использовать бэкслэш следующим образом:

(где b повторяется b раз от центра направо это приводит к b-2 добавленным бэкслэшам)

Далее Берд отметил, что разделитель [A]\ (бэкслэш-массив A) можно переписать как , что позволяет нам переписать бэкслэш как . Однако, будет полезнее (для дальнейших целей) определить следующим образом:

(где b повторяется b+1 раз от центра направо, b-1 добавленных бэкслэшей).

Затем мы можем построить массивы вокруг тем же способом, что и с бэкслэшем . Обратите внимание, что бэкслэш — разделитель .

Таким образом, мы можем создавать вложенные массивы с присоединённым к ним , и пределом всего этого будет . Не так уж и сложно увидеть общую схему и определить разделитель :

(где b повторяется b+1 раз от центра направо, b-1 появлений ).

В общем случае нам нужно определить набор правил, который позволяет нам обрабатывать . Нам не нужно переписывать основные правила, поскольку они будут такими же, начиная с вложенной нотации массива. Изменятся только правила угловых скобок.

  • Правило A1. Число внутри угловых скобок равно 0:
  • Правило A2. b = 1:
  • Правило A3. [А] < [B]:
  • Правило A4. Первая запись — 0, сразу после обычного разделителя (не в форме с n > 1):
  • Правило A5. Первая запись 0, сразу после бэкслэша:

  • (n>1)
  • Правило A6. Первая запись равна 0, сразу после (n > 2):

  • (n>1)
  • Правило A7. Правила A1-A6 не применяются:
    .

Эта нотация соответствует , малому ординалу Веблена.

Массивы 2-гиперразделителей[]

Мы определяем .

  • Правило A1. Базовое правило:
  • Правило A2. b = 1:
  • Правило A3. Удалите конечные 1 и нижние разделители:
  • (когда [A] < [B])

Вложенная гипер-вложенная нотация массива[]

Правила угловых скобок A2 и A3 теперь читаются следующим образом:

Правило A2 (только 1 запись 0 или 1 перед гиперразделителем 2 или гиперразделителем более высокого порядка):

‘a ‹0 #› b’ = ‘a’, ‘a ‹1 #› b’ = ‘a ​​[1 #] a [1 #] ... [1 #] a’ (с b копиями a), ‘a ‹1 ¬ 2› b’ = ‘a ​​\ a \ ... \ a’ (с b копиями a),

‘a ‹1 ♦ 2› b’ = ‘a ​​¬ a ¬ ... ¬ a’ (с b копиями a),

где # начинается с гиперразделителя 2 или более высокого порядка (¬ без слоёв квадратных скобок или ♦ менее чем с 2 слоями квадратных скобок).

Правило A3 (последняя запись в любом одномерном или многомерном пространстве массива равна 1):

‘a ‹# [A] 1› b’ = ‘a ​​‹#› b’.

Когда [A] является m-гиперразделителем, [B] является n-гиперразделителем и m < n, или m = n и уровень [A] меньше уровня [B],

‘a ‹# [A] 1 [B] #*› b’ = ‘a ​​‹# [B] #*› b’. Удалите конечные единицы.

Правила A5a и A5c изменяются следующим образом:

Правило A5a ([Ai,pi] = [1 [Bi,1♦2] 1 [Bi,2♦2] ... 1 [Bi,qi♦2] 1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], где pi+1 ≥ 1, qi ≥ 1):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Ti› b [Ai,pi] ci-1 #i’,

Ti = 'б ‹Bi,1’♦2› b [Bi,1♦2] b ‹Bi,2’♦2› b [Bi,2♦2] ... b ‹Bi,qi’♦2› b [Bi,qi♦2] Si+1’.

Увеличьте i на 1 и повторите правила A5a-d.

Правило A5c (Правила A5a-b не применяются, [Ai,pi] = [1 [Bi,1♦2] 1 [Bi,2♦2] ... 1 [Bi,qi-1♦2] 1 ¬ di #*i], где qi ≥ 1):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rb› b [Ai,pi] ci-1 #i’,

Rn = ‘b ‹Bi,1’♦2› b [Bi,1♦2] b ‹Bi,2’♦2› b [Bi,2♦2] ... b ‹Bi,qi-1’♦2› b [Bi,qi-1♦2] b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1› b [Ai,pi] ci-1 #i ¬ di-1 #*i’ (n > 1), R1 = ‘0’.

Старое правило A5d становится правилом A5e (правила A5a-d не применяются), и новое правило A5d создается следующим образом:

Правило A5d (правила A5a-c не применяются, [Ai,pi] = [1 [Bi,1♦2] 1 [Bi,2♦2] ... 1 [Bi,qi♦2] di #*i], где qi ≥ 1 и [Bi,qi♦2] выше [1♦2] или ¬ по уровню):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹T› b [Ai,pi] ci-1 #i’,

T = ‘b ‹Bi,1’♦2› b [Bi,1♦2] b ‹Bi,2’♦2› b [Bi,2♦2] ... b ‹Bi,qi’♦2› b [Bi,qi♦2] di-1 #*i’.

Новое правило A5d необходимо из-за того, что если бы применялось старое правило A5d (теперь A5e), то строка T стала бы Ai,pi’ = ‘0 [Bi,1♦2] 1 [Bi,2♦2] ... 1 [Bi,qi♦2] di #*i’, что означает, что ‘b ‹T› b’ = ‘b ‹ 0 [Bi,1♦2] 1 [Bi,2♦2] ... 1 [Bi,qi♦2] di #*i › b’ = ‘b’, согласно пересмотренному правилу A2, поскольку [Bi,1♦2] является 2-гиперразделителем (начало строки #0).

Возьмём простой пример N = {a, b [1 [1 [2♦2] 2] 2] 2} = {a ‹0 [1 [2♦2] 2] 2› b}, где c1 = 2, d1 = 2, p1 = 1, q1 = 1, все #-строки пустые, [A1,1] = [1 [2♦2] 2], [B1,1♦2] = [2♦2].

Согласно старому правилу A5d, N = {a ‹S› b} = {a ‹b ‹T› b› b} = {a ‹b› b}, тогда как согласно новому правилу A5d, N = {a ‹S› b} = {a ‹b ‹T› b› b} = {a ‹b ‹b ‹B1,1’♦2› b› b› b} = {a ‹b ‹b ‹1♦2› b› b› b}, и, согласно пересмотренному правилу A2, N = {a ‹b ‹ b ¬ b ¬ ... ¬ b › b› b} (с b b внутри внутреннего угла скобки), что изначально определено.

Если [A1,p1] — бэкслэш (\), выполняется правило A5b.

Если [A1,p1] — любой другой разделитель вложенности, обрабатывается правило A5c. Правило A5c теперь имеет три подправила. (Индексы i удалены.)

Правило A5c1 ([Ap] = [1 [B1] 1 [B2] ... 1 [Bq-1] 1 ¬ d #*], где q ≥ 1, d ≥ 2): S = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹Rb› b [Ap] c-1 #’, Rn = ‘b ‹B1’› b [B1] b ‹B2’› b [B2] ... b ‹Bq-1’› b [Bq-1] b ‹A1’› b [A1] b ‹A2’› b [A2] ... б ‹Ap-1’› б [Ap-1] б ‹Rn-1› б [Ap] c-1 # ¬ d-1 #*’ (n > 1), R1 = ‘0’. Правило A5c2 ([Ap] = [1 [B1] 1 [B2] ... 1 [Bq] d #*],где [Bq] = [1 [C1] 1 [C2] ... 1 [Cr-1] 1 ♦ e #**] и q ≥ 1, r ≥ 1, d ≥ 2, e ≥ 2): S = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹Rb› b [Ap] c-1 #’, Rn = ‘b ‹B1’› b [B1] b ‹B2’› b [B2] ... b ‹Bq-1’› b [Bq-1] б ‹Tn› б [Bq] д-1 #*’ (n > 1), Tn = ‘б ‹C1’› б [C1] б ‹C2’› б [C2] ... б ‹Кр-1’› б [Кр-1] б ‹A1’› б [A1] б ‹A2’› б [A2] ... б ‹Ap-1’› б [Ap-1] б ‹Rn-1› б [Ap] к-1 # ♦ е-1 #**’ (n > 1), R1 = ‘0’. Правило A5c3 ([Ap] = [1 [B1] 1 [B2] ... 1 [Bq] d #*], где [Bq] = [1 [C1] 1 [C2] ... 1 [Cr] e #**], где [Cr] = [1 ☼ k #***] и q ≥ 1, r ≥ 1, d ≥ 2, e ≥ 2, k ≥ 2): S = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹Rb› b [Ap] c-1 #’, Rn = ‘b ‹B1’› b [B1] b ‹B2’› b [B2] ... b ‹Bq-1’› b [Bq-1] b ‹Tn› b [Bq] d-1 #*’ (n > 1), Tn = ‘b ‹C1’› b [C1] b ‹C2’› b [C2] ... b ‹Cr-1’› b [Cr-1] b ‹Un› b [Cr] e-1 #**’ (n > 1), Un = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹Rn-1› b [Ap] c-1 # ☼ k-1 #***’ (n > 1), R1 = ‘0’.

Правило A5d распадается на два подправила – A5d1 для первого набора (2-закрывающих разделителей) и A5d2 для последнего (3-закрывающих разделителей) (i-индексы были удалены, как в правилах A5c1-3). Правило A5d1 ([Ap] = [1 [B1] 1 [B2] ... 1 [Bq] d #*], где [Bq] = [X [C1] Y], X ≠ ‘1’, Y ≠ ‘1’ и q ≥ 1, d ≥ 2): S = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹T› b [Ap] c-1 #’, T = ‘b ‹B1’› b [B1] b ‹B2’› b [B2] ... b ‹Bq’› b [Bq] d-1 #*’. Правило A5d2 ([Ap] = [1 [B1] 1 [B2] ... 1 [Bq] d #*], где [Bq] = [1 [C1] 1 [C2] ... 1 [Cr] e #**], где [Cr] = [X☼Y], ​​X ≠ ‘1’, Y ≠ ‘1’ и q ≥ 1, r ≥ 1, d ≥ 2, e ≥ 2): S = ‘b ‹A1’› b [A1] b ‹A2’› b [A2] ... b ‹Ap-1’› b [Ap-1] b ‹T› b [Ap] c-1 #’, T = ‘b ‹B1’› b [B1] b ‹B2’› b [B2] ... b ‹Bq-1’› b [Bq-1] b ‹U› b [Bq] d-1 #*’, U = ‘b ‹C1’› b [C1] b ‹C2’› b [C2] ... b ‹Cr’› b [Cr] e-1 #**’.

Разделители ветвления (правило A5a) теперь входят в три набора. Первый набор содержит гиперразделители вида [1 [B1] 1 [B2] ... 1 [Bq] 1 [A1] 1 [A2] ... 1 [Ap] k #*].

Второй набор содержит гиперразделители вида [1 [B1] 1 [B2] ... 1 [Bq] d #*], где [Bq] = [1 [C1] 1 [C2] ... 1 [Cr] 1 [A1] 1 [A2] ... 1 [Ap] k #**].

Третий набор содержит гиперразделители вида [1 [B1] 1 [B2] ... 1 [Bq] d #*], где [Bq] = [1 [C1] 1 [C2] ... 1 [Cr] e #**], где [Cr] = [1 ☼ 1 [A1] 1 [A2] ... 1 [Ap] k #***].

Во всех трёх наборах каждый из [Aj] является либо обычным разделителем, либо 1-гиперразделителем, каждый из [Bj] является 2-гиперразделителем, каждый из [Cj] является 3-гиперразделителем, p ≥ 1, q ≥ 1, r ≥ 1, d ≥ 2, e ≥ 2, k ≥ 2 и #*, #** и #*** являются остальной частью соответствующих массивов.

Правило A5a теперь имеет три подправила, с подправилом n для n-ветвящихся разделителей (n-й набор из трёх, показанных выше). Обратите внимание, что изначально i установлено в 1. Правило A5a1 ([Ai,pi] = [1 [Bi,1] 1 [Bi,2] ... 1 [Bi,qi] 1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], где pi+1 ≥ 1, qi ≥ 1): Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Ti› b [Ai,pi] ci-1 #i’, Ti = ‘b ‹Bi,1’› b [Bi,1] b ‹Bi,2’› b [Bi,2] ... b ‹Bi,qi’› b [Bi,qi] Si+1’.

Увеличьте i на 1 и повторите правила A5a-e.

Правило A5a2 ([Ai,pi] = [1 [Bi,1] 1 [Bi,2] ... 1 [Bi,qi] di #*i], где [Bi,qi] = [1 [Ci,1] 1 [Ci,2] ... 1 [Ci,ri] 1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1] и pi+1 ≥ 1, qi ≥ 1, ri ≥ 1): Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Ti› b [Ai,pi] ci-1 #i’, Ti = ‘b ‹Bi,1’› b [Bi,1] b ‹Bi,2’› b [Bi,2] ... b ‹Bi,qi-1’› b [Bi,qi-1] b ‹Ui› b [Bi,qi] di-1 #*i’, Ui = ‘b ‹Ci,1’› b [Ci,1] b ‹Ci,2’› b [Ci,2] ... b ‹Ci,ri’› b [Ci,ri] Si+1’.

Увеличьте i на 1 и повторите правила A5a-e.

Правило A5a3 ([Ai,pi] = [1 [Bi,1] 1 [Bi,2] ... 1 [Bi,qi] di #*i], где [Bi,qi] = [1 [Ci,1] 1 [Ci,2] ... 1 [Ci,ri] ei #**i], где [Ci,ri] = [1 ☼ 1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1] и pi+1 ≥ 1, qi ≥ 1, ri ≥ 1): Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Ti› b [Ai,pi] ci-1 #i’, Ti = ‘b ‹Bi,1’› b [Bi,1] b ‹Bi,2’› b [Bi,2] ... b ‹Bi,qi-1’› b [Bi,qi-1] b ‹Ui› b [Bi,qi] di-1 #*i’, Ui = ‘b ‹Ci,1’› b [Ci,1] b ‹Ci,2’› b [Ci,2] ... b ‹b ☼ Si+1› b [Ci,ri] ei-1 #**i’.

Правило угловых скобок A5 изменяется следующим образом: Правило A5 (правила A1-4 не применяются, первая запись - 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1,1) - [A1,1,p1,1]): ‘a ‹ 0 [A1,1,1] 1 [A1,1,2] ... 1 [A1,1,p1,1] c1,1 #1,1 #* › b’ = ‘a ​​‹S1,1 #*› b’, где p1,1 ≥ 1, каждый из [A1,1,i*] является либо обычным разделителем, либо 1-гиперразделителем, #1,1 не содержит гиперразделителей 2-го или более высокого порядка в своём базовом слое, а #* является либо пустой строкой, либо начинается с гиперразделителя 2-го или более высокого порядка.

Установите i = 1 и следуйте правилам A5a-e (b-e являются конечными, a — нет). Правило A5a (разделитель [Ai,j,pi,j] = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] ci,j+1 #i,j+1] (1 ≤ j < k) = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] 1 [Ai+1,1,1] 1 [Ai+1,1,2] ... 1 [Ai+1,1,pi+1,1] ci+1,1 #i+1,1] (j = k), где pi,j+1 ≥ 1, pi+1,1 ≥ 1, ci+1,1 ≥ 2, каждый из [Ai+1,1,i*] является либо обычным разделителем или 1-гиперразделителем, и каждый из [Ai,j+1,i*] является (j+1)-гиперразделителем): Si,j = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j-1’› b [Ai,j,pi,j-1] b ‹Si,j+1› b [Ai,j,pi,j] ci,j-1 #i,j’ (1 ≤ j < k+1) = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j’› b [Ai,j,pi,j] Si+1,1’ (j = k+1).

Увеличьте i на 1 и повторите правила A5a-e.

Правило A5b (разделитель [Ai,1,pi,1] = [1 \2 2] = \): Si,1 = ‘Rb’, Rn = ‘b ‹Ai,1,1’› b [Ai,1,1] b ‹Ai,1,2’› b [Ai,1,2] ... b ‹Ai,1,pi,1-1’› b [Ai,1,pi,1-1] b ‹Rn-1› b \ ci,1-1 #i,1’ (n > 1), R1 = ‘0’.. Правило A5c (Правила A5a-b не применяются, разделитель [Ai,j,pi,j] = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] ci,j+1 #i,j+1] (1 ≤ j < k) = [1 \ j+1 2] = \ j (j = k), где pi,j+1 ≥ 1, ci,j+1 ≥ 2 и каждый из [Ai,j+1,i*] является (j+1)-гиперразделителем): Si,1 = ‘b ‹Ai,1,1’› b [Ai,1,1] b ‹Ai,1,2’› b [Ai,1,2] ... b ‹Ai,1,pi,1-1’› b [Ai,1,pi,1-1] b ‹Rb,1› b [Ai,1,pi,1] ci,1-1 #i,1’, Rn,j = ‘b ‹Ai,j+1,1’› b [Ai,j+1,1] b ‹Ai,j+1,2’› b [Ai,j+1,2] ... b ‹Ai,j+1,pi,j+1-1’› b [Ai,j+1,pi,j+1-1] b ‹Rn,j+1› b [Ai,j+1,pi,j+1] ci,j+1-1 #i,j+1’ (n > 1, 1 ≤ j < k-1) = ‘b ‹Ai,j+1,1’› b [Ai,j+1,1] b ‹Ai,j+1,2’› b [Ai,j+1,2] ... b ‹Ai,j+1,pi,j+1-1’› b [Ai,j+1,pi,j+1-1] b ‹Ai,1,1’› b [Ai,1,1] b ‹Ai,1,2’› b [Ai,1,2] ... b ‹Ai,1,pi,1-1’› b [Ai,1,pi,1-1] b ‹Rn-1,1› b [Ai,1,pi,1] ci,1-1 #i,1 \ j+1 ci,j+1-1 #i,j+1’ (n > 1, j = k-1), R1,1 = ‘0’. Правило A5d (Правила A5a-c не применяются, разделитель [Ai,j,pi,j] = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] ci,j+1 #i,j+1] (1 ≤ j < k) = [X [Ai,j+1,1] Y], X ≠ ‘1’, Y

Правила использования угловых скобок (BNA3)[]

Изменённые и полные правила угловых скобок, включая пересмотренные подправила правила A5, выглядят следующим образом:

Правило A1 (только 1 запись 0 или 1): ‘a ‹0› b’ = ‘a’, ‘a ‹1› b’ = ‘a, a, ... , a’ (с b a’s).

Правило A2 (только 1 запись 0 или 1 перед 2-гиперразделителем или гиперразделителем более высокого порядка): ‘a ‹0 #› b’ = ‘a’, ‘a ‹1 #› b’ = ‘a ​​[1 #] a [1 #] ... [1 #] a’ (с b копиями a), где # начинается с 2-го или более высокого гиперразделителя. Когда n ≥ 2, ‘a ‹1 \n 2› b’ = ‘a ​​\n-1 a \n-1 ... \n-1 a’ (с b копиями a).

Правило A3 (последняя запись в любом одномерном или многомерном пространстве массива равна 1): ‘a ‹# [A] 1› b’ = ‘a ​​‹#› b’. Когда [A] является m-гиперразделителем, [B] является n-гиперразделителем и m < n, или m = n и уровень [A] меньше уровня [B], ‘a ‹# [A] 1 [B] #*› b’ = ‘a ​​‹# [B] #*› b’. Удалите конечные единицы.

Правило A4 (число справа от угловых скобок равно 1): ‘a ‹A› 1’ = ‘a’.

Правило A5 (Правила A1-4 не применяются, первая запись - 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1,1), является [A1,1,p1,1]): ‘a ‹ 0 [A1,1,1] 1 [A1,1,2] ... 1 [A1,1,p1,1] c1,1 #1,1 #* › b’ = ‘a ​​‹S1,1 #*› b’, где p1,1 ≥ 1, каждый из [A1,1,i*] является либо обычным разделителем, либо 1-гиперразделителем, #1,1 не содержит гиперразделителей 2-го или более высокого порядка в своём базовом слое, а #* является либо пустой строкой, либо начинается с гиперразделителя 2-го или более высокого порядка. Установите i = 1 и j = 1 и следуйте правилам A5a-e (a, b и e являются конечными, c и d — нет).

Правило A5a (разделитель [Ai,1,pi,1] = [1 \2 2] = \): Si,1 = ‘Rb’, Rn = ‘b ‹Ai,1,1’› b [Ai,1,1] b ‹Ai,1,2’› b [Ai,1,2] ... b ‹Ai,1,pi,1-1’› b [Ai,1,pi,1-1] b ‹Rn-1› b \ ci,1-1 #i,1’ (n > 1), R1 = ‘0’.

Правило A5b (Правило A5a не применяется, разделитель [Ai,j,pi,j] = [1 \ j+1 2] = \ j, где j ≥ 2): Si,j = ‘Rb,j-1’, Rn,j-1 = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j-1’› b [Ai,j,pi,j-1] b ‹Ai,1,1’› b [Ai,1,1] b ‹Ai,1,2’› b [Ai,1,2] ... b ‹Ai,1,pi,1-1’› b [Ai,1,pi,1-1] б ‹Rn-1,1› b [Ai,1,pi,1] ci,1-1 #i,1 \ j ci,j-1 #i,j’ (n > 1), Rn,k = ‘b ‹Ai,k+1,1’› b [Ai,k+1,1] b ‹Ai,k+1,2’› b [Ai,k+1,2] ... b ‹Ai,k+1,pi,k+1-1’› b [Ai,k+1,pi,k+1-1] b ‹Rn,k+1› b [Ai,k+1,pi,k+1] ci,k+1-1 #i,k+1’ (n > 1, 1 ≤ k < j-1), R1,1 = ‘0’.

Правило A5c (Правила A5a-b не применяются, разделитель [Ai,j,pi,j] = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] 1 [Ai+1,1,1] 1 [Ai+1,1,2] ... 1 [Ai+1,1,pi+1,1] ci+1,1 #i+1,1], где pi,j+1 ≥ 1, pi+1,1 ≥ 1, ci+1,1 ≥ 2, каждый из [Ai+1,1,i*] является либо обычным разделителем, либо 1-гиперразделителем, и каждый из [Ai,j+1,i*] является (j+1)-гиперразделителем): Si,j = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j-1’› b [Ai,j,pi,j-1] b ‹Ti› b [Ai,j,pi,j] ci,j-1 #i,j’, Ti = ‘b ‹Ai,j+1,1’› b [Ai,j+1,1] b ‹Ai,j+1,2’› b [Ai,j+1,2] ... b ‹Ai,j+1,pi,j+1’› b [Ai,j+1,pi,j+1] Si+1,1’. Увеличьте i на 1, сбросьте j = 1 и повторите правила A5a-e.

Правило A5d (Правила A5a-c не применяются, разделитель [Ai,j,pi,j] = [1 [Ai,j+1,1] 1 [Ai,j+1,2] ... 1 [Ai,j+1,pi,j+1] ci,j+1 #i,j+1], где pi,j+1 ≥ 1, ci,j+1 ≥ 2 и каждый из [Ai,j+1,i*] является (j+1)-гиперразделителем): Si,j = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j-1’› b [Ai,j,pi,j-1] b ‹Si,j+1› b [Ai,j,pi,j] ci,j-1 #i,j’. Увеличьте j на 1 и повторите правила A5a-e.

Правило A5e (Правила A5a-d не применяются): Si,j = ‘b ‹Ai,j,1’› b [Ai,j,1] b ‹Ai,j,2’› b [Ai,j,2] ... b ‹Ai,j,pi,j’› b [Ai,j,pi,j] ci,j-1 #i,j’.

Правило A6 (Правила A1-5 не применяются): ‘a ‹n #› b’ = ‘a ​​‹n-1 #› b [n #] a ‹n-1 #› b [n #] ... [n #] a ‹n-1 #› b’ (со b строками ‘a ‹n-1 #› b’).

Иерархиальная гипер-вложенная нотация массива (Часть 2)[]

Правило угловых скобок A5 (исключая A5a*) теперь читается следующим образом:

Правило A5 (правила A1-4 не применяются, первая запись — 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1) [A1,p1]):

‘a ‹ 0 [A1,1] 1 [A1,2] ... 1 [A1,p1] c1 #1 #* › b’ = ‘a ​​‹S1 #*› b’, где p1 ≥ 1, каждый из [A1,j] является либо обычным разделителем, либо 1-гиперразделителем, #1 не содержит гиперразделителей 2-го или более высокого порядка в своём базовом слое, а #* является либо пустой строкой, либо начинается с гиперразделителя 2-го или более высокого порядка.

Установите i = 1 и следуйте правилам A5a-c (a, a* и c являются конечными, b — нет).

Правило A5a (разделитель [Ai,pi] = [1 /2 2] = /):

Si = ‘Rb,i’.

Для n > 1 и 1 ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,1› b / ci-1 #i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #k’,

R1,1 = ‘0’.

Правило A5b (Правила A5a-a* не применяются, разделитель [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], который является гиперразделителем 1-го или более высокого порядка, где pi+1 ≥ 1 и ci+1 ≥ 2):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Si+1› b [Ai,pi] ci-1 #i’.

Увеличьте i на 1 и повторите правила A5a-c.

Правило A5c (Правила A5a-b не применяются):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi’› b [Ai,pi] ci-1 #i’

"Суперправило" Правило угловых скобок A5 фактически имеет три подправила, в соответствии с составом разделителя [Ai,pi]:

A5a: [Ai,pi] = [1 /m+1 2] = /m (m ≥ 1).

A5b: [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], что является m-гиперразделителем (pi+1 ≥ 1, ci+1 ≥ 2, m ≥ 1).

A5c: Все остальные сценарии [Ai,pi].

Изменённое правило A5a звучит следующим образом:

Правило A5a (разделитель [Ai,pi] = [1 /m+1 2] = /m, где m ≥ 1):

s = i-tm,

Si = ‘Rb,i’.

Для n > 1 и s ≤ k < i

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b /m ci-1 #i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #k’,

R1,с = ‘0’.

Начальная часть правила A5 заканчивается строкой:

Установите i на 1 и t1, t2, ... , tx на 0 (где x — самый высокий индекс для слэша в [A1,p1]), и следуйте правилам A5a-c (a и c являются конечными, b — нет). Обратите внимание, что i = t1+1 везде.)

В правиле A5b [Ai,pi] — m-гиперразделитель, где m ≥ 1. Это правило заканчивается строкой:

Увеличьте i, t1, t2, ... , tm на 1; сбросьте tm+1, tm+2, ... , tx на 0 и повторите правила A5a-c. (i = t1+1.)

Теперь разделитель уровня Бахмана-Говарда можно проверить с помощью пересмотренного правила A5:

{a, b [1 [1~3] 2] 2} = {a ‹0 [1~3] 2› b}

= {a ‹S1› b}.

Так как p1 = 1, c1 = 2, #1 = #* = ‘’ (пусто),

[A1,1] = [1~3] (1-гиперразделитель),

p2 = 1, c2 = 3, #2 = ‘’ (пусто),

[A2,1] = ~ (= /2) (2-гиперразделитель),

по правилу A5b (m = 1),

S1 = ‘b ‹S2› b’,

t1 = 1, t2 = 0,

и по правилу A5a (m = 2, s = 2),

S2 = ‘Rb,2’,

Rn,2 = ‘b ‹Rn-1,2› b ~2’,

R1,2 = ‘0’.

Отсюда следует, что

{a, b [1 [1~3] 2] 2} = {a ‹b ‹Rb› b› b},

где Rn = ‘b ‹Rn-1› b ~2’,

R1 = ‘0’.

Иерархиальная гипер-вложенная нотация массива Берда – Правила использования угловых скобок[]

Правило A1 (только 1 запись 0 или 1):

‘a ‹0› b’ = ‘a’,

‘a ‹1› b’ = ‘a, a, ... , a’ (с b копиями a).

Правило A2 (только 1 запись 0 или 1 перед 2-гиперразделителем или гиперразделителем более высокого порядка):

‘a ‹0 #› b’ = ‘a’,

‘a ‹1 #› b’ = ‘a ​​[1 #] a [1 #] ... [1 #] a’ (с b копиями a),

где # начинается с 2-го или более высокого гиперразделителя.

Когда n ≥ 2,

‘a ‹1 /n 2› b’ = ‘a ​​/n-1 a /n-1 ... /n-1 a’ (с b копиями a).

Правило A3 (последняя запись в любом одномерном или многомерном пространстве массива равна 1):

‘a ‹# [A] 1› b’ = ‘a ​​‹#› b’.

Когда [A] является m-гиперразделителем, [B] является n-гиперразделителем и m < n, или m = n, а уровень [A] меньше уровня [B],

‘a ‹# [A] 1 [B] #*› b’ = ‘a ​​‹# [B] #*› b’.

Удалите конечные единицы.

Правило A4 (число справа от угловых скобок равно 1):

‘a ‹A› 1’ = ‘a’.

Правило A5 (Правила A1-4 не применяются, первая запись — 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1)

[A1,p1]):

‘a ‹ 0 [A1,1] 1 [A1,2] ... 1 [A1,p1] c1 #1 #* › b’ = ‘a ​​‹S1 #*› b’,

где p1 ≥ 1, каждый из [A1,j] является либо обычным разделителем, либо 1-гиперразделителем, #1 не содержит гиперразделителей 2-го или более высокого порядка в своем базовом слое, а #* — либо пустая строка, либо начинается с гиперразделителя 2-го или более высокого порядка.

Установите i на 1 и t1, t2, ... , tx на 0 (где x — самый высокий индекс для слэша в [A1,p1]), и следуйте правилам A5a-c (a и c являются конечными, b — нет). (Обратите внимание, что i = t1+1 везде.)

Правило A5a (разделитель [Ai,pi] = [1 /m+1 2] = /m, где m ≥ 1):

s = i-tm,

Si = ‘Rb,i’.

Для n > 1 и s ≤ k < i

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b /m ci-1 #i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #k’,

R1,с = ‘0’.

Правило A5b (Правило A5a не применяется, разделитель [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], который является m-гиперразделителем, где pi+1 ≥ 1, ci+1 ≥ 2 и m ≥ 1):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Si+1› b [Ai,pi] ci-1 #i’.

Увеличить i, t1, t2, ..., tm на 1; сбросьте tm+1, tm+2, ... , tx на 0 и повторите правила A5a-c. (i = t1+1.)

Правило A5c (правила A5a-b не применяются):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi’› b [Ai,pi] ci-1 #i’.

Правило A6 (правила A1-5 не применяются):

‘a ‹n #› b’ = ‘a ​​‹n-1 #› b [n #] a ‹n-1 #› b [n #] ... [n #] a ‹n-1 #› b’

(со строками b ‘a ‹n-1 #› b’).

Примечания:

1. A, B, Ai,1, Ai,2, ... , Ai,pi — строки символов в разделителях.

2. Ai,1’, Ai,2’, ... , Ai,pi’ — строки символов в угловых скобках, которые идентичны строкам Ai,1, Ai,2, ... , Ai,pi соответственно, за исключением того, что первые записи каждой из них были уменьшены на 1. Если Ai,j (для некоторых 1 ≤ j ≤ pi) начинается с 1, Ai,j’ начинается с 0.

3. Si и Rn,k — функции построения строк, которые создают строки символов. Функции R включают вложение одной и той же строки символов вокруг себя n-1 раз перед заменой на строку ‘0’.

4. #, #* и #i — строки символов, представляющие остаток массива (может быть нулевым или пустым).

5. Символ /n является n-гиперразделителем, /n, заключённый в m пар квадратных скобок (без символов /k, заключённых в менее чем k+m-n пар квадратных скобок, для любого k), является (n-m)-гиперразделителем (когда n > m) и обычным разделителем (или 0-гиперразделителем) в противном случае. Разделитель, не содержащий никаких слэшей, является обычным разделителем.

6. Запятая используется как сокращение для разделителя [1].

7. /n используется как сокращение для разделителя [1 /n+1 2].

Иерархиальная гипер-вложенная нотация массива[]

Правило A5a2 (разделитель [Ai,pi] = //):

s = i-tω,

h = EndSub(‘#s’) (нижний индекс в конце #s, по умолчанию это 1),

#*s = DelEndSub(‘#s’) (идентично #s, но с удалённым конечным нижним индексом (h)),

#n,s = ‘#*s h+b-n’ (1 < n < b),

#n,k = ‘#k’ (1 < n ≤ b, s < k ≤ i),

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b // ci-1 #n,i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #n,k’,

R1,с = ‘0’.

Правило A5a2 (разделитель [Ai,pi] = //m, где m ≥ 1):

s = i-tω+m-1,

h = EndSub(‘#s’) (нижний индекс в конце #s, по умолчанию это 1),

#*s = DelEndSub(‘#s’) (идентично #s, но с удалённым конечным нижним индексом (h)),

#n,s = ‘#*s h+b-n’ (1 < n < b, m = 1),

#n,k = ‘#k’ (1 < n ≤ b и либо s < k ≤ i, либо k = s, m ≥ 2),

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b //m ci-1 #n,i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #n,k’,

R1,с = ‘0’.

Возьмём [Xk] = [1 [1 [ ... [1 [1 //k 3] 2] ... ] 2] 2] (с k парами квадратных скобок).

Разделитель уровней θ(ε(Ωω+k-2+1)) (k ≥ 2)

{a, b [1 [Xk] 2] 2} = {a ‹0 [Xk] 2› b}

= {a ‹S1› b}.

Так как p1 = 1, c1 = 2, #1 = #* = ‘’ (пусто),

[A1,1] = [Xk] (1-гиперразделитель),

pj = 1, cj = 2, #j = ‘’ (пустота),

[Aj,1] = [1 [1 [ ... [1 [1 //k 3] 2] ... ] 2] 2]

((ω+j-2)-гиперразделитель, с k-j+1 парами квадратных скобок),

для 2 ≤ j ≤ k, и

pk+1 = 1, ck+1 = 3, #k+1 = ‘’ (пустота),

[Ak+1,1] = //k ((ω+k-1)-гиперразделитель), по j-му из k применений правила A5b (m = 1, когда j = 1 и m = ω+j-2 когда 2 ≤ j ≤ k),

Sj = ‘b ‹Sj+1› b’,

t1 = j, tω = j-1, tω+1 = j-2, tω+2 = j-3, ... , tω+j-2 = 1, tω+j-1 = tω+j = ... = tω+k-1 = 0

(t-счётчики заканчивают на t1 = k, tω = k-1, tω+1 = k-2, tω+2 = k-3, ... , tω+k-2 = 1, tω+k-1 = 0), и по правилу A5a2 (m = k, s = k+1; строка Rn,k игнорируется, так как s = i; #n,s = ‘#s’ при m ≥ 2),

Sk+1 = ‘Rb,k+1’,

Rn,k+1 = ‘b ‹Rn-1,k+1› b //k 2’,

R1,k+1 = ‘0’.

Из этого следует, что

{a, b [1 [Xk] 2] 2} = {a ‹b ‹b ‹ ... ‹b ‹S› b› ... › b› b› b}

(с k парами угловых скобок), где S = ‘b ‹b ‹b ‹ ... ‹b ‹b //k 2› b //k 2› ... › b //k 2› b //k 2› b’ (с b-1 парами угловых скобок и //k’s).

Правила A5a, A5a2 и A5a3 теперь фактически можно объединить в пересмотренное правило A5a. Полное

Правило A5 выглядит следующим образом:

Правило A5 (Правила A1-4 не применяются, первая запись — 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1)

[A1,p1]):

‘a ‹ 0 [A1,1] 1 [A1,2] ... 1 [A1,p1] c1 #1 #* › b’ = ‘a ​​‹S1 #*› b’,

где p1 ≥ 1, каждый из [A1,j] является либо обычным разделителем, либо 1-гиперразделителем, #1 не содержит гиперразделителей 2-го или более высокого порядка или нижнего индекса в своём базовом слое, а #* является либо пустой строкой или нижним индексом или начинается с гиперразделителя 2-го или более высокого порядка.

Установите i на 1, а t1 на 0 и следуйте правилам A5a-c (a, a* и c являются конечными, b — нет).

Правило A5a (разделитель [Ai,pi] = /m,m*, где m ≥ 1 и m* ≥ 1):

Установите r на 1. Для каждого j от 1 до i-1 увеличьте r на 1, когда либо mj* < m*, либо mj* = m* и mj < m.

s = i-tr,

h = EndSub(‘#s’) (индекс в конце #s, по умолчанию это 1),

#*s = DelEndSub(‘#s’) (идентично #s, но с удалённым конечным индексом (h)),

#n,s = ‘#*s h+b-n’ (1 < n < b, m = 1, m* ≥ 2),

#n,k = ‘#k’ (1 < n ≤ b, s ≤ k ≤ i, за исключением k = s, m = 1, m* ≥ 2),

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b /m,m* ci-1 #n,i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #n,k’,

R1,с = ‘0’.

Правило A5a* (разделитель [Ai,pi] = [d #H m], где d ≥ 2 и #H содержит (1, k)-гиперразделитель как гиперразделитель наивысшего порядка в своём базовом слое, где k ≥ 2):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] Rb [d #H m] ci-1 #i’,

Rn = ‘b ‹Rn-1› b’ (n > 1),

R1 = ‘b [d-1 #H m+b-1] b’.

Правило A5b (Правило A5a не применяется, разделитель [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1], который является (mi, mi*)-гиперразделителем, где pi+1 ≥ 1, ci+1 ≥ 2, mi ≥ 1 и mi* ≥ 1):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Si+1› b [Ai,pi] ci-1 #i’.

Установите r на 1, а f на 0. Для каждого j от 1 до i-1 увеличьте r на 1, когда mj* < mi* или mj* = mi* и mj ≤ mi; и установите f на 1, когда mj* = mi* и mj = mi. Увеличьте t1, t2, ... , tr на 1; установите tr на tr-1, если f = 1; сбросьте tr+1, tr+2, ... , ti на 0; установите ti+1 на 0; увеличьте i на 1 (так, чтобы i = t1+1) и повторите правила A5a-c.

Правило A5c (Правила A5a-b не применяются):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi’› b [Ai,pi] ci-1 #i’.

Разделитель уровня θ(Ωω^Ω3) содержит последовательность из пяти разделителей [Ai,pi] следующим образом:

[A1,1] = [1 [1 [1 [1 /3 2 /2,2 2] 2 2] 2 /2,2 2] 2], [m1, m1*] = [1],

[A2,1] = [1 [1 [1 /3 2 /2,2 2] 2 2] 2 /2,2 2], [m2, m2*] = [1, 2],

[A3,1] = [1 [1 /3 2 /2,2 2] 2 2], [m3, m3*] = [2],

[A4,1] = [1/3 2 /2,2 2], [m4, m4*] = [1, 2],

[A5,1] = /3, [t5, t5*] = [3].

Начинаем с i = 1 и t1 = 0. При первом применении правила A5b имеем r = 1 и f = 0, и поэтому,

t1 = 1 (счетчик [1]), t2 = 0 (новый счётчик). По второму применению правила A5b (i = 2) имеем r = 2 и f = 0, и поэтому,

t1 = 2 ([1] счётчик), t2 = 1 ([1, 2] счётчик), t3 = 0 (новый счётчик).

По третьему применению правила A5b (i = 3) имеем r = 2 и f = 0, и поэтому,

t1 = 3 ([1] счётчик), t2 = 2 ([2] счётчик), t3 = 0 ([1, 2] счётчик), t4 = 0 (новый счётчик).

По четвёртому применению правила A5b (i = 4) имеем r = 4 и f = 1, и поэтому,

t1 = 4 ([1] счётчик), t2 = 3 ([2] счётчик), t3 = t4 = 1 ([1, 2] счётчик), t5 = 0 (новый счётчик).

По правилу A5a (i = 5) имеем m = 3, m* = 1, r = 3 и s = i-tr = 4 (s не изменяется). Счётчик t1 — всегда [1] счётчик (так как [m1, m1*] всегда [1]), тогда как счётчик tr — первый счётчик, который считает [m, m*] или дальше.

Правило A5b (Правило A5a не применяется, разделитель [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 # я+1], который является (mi,1, mi,2, ... , mi,qi)-гиперразделителем, где pi+1 ≥ 1, ci+1 ≥ 2, qi ≥ 1, mi,j ≥ 1 (для всех 1 ≤ j ≤ qi) и mi,qi ≥ 2 (qi ≥ 2)):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Si+1› b [Ai,pi] ci-1 #i'.

Установите r на 1 и f на 0. Для каждого j от 1 до i-1 увеличьте r на 1, когда либо qj < qi, либо qj = qi и существует число n такое, что mj,n < mi,n и mj,k = mi,k (для всех n < k ≤ qi); и увеличиваем r на 1 и устанавливаем f на 1, когда qj = qi и mj,k = mi,k (для всех 1 ≤ k ≤ qi).

Увеличьте t1, t2, ... , tr на 1; установите tr на tr-1, если f = 1; сбросьте tr +1, tr+2, ... , ti в 0; установите ti+1 в 0; увеличьте i на 1

(так что i = t1+1) и повторите правила A5a-c.

Правила A5a и A5a* изменяются следующим образом:

Правило A5a (разделитель [Ai,pi] = /m1,m2,..., mq, где q ≥ 1 и mq ≥ 2 (q ≥ 2)):

Установите r на 1. Для каждого j от 1 до i-1 увеличьте r на 1, когда qj < q или qj = q и существует число n такое, что mj,n < mn и mj,k = mk (для всех n < k ≤ q).

s = i-tr,

H = EndSub('#s') (массив индексов в конце #s, по умолчанию это 1),

hk = Sub(H, k) (k-й индекс массива индексов H = 'h1 ,h2,...'),

#*s = DelEndSub('#s') (идентично #s, но с удалённым конечным индексом массива (H)),

#</ nowiki>n,s = '#*s h1,h2,...,hk-1,(hk+b-n),hk+1,hk+2,...' (1 < n < b, mj = 1 (для всех 1 ≤ j ≤ k), mk+1 ≥ 2), <nowiki>#n,k = '#k' (1 < n ≤ b, s ≤ k ≤ i, за исключением k = s, m1 = 1, q ≥ 2),

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = 'b ‹Ai,1'>> b [Ai,2] ... b ‹Ai,pi-1'> b [Ai,pi-1 ] b ‹Rn-1,s› b /m1,m2,...,mq ci-1 #n,i',

Rn,k = 'b ‹Ak,1'>> b [Ak,2] ... b ‹Ak,pk-1'>> b [Ak,pk-1 ] b ‹Rn,k+1› b [Ak,pk] ck-1 #n,k’,

R1,s = ‘0’.

Правило A5a* (разделитель [Ai,pi] = [d #H m1,m2,...], где d ≥ 2 и #H содержит (1, 1, ... , 1, r1, r2, .. .)-гиперразделитель (с k копиями 1) как гиперразделитель наивысшего порядка в его базовом слое, где k ≥ 1 и r1 ≥ 2):

Si = 'b ‹Ai,1'› b [Ai,1] b ‹Ai,2 '› b [Ai,2] ... b ‹Ai,pi-1'› b [Ai,pi-1] Rb [d #H m1,m2,...] ci-1 #i',

Rn = 'b ‹Rn-1› b' (n > 1),

R1 = 'b [d-1 #H 1,...,1,mk+b-1] b' (с k-1 единицами в нижнем индексе).

В правиле A5a* любой из mj для 1 ≤ j ≤ k и rj для j ≥ 2 может принимать значение 1 (mj = 1 для всех j > k).

Индексы и гиперуровни записываются с удалёнными конечными единицами. Например, если nk ≥ 2, но ni = 1 для всех i > k, то /n1,n2,... = /n1,n2,...,nk, [X n1,n2,...] = [ X n1,n2,...,nk] и ‹X n1,n2,...› = ‹X n1,n2,...,nk› для строки X, и (n1, n2, ... )-гиперразделитель будет (n1, n2, ... , nk)-гиперразделителем. Если ni = 1 для всех i, то /n1,n2,... = /, [X n1,n2,...] = [X] и ‹X n1,n2,...› = ‹X› для строка X, (n1, n2, ...)-гиперразделитель будет 1-гиперразделителем.

Обратите внимание, что правило A5a* с #H, содержащим наименьший (1, 1, ... , 1, r1, r2, ...)-гиперразделитель (с k единицами), как следует,

[Ai,pi] = [2 / 1,1,...,1,r1,r2,... 2 m1,m2,...] (с k единицами после слэша и mj = 1 для всех j > k)

означало бы, что

R1 = 'b [ 1 /1,1,...,1,r1,r2,... 2 1,...,1,mk+b-1] b' (с k единицами в левом нижнем индексе и k-1 единицами в правом нижнем индексе)

= 'b /1,...,1,mk+b-1,r1-1,r2,... b' (с k-1 единицами после слэша),

вот как (k+1)-й нижний индекс слэша уменьшается на 1. (Нижний индекс k становится mk+b-1; все остальные нижние индексы остаются неизменными.)

Правило A3 изменяется следующим образом:

Правило A3 (последняя запись в любом одномерном или многомерном пространстве массива равна 1):

'a ‹# [A] 1 n1,n2,...,nk› b' = 'a ‹# n1,n2,...,nk› b'.

Когда [A] является (m1, m2, ... , mp)-гиперразделителем, [B] является (n1, n2, ... , nq)-гиперразделителем и либо p < q; p = q и существует число k такое, что mk < nk и mi = ni (для всех k < i ≤ p); или p = q, mi = ni (для всех 1 ≤ i ≤p) и уровень [A] меньше уровня [B],

‘a ‹# [A] 1 [B] #*› b’ = ‘a ​​‹# [B] #*› b’.

Удалите конечные 1.

Разделитель уровня θ(Ωω^ω^2)

{a, b [1 [2 /1 [3] 2 2] 2] 2} = {a ‹0 [2 /1 [3] 2 2] 2› b}

= {a ‹b ‹b ‹ ... ‹b ‹b /1 ‹2› b (←b) b› b› ... › b› b› b}

(с b парами угловых скобок снаружи нижнего индекса),

где (←b) означает замену последней запись на b. Так как

‘1 ‹2› b (←b)’ = ‘1 ‹1› b [2] 1 ‹1› b [2] ... 1 ‹1› b [2] 1 ‹1› b (←b)’ (где [2] повторяется b-1 раз)

= ‘1,1,..,1 [2] 1,1,..,1 [2] .... 1,1,..,1 [2] 1,1,..,1,b’ (b-1 единиц после последнего [2])

= ‘1 [2] 1 [2] ... 1 [2] 1,1,...,1,b’ (удалить конечные единицы),

следует, что

{a, b [1 [2 /1 [3] 2 2] 2] 2} = {a ‹b ‹b ‹ ... ‹b ‹b /1 [2] 1 [2] ... 1 [2] 1,1,...,1,b b› b› ... › b› b› b}

(b пар угловых скобок, b-1 ‘1 [2] и b-1 1 в 1,1,...,1,b).

В случае разделителя уровня θ(Ωω^ω) в {a, b [1 [2 /1 [2] 2 2] 2] 2}, массив индексов слэша между парой b внутри самых внутренних угловых скобок с правой стороны будет /1 ‹1› b (←b) так как это даёт /1,1,...,1,b с b-1 1. Введение "стрелки влево" в Правило A5a* означает, что необходимо внести несколько изменений в Правила A1, A2 и A4, чтобы избавиться от стрелки при исчезновении угловых скобок.

В Правило A1 внесены следующие дополнения:

‘a ‹0› b (←c)’ = ‘c’,

‘a ‹1› b (←c)’ = ‘a, a, ... , a, c’ (с b-1 a’s).

В Правило A2 внесены следующие дополнения:

‘a ‹0 #› b (←c)’ = ‘c’,

‘a ‹1 #› b (←c)’ = ‘a ​​[1 #] a [1 #] ... a [1 #] c’ (с b-1 a’s),

где # начинается с гиперразделителя 2-го или более высокого порядка.

В Правило A4 внесено следующее дополнение:

‘a ‹A› 1 (←c)’ = ‘c’.

Разделитель уровня θ(Ωω^ω^ω)

{a, b [1 [2 /1 [1,2] 2 2] 2] 2} = {a ‹0 [2 /1 [1,2] 2 2] 2› b}

= {a ‹b ‹b ‹ ... ‹b ‹b /1 ‹0,2› b (←b) b› b› ... › b› b› b}

= {a ‹b ‹b ‹ ... ‹b ‹b /1 ‹b› b (←b) b› b› ... › b› b› b}

(с b парами угловых скобок вне нижнего индекса),

где ‘1 ‹b› b (←b)’ = ‘1 ‹b-1› b [b] 1 ‹b-1› b [b] ... 1 ‹b-1› b [b] 1 ‹b-1› b (←b)’ (где [b] повторяется b-1 раз)

= ‘1 [b] 1 [b] ... 1 [b] 1 [b-1] 1 [b-1] ... 1 [b-1] ...... 1 [2] 1 [2] ... 1 [2] 1,1,...,1,b’

(b-1 каждый из [b], [b-1], ... , [2] и b-1 1 после конечного [2]).

Вложенная иерархиальная гипервложенная нотация массива Берда – Правила угловых скобок[]

Правило A1 (только 1 запись 0 или 1):

‘a ‹0› b’ = ‘a’,

‘a ‹1› b’ = ‘a, a, ... , a’ (с b a’s),

‘a ‹0› b (←c)’ = ‘c’,

‘a ‹1› b (←c)’ = ‘a, a, ... , a, c’ (с b-1 a’s).

Правило A2 (только 1 запись 0 или 1 перед гиперразделителем 2 или гиперразделителем более высокого порядка):

‘a ‹0 # N› b’ = ‘a’,

‘a ‹1 # N› b’ = ‘a ​​[1 # N] a [1 # N] ... [1 # N] a’ (с b a’s),

‘a ‹0 # N› b (←c)’ = ‘c’,

‘a ‹1 # N› b (←c)’ = ‘a ​​[1 # N] a [1 # N] ... a [1 # N] c’ (с b-1 a’s),

где # начинается с гиперразделителя 2 или более высокого порядка.

Правило A3 (последняя запись в любом одномерном или многомерном пространстве массива равна 1):

‘a ‹# [A] 1 N› b’ = ‘a ​​‹# N› b’.

Когда [A] является гиперразделителем M1, [B] является гиперразделителем M2 и M1 < M2, или M1 = M2 и [A] < [B],

‘a ‹# [A] 1 [B] #* N› b’ = ‘a ​​‹# [B] #* N› b’.

Удалите конечные единицы.

Правило A4 (число справа от угловых скобок равно 1):

‘a ‹A N› 1’ = ‘a’,

‘a ‹A N› 1 (←c)’ = ‘c’.

Правило A5 (Правила A1-4 не применяются, первая запись равна 0, разделитель непосредственно перед следующей записью, отличной от 1 (c1) является [A1,p1]):

‘a ‹ 0 [A1,1] 1 [A1,2] ... 1 [A1,p1] c1 #1 #* N1› b’ = ‘a ​​‹S1 #* N1› b’,

где p1 ≥ 1, каждый из [A1,j] является либо обычным разделителем, либо 1-гиперразделителем, #1 не содержит гиперразделителей 2-го или более высокого порядка в своем базовом слое, а #* является либо пустой строкой, либо начинается с гиперразделителя 2-го или более высокого порядка.

Установите i на 1, а t1 на 0 и следуйте правилам A5a-f (a-d и f являются конечными, e — нет). (Обратите внимание, что i = t1+1 всюду.)

Правило A5a (разделитель [Ai,pi] = /M, где M = ‘1 [B1] 1 [B2] ... [Bp-1] 1, m1 [C1] m2 [C2] ... [Cq-1] mq’, где p ≥ 1, q ≥ 1, m1 ≥ 2, mq ≥ 2 и каждый из [Bj] (1 ≤ j < p) и [Cj] (1 ≤ j < q) являются нормальными разделителями):

Установите r равное 1. Для каждого j от 1 до i-1 увеличьте r на 1, когда Mj < M.

s = i-tr.

Массив индексов Ns = ‘n1 [D1] n2 [D2] ... [Dh-1] nh’,

где h ≥ 1, nh ≥ 2 (h ≥ 2) и каждый из [Dj] (1 ≤ j < h) является обычным разделителем.

Следуйте 3-шаговому алгоритму (ниже), пока не будет определена строка Nn,s (для 1 < n < b).

Шаг 1: Установите x и y на 1 и перейдите к шагу 2.

Шаг 2: Если x = p и y = h, то Nn,s = ‘n1 [D1] n2 [D2] ... nh-1 [Dh-1] nh+b-n’.

Если x = p и y < h, то Nn,s = ‘n1 [D1] n2 [D2] ... ny-1 [Dy-1] ny+b-n [Dy] ny+1 [Dy+1] ... nh-1 [Dh-1] nh’.

Если x < p и y = h, то Nn,s = ‘n1 [D1] n2 [D2] ... nh-1 [Dh-1] nh [Bx] 1 [Bx+1] ... 1 [Bp-1] b+1-n'.

Если x < p и y < h, то переходим к шагу 3.

Шаг 3: Если [Bx] > [Dy], то увеличиваем y на 1 и переходим к шагу 2.

Если [Bx] = [Dy], то увеличиваем x и y на 1 и переходим к шагу 2.

Если [Bx] < [Dy], то Nn,s = ‘n1 [D1] n2 [D2] ... ny-1 [Dy-1] ny [Bx] 1 [Bx+1] ... 1 [Bp-1] b+1-n [Dy] ny+1 [Dy+1] ... nh-1 [Dh-1] nh’.

Тогда получаем

Nb,i = ‘Ni’,

Nn,k = ‘Nk’ (1 < n < b, s < k ≤ i),

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b /M ci-1 #i Nn,i’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #k Nn,k’,

R1,с = ‘0’.

Правило A5b (Правило A5a не применяется, разделитель [Ai,pi] = /M, где M = ‘1 [B1] 1 [B2] ... [Bp-1] 1 [Bp] m1 [C1] m2 [C2] ... [Cq-1] mq’, где p ≥ 1, q ≥ 1, m1 ≥ 2, mq ≥ 2, [Bp] ≥ [2] и каждый из [Bj] (1 ≤ j < p) и [Cj] (1 ≤ j < q) являются нормальными разделителями):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b /M* ci #i /M ci-1 #i Ni’,

где M* = ‘1 [B1] 1 [B2] ... [Bp-1] 1 ‹Bp’› b (←2) [Bp] m1-1 [C1] m2 [C2] ... [Cq-1] mq’.

Правило A5c (Правила A5a-b не применяются, разделитель [Ai,pi] = /M, где M = ‘m1 [B1] m2 [B2] ... [Bq-1] mq’, где q ≥ 1, m1 ≥ 2 (q ≥ 2), mq ≥ 2 (q ≥ 2) и каждый из [Bj] (1 ≤ j < q) является обычным разделителем):

Установите r равное 1. Для каждого j от 1 до i-1 увеличьте r на 1, когда Mj < M.

s = i-tr,

Si = ‘Rb,i’.

Для 1 < n ≤ b и s ≤ k < i,

Rn,i = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Rn-1,s› b /M ci-1 #i Ni’,

Rn,k = ‘b ‹Ak,1’› b [Ak,1] b ‹Ak,2’› b [Ak,2] ... b ‹Ak,pk-1’› b [Ak,pk-1] b ‹Rn,k+1› b [Ak,pk] ck-1 #k Nk’,

R1,с = ‘0’.

Правило A5d (Правила A5a-c не применяются, разделитель [Ai,pi] = [d #H M], где d ≥ 2 и #H содержит H-гиперразделитель как гиперразделитель наивысшего порядка в своём базовом слое, где H = ‘1 [H1] 1 [H2] ... 1 [Hk] h #H*’, где h ≥ 2, k ≥ 1 и каждый из [Hj] (1 ≤ j ≤ k) является обычным разделителем):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] Rb [d #H M] ci-1 #i Ni’,

Rn = ‘b ‹Rn-1› b’ (n > 1),

R1 = ‘b [d-1 #H 1 [H1] 1 [H2] ... 1 [Hk-1] 1 ‹Hk’› b (←m+b-1)] b’,

где m (которое может быть 1) является k-м и последним элементом в массиве индексов M, если записать его как

M = ‘m1 [H1] m2 [H2] ... mk-1 [Hk-1] m’.

Правило A5e (Правила A5a-d не применяются, разделитель [Ai,pi] = [1 [Ai+1,1] 1 [Ai+1,2] ... 1 [Ai+1,pi+1] ci+1 #i+1 Ni+1], который является Mi-гиперразделителем, где pi+1 ≥ 1, ci+1 ≥ 2 и Mi ≥ ‘1’):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi-1’› b [Ai,pi-1] b ‹Si+1› b [Ai,pi] ci-1 #i Ni’.

Установите r на 1, а f на 0. Для каждого j от 1 до i-1 увеличьте r на 1, когда Mj ≤ Mi, и установите f на 1, когда

Mj = Mi.

Увеличьте t1, t2, ... , tr на 1; установите tr на tr-1, если f = 1; сбросьте tr+1, tr+2, ... , ti на 0; установите ti+1 на 0; увеличьте i на 1 (так что i = t1+1) и повторите правила A5a-f.

Правило A5f (правила A5a-e не применяются):

Si = ‘b ‹Ai,1’› b [Ai,1] b ‹Ai,2’› b [Ai,2] ... b ‹Ai,pi’› b [Ai,pi] ci-1 #i Ni’.

Правило A6 (Правила A1-5 не применяются):

‘a ‹n # N› b’ = ‘a ​​‹n-1 # N› b [n # N] a ‹n-1 # N› b [n # N] ... [n # N] a ‹n-1 # N› b’

(со строками b ‘a ‹n-1 # N› b’).

Примечания:

1. A, B, Ai,1, Ai,2, ... , Ai,pi, Bj, Cj, Dj и Hj — строки символов внутри разделителей. В правилах A3 и A5 строки A, B, Ai,1, Ai,2, ... , Ai,pi (i ≥ 2) могут включать нижние индексы в конце.

2. Ai,1’, Ai,2’, ... , Ai,pi’, Bp’ и Hk’ — строки символов в угловых скобках, которые идентичны строкам Ai,1, Ai,2, ... , Ai,pi, Bp и Hk соответственно, за исключением того, что первые записи каждой из них уменьшены на 1. Если Ai,j (для некоторых 1 ≤ j ≤ pi) начинается с 1, Ai,j’ начинается с 0.

3. M, M*, N, Ni и Nn,k — строки символов, которые составляют массивы индексов.

4. Mi и H — строки символов, которые описывают гиперуровни (уровни гиперразделителей).

5. Si, Rn и Rn,k — функции построения строк, которые создают строки символов. Функции R включают вложение одной и той же строки символов вокруг себя n-1 раз перед заменой на строку ‘0’.

6. #, #*, #i, #H и #H* — строки символов, представляющие остаток массива (могут быть нулевыми или пустыми), исключая любые индексы в конце. Здесь индексы H и H* являются метками, а не переменными или строками символов.

7. В правилах A5b и A5d создаётся "стрелка влево", которая отображается в скобках рядом с числом и размещается справа от массива угловых скобок (с 1 и b по обе стороны), а именно ‘1 ‹Bp’› b (←2)’ внутри M* в первом подправиле и ‘1 ‹Hk’› b (←m+b-1)’ внутри массива индексов внутри R1 в последнем. Угловые скобки разрешаются в строку из единиц и разделителей (убывающего уровня с b-1 каждого уровня вниз до разделителя [1] или запятой), а последняя запись 1 заменяется числом рядом со "стрелкой влево". Стрелка в конце удаляется вместе с угловыми скобками непосредственно слева от неё, используя правила A1, A2 или A4.

8. Символ /N является N-гиперразделителем. Разделитель, который не содержит гиперразделителей 2-го или более высокого порядка в своем базовом слое, является обычным разделителем (или 0-гиперразделителем).

9. Запятая используется как сокращение для разделителя [1].

10. Когда разделитель [A] = /N и необходимо найти строку A’ (идентичную A, но для первой записи, уменьшенной на 1), /N используется как сокращение для разделителя [1 /N* 2], где N* идентично N, за исключением того, что первая запись была увеличена на 1. В этом случае A’ = ‘0 /N* 2’, что означает, что ‘b ‹A’› b’ = ‘b ‹0 /N* 2› b’ = ‘b’ (по правилу A2).

11. Любой гиперразделитель 2-ого или более высокого порядка может иметь нижний индекс.

12. Разделитель [1 /M 2 N] (M ≠ ‘1’) сокращается до символа /X для массива нижнего индекса X согласно специальному правилу (см. ниже).

Всякий раз, когда мы сталкиваемся с разделителем вида [1 /X 2 Y] (со слэшем между единственными двумя записями 1 и 2), где X и Y — массивы индексов, а X ≠ ‘1’, этот разделитель "опускается" до простого слэша вида /Z, где Z — другой массив индексов. Это особое правило известно как правило опускания.

Правило опускания (разделитель имеет вид [1 /M 2 N] с M ≠ ‘1’, т. е. имеет только две записи 1 и 2 слева и справа от массива слэш-индексов, что является гиперразделителем 2-го или более высокого порядка):

[1 /1 [A1] 1 [A2] ... 1 [Am] nm+1 # 2 n1 [A1] n2 [A2] ... [Ak-1] nk]

= /n1 [A1] n2 [A2] ... nk [Ak] 1 [Ak+1] 1 [Ak+2] ... 1 [Am] nm+1-1 #,

где 0 ≤ k ≤ m, nm+1 ≥ 2, каждый из [Ai] является обычным разделителем, а # представляет остаток массива слэш-индексов.

Когда k = m, правило опускания становится:

[1 /1 [A1] 1 [A2] ... 1 [Am] nm+1 # 2 n1 [A1] n2 [A2] ... [Am-1] nm]

= /n1 [A1] n2 [A2] ... nm [Am] nm+1-1 #.

Когда k = 0, правило опускания становится:

[1 /1 [A1] 1 [A2] ... 1 [Am] nm+1 # 2]

= /1 [A1] 1 [A2] ... 1 [Am] nm+1-1 #.

Когда k = m = 0, правило опускания становится:

[1 /n1 # 2] = /n1-1 #.

Завершающие 1 в массивах нижних индексов удаляются, как в массивах разделителей и массивах угловых скобок. Например,

/# [A] 1 = /# и [X # [A] 1] = [X #].

Когда [A] < [B],

/# [A] 1 [B] #* = /# [B] #* и [X # [A] 1 [B] #*] = [X # [B] #*].

Это полная вложенная иерархическая гипервложенная нотация массива. Предельный ординал этой нотации — θ(Ω_Ω). Расширенная теорема Крускала (теорема Крускала о дереве, расширенная на помеченные деревья) и гидры Бухгольца с конечными числами в качестве меток доводят нас до уровня θ(Ω_ω) в быстрорастущей иерархии. Однако если мы используем деревья как метки для деревьев, а затем используем эти деревья как метки для ещё больших деревьев и так далее, мы также достигнем предела θ(Ω_Ω) в иерархии быстрорастущих функций! Эта нотация работает для простых вложенных массивов до уровня ε0 без необходимости использования правил A2 и A5a-e. Эти правила становятся необходимыми только тогда, когда кто-то хочет выйти за пределы следующих ординалов или использовать связанные разделители, как показано ниже:

ε0 [1 / 2] A5c

φ(ω, 0) [1 [2 /2 2] 2] A2

Γ0 [1 [1 / 2 /2 2] 2] A5e

θ(Ω_ω) [1 [2 /1,2 2] 2] A5d

θ(Ω_ω+1) [1 [1 /1,2 3] 2] A5a

θ(Ω_(ω^ω)+1) [1 [1 /1 [2] 2 3] 2] A5b

В правиле A5a трёхшаговый алгоритм начинается изначально с шага 1 (устанавливаем x и y на 1), затем переключается между двумя другими шагами, пока не будет найдено решение для индексного массива Nn,s. На шаге 2 Nn,s определяется когда либо x = p, либо y = h (достигнут конец разделителей [Dj] или [Bj], предшествующих последней 1 и запятой перед первой записью, отличной от 1), в противном случае он переходит к шагу 3. На шаге 3 Nn,s немедленно находится, когда x-й B-разделитель M имеет более низкий уровень, чем y-й D-разделитель Ns, или [Bx] < [Dy] (как [Bj] < [Dy] для всех x < j < p), в противном случае y увеличивается на 1 (и также x, если [Bx] и [Dy] идентичны) перед переходом на шаг 2.

Смотрите также[]

Примечания[]

Advertisement