User blog comment:Rgetar/FGH-based notation for natural numbers/@comment-35470197-20190426042119/@comment-32213734-20190426113013

X is a string:
 * X = α0.n0, α1.n1, α2.n2, ... αk.nk

Also, X may be empty string:
 * X =

X, α.n is a string too:
 * X, α.n = α0.n0, α1.n1, α2.n2, ... αk.nk, α.n

If X is empty string then
 * X, α.n = α.n

otn(α) is to provide uniqueness of "standard form" of a number.

I tried to create system with unique "standard forms" (similarly to decimal notation, where for 123 there is standard form "123", and such forms as "000123.000" may be considered as non-standard).

To provide the uniqueness there are 3 rules:


 * 1. for string α0.n0, α1.n1, α2.n2, ... αk.nk must be α0 > α1 > α2 > ... > αk
 * 2. for string X, α.n must be n < (base - 1)*(X)
 * 3. for string X, α.n must be otn(α) < (base - 1)*(X)

Examples (base = 10):

(0.1, 0.1) = (0.2) = 12, but "(0.1, 0.1)" does not satisfy the Rule 1, that is 0 ≮ 0, so it is non-standard form.

(0.90) = (1.0) = 100, but "(0.90)" does not satisfy the Rule 2, that it n = 90 ≮ (base - 1)*(X) = 9* = 90, so it is non-standard form. (Here 90 is designated using decimal notation. Actually 90 = (0.(0.(0.(0.(0.(0.(0.(0.))))))))).

And Rule 3. Let L = ω, and system of fundamental sequences is ω[n] = n. (Here I also use decimal notation). So otn(ω) = 0, otn(n) = n for n < ω. Examples of standard forms:
 * (0.1)
 * (0.2)
 * (0.89)
 * (1.1)
 * (1.89)
 * (2.1)
 * (2.89)
 * (89.1)
 * (89.89)
 * (2.89)
 * (89.1)
 * (89.89)
 * (89.89)
 * (89.89)

But (90.1) is non-standard form, since it does not satisfy the Rule 3: otn(α) = otn(90) = 90 ≮ (base - 1)*(X) = 9* = 90. Instead of (90.1) must be (ω.1) = (90.1). Go further. Standard forms:
 * (ω.1, 0.1)
 * (ω.1, 0.2)
 * (ω.1, 0.89)
 * (ω.1, 0.90)
 * (ω.1, 0.91)
 * (ω.1, 0.9*(ω.1) - 1)
 * (ω.1, 1.1)
 * (ω.1, 1.2)
 * (ω.1, 1.9*(ω.1) - 1)
 * (ω.1, 2.1)
 * (ω.1, 2.9*(ω.1) - 1)
 * (ω.1, 89.1)
 * (ω.1, 89.9*(ω.1) - 1)
 * (ω.1, 90.1)
 * (ω.1, 90.9*(ω.1) - 1)
 * (ω.1, 91.1)
 * (ω.1, 91.9*(ω.1) - 1)
 * (ω.1, 9*(ω.1) - 1.1)
 * (ω.1, 9*(ω.1) - 1.9*(ω.1) - 1)
 * (ω.1, 90.9*(ω.1) - 1)
 * (ω.1, 91.1)
 * (ω.1, 91.9*(ω.1) - 1)
 * (ω.1, 9*(ω.1) - 1.1)
 * (ω.1, 9*(ω.1) - 1.9*(ω.1) - 1)
 * (ω.1, 9*(ω.1) - 1.1)
 * (ω.1, 9*(ω.1) - 1.9*(ω.1) - 1)
 * (ω.1, 9*(ω.1) - 1.9*(ω.1) - 1)

But (ω.1, 9*(ω.1).1) is again non-standard form, since it does not satisfy the Rule 3. Standard form is (ω.2).

By the way, there is maximal number in this notation:
 * (ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1, 9*(ω.89) - 3.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1) - 1, 9*(ω.89) - 4.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1, 9*(ω.89) - 3.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1) - 1) - 1, 9*(ω.89) - 5.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1, 9*(ω.89) - 3.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1) - 1, 9*(ω.89) - 4.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1, 9*(ω.89) - 3.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1, 9*(ω.89) - 2.9*(ω.89, 9*(ω.89) - 1.9*(ω.89) - 1) - 1) - 1) - 1) - 1, ...)

Now let L=ω2, ω2[n] = ω + n, ω[n] = ω.

Then this forementioned maximal number is (ω + 1.1) - 1. Maximal number of this new notation is
 * (ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1, ω + 9*(ω2.89) - 3.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1) - 1, ω + 9*(ω2.89) - 4.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1, ω + 9*(ω2.89) - 3.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1) - 1) - 1, ω + 9*(ω2.89) - 5.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1, ω + 9*(ω2.89) - 3.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1) - 1, ω + 9*(ω2.89) - 4.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1, ω + 9*(ω2.89) - 3.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1, ω + 9*(ω2.89) - 2.9*(ω2.89, ω + 9*(ω2.89) - 1.9*(ω2.89) - 1) - 1) - 1) - 1) - 1, ...)

So, this notation has maximal number. But decimal notation is unlimited, that is decimal notation has no maximal number.

To make our notation unlimited, we can modify definition of otn:
 * otn(L) = ∞
 * otn(L[n]) = 0
 * otn(L[n1][n2][n3]...[nm]) = max(ni) for m > 1

And I found an error:
 * otn(L[n1][n2][n3]...[nm]) = max(ni)

but must be
 * otn(L[n1][n2][n3]...[nm]) = max(n1 - 1, n2 - 1, n3 - 1, ..., nm)

Because let L = ω2, ω2[n] = ωn, ω(m + 1)[n] = ωm + n.

If otn(L[n1][n2][n3]...[nm]) = max(ni), then otn(ω89 + 1) = otn(ω90[1]) = otn(ω2[90][1]) = max(90, 1) = 90, so (ω89 + 1.1) is non-standard form, and there is gap before (ω2.1) = (ω90.1) = (ω89 + 90.1) without standard forms.

But if otn(L[n1][n2][n3]...[nm]) = max(n1 - 1, n2 - 1, n3 - 1, ..., nm), then otn(ω89 + 1) = otn(ω90[1]) = otn(ω2[90][1]) = max(89, 1) = 89, so (ω89 + 1.1) is standard form.

Fixed unlimited version of otn:
 * otn(L) = ∞
 * otn(L[n]) = 0
 * otn(L[n1][n2][n3]...[nm]) = max(n1 - 1, n2 - 1, n3 - 1, ..., nm) for m > 1