The crux of Letter Notation is the following array notation:

(a,b,c,...,k)|x

To write the rules for expanding such arrays, we'll use the following shorthand:

Y - represents any string of numbers seperated by commas (can also be empty).

Z - represents a string of ** zeros **seperated by commas (can also be empty).

n,k - nonnegative integers.

x - a nonnegative number (not necessarily an integer)

i - the integer part of x

f - the fractional part of x

And now for the rules. There are 8 of them:

1. For x<1: (Y)|x = 10^{x}

2. (Z,Y)|x = (Y)|x

3. 1|x = (1)|x = 10^{x}

4. (Y,n+1)|x = (Y,n)|(Y,n+1)|(x-1)

5. For 1<x<2: (Y,n+1,0,Z)|x = (Y,n,2,Z)|10^{f}

6. For x≥2: (Y,n+1,0,Z)|x = (Y,n,x,Z)|10

7. (Y,x)|10 = (Y,i+1)|(2×5^{f})

8. (Y,x,0,Z)|10 = (Y,i,10×f,Z)|10

And that's it for the array notation.

To get from this to letter notation, simply remember that each letter is a shorthand for a certain array:

Ex = 1|x = (1)|x

Fx = 2|x = (2)|x

Gx = 3|x = (3)|x

Hx = 4|x = (4)|x

Jx = (1,0)|x

Kx = (1,1)|x

Lx = (1,2)|x

Mx = (2,0)|x

Nx = (1,0,0)|x

And Px is a little trickier. It can actually be written as (1 (1) 0)|x, but I haven't defined that properly here. So I'll give the rules for P seperately:

Px = (1,0,1)|x for x<2

Px = (10^{f},[i zeros])|10

(remember: i is the integer part of x, and f is the fractional part of x).

And now we're done.