This section is so long that it deserves its own blog post.
Valid expression[]
All valid expressions are the form of:
f_A(n)
,where A is an erdinal and n is a natural number excluding 0 and 1 (maybe it works for 0 and 1, but not needed. Who would plug in ZERO in the argument of FGH?).
And the definition of an "erdinal" is as follows:
- 0
- A+B, where A and B are erdinals and A cannot be written as X+Y for erdinals X and Y
- ψ_A(B), where A and B are erdinals and A is legural (of course this psi symbol can be replaced by a trident mark)
- C(A), where A is a 2nd order erdinal alloys (yes, 2nd only), where "erdinal alloy" means:
- An erdinal is by itself a 0th order erdinal alloy.
- (B_m)@C_m,...,(B_0)@C_0, where B_ij is an nth order erdinal alloy and C_ij is an erdinal, is an (n+1)th order erdinal alloy.
I changed the C 0-indexed because I found no reason to start the index with 1 in the M^M^w article.
Erdinal alloy[]
I define null erdinal alloy:
- 0 is the only null 0th order erdinal alloy.
- (n+1)th order erdinal alloy (B_im)@C_im,...,(B_i0)@C_i0 is null if and only if all B_im,...,B_i0 are null.
I define the recursively rightmost non-null erdinal expression (RRNNEE for short) of an erdinal alloy A as follows:
- If A is 0th order, the RRNNEE of A is A itself.
- Else, if A is null, the RRNNEE of A is 0.
- Else, if A is (n+1)th order:
- Let A=(B_m)@C_m,...,(B_0)@C_0. There must exists non-null B_i. If there are more than one, take one with the smallest index (rightmost in the expression).
- The RRNNEE of A is equal to the RRNNEE of B_i.
I define the recursively rightmost non-null erdinal expression linear list (RRNNEELL for short) of an erdinal alloy A as follows:
- If A is 0th order, the RRNNEELL of A is [A].
- Else, if A is null, the RRNNEELL of A is [0].
- Else, if A is (n+1)th order:
- Let A=(B_m)@C_m,...,(B_0)@C_0. There must exists non-null B_i. If there are more than one, take one with the smallest index (rightmost in the expression).
- The RRNNEELL of A is the RRNNEELL of B_i, but with (B_i)@C_i appended with the start.
An erdinal alloy is singular iff:
- It is 0th order, or
- It is the form of (A)@0, where A is singular
An erdinal is singular iff it is C(A), where A is singular.
Let W=C(((0)@0)@0), 1=ψ_W(0), and w=ψ_W(1). This is a shorthand and the formal expression should not contain such symbols.
Expansion[]
- If A=0: f_0(n) = n+1
- Else, Cough(A)=1: f_A(n) = f_〈A〉[0](f_〈A〉[0](...(f_〈A〉[0](n))...)), with n f_0's
- Else: f_ψ_A(B)(n) = f_〈ψ_A(B)〉[Cast(n)](n)
This definition is not perfect because I have not defined Cough, Cast, and 〈X〉[n]. I will define those below.
!!! SPAGHETTI MONSTER ALERT !!!
EVERYTHING BELOW IS INTELLIGENT-DESIGNED
Standardize[]
I will define 正(A) as follows. This is a simple standardization:
- If A=0: 正(0)=0
- If A=D+E:
- If Cmp(D,E)=-1: 正(D+E)=E
- Else: 正(D+E)=D+E
- If A=ψ_D(E):
- If E=ψ_D(F) where Cmp(Cough(F),D)=+1: 正(A)=正(ψ_D(F))
- Else: 正(A)=A
- If A=C(D):
- If D is null: 正(A)=C(0)
- Else, if there exists j such that:
- If there exists i such that:
- D=(E_n)@F_n,...,(E_0)@F_n, and E_(i-1),...,E_0 are all null, and E_i=(G_m)@H_m,...,(G_0)@H_0, and G_(j-1),...,G_0 are all null, and Cmp(A,G_j)=-1: 正(A)=G_j
- If there exists i such that:
- Else:
- If D=(E_n)@F_n,...,(E_0)@F_0, where E_n is null: 正(A)=正(C((E_(n-1))@F_(n-1),...,(E_0)@F_0))
- Else: 正(A)=A
"Next kurdinal"[]
上(A) returns the "Next kurdinal" of A.
- If A=0: 上(A)=C(0)
- If A=D+E:
- If D=0: 上(0+E)=上(E)
- Else, if E=0: 上(D+0)=上(D)
- Else:
- If Cmp(D,E)=-1: 上(D+E)=上(E)
- Else: 上(D+E)=上(D)
- Else:
- If 見(A) is C(((F)@0)@0): 上(A)=C(((F)@0)@01)
- Else: 上(A)=C((A+1)@0)
psi-to-C[]
I will define 見(A) and 小(A) as follows. 見 returns an erdinal and 小 returns either TRUE or FALSE. These are supposed to be the psi-to-C function:
- If A=0: 見(0)=0, 小(0)=TRUE
- If A=D+E:
- If D=0: 見(0+E)=見(E), 小(0+E)=小(E)
- Else, if E=0: 見(D+0)=見(D), 小(D+0)=小(D)
- Else:
- If Cmp(見(D),見(E))=-1: 見(D+E)=見(E), 小(D+E)=FALSE
- Else, if Cmp(見(D),見(E))=0: 見(D+E)=上(見(E)), 小(D+E)=TRUE
- Else: 見(D+E)=上(見(D)), 小(D+E)=TRUE
- If A=ψ_D(E):
- If 正(見(D)) is singular: 見(A)=正(見(D)), 小(A)=TRUE
- Let G=正(見(D))=C(H).
- If H is null: 見(A)=C(0), 小(A)=TRUE
- Else, let I the RRNNEE of D.
- If Cmp(Cough(I),1) = +1 or -1: ILLEGAL, this should not happen. so I let 見(A)=0, 小(A)=FALSE
- Else: I must be able to be written as J+1
- Let E=K_1+...+K_o+L_1+...+L_p, where:
- Cmp(L_1+...+L_p, D) = -1
- Cmp(K_o+L_1+...+L_p, D) = 0 or +1
- 小(A)=FALSE
- Let M is D, but all the entries (of all layers) in D after the RRNNEE is removed.
- M must end with ...(I)@N_1)@N_2)...)@N_n.
- If Cmp(Cough(N_1),1) = +1: ILLEGAL, this should not happen. so I let 見(A)=0, 小(A)=FALSE
- Else, if Cmp(Cough(N_1),1) = 0: 見(A)=C(P), where P is M but (I)@N_1 is changed to (J)@N_1, (ψ_D(K_1+...+K_o)+L_1+...+L_p)@〈N_1〉[0]
- Else: Let i the smallest 1<=i<=n such that N_i is not null.
- Let M=Q(R(SIT)@N_(i-1))@N_iU, where Q,R,S,T,U are not-necessarily-erdinal strings and the bold parentheses match.
- This is HARD, I mean SUPERHIPPOPOTOCALIMONSTROFRAGILISTICSESQUIEXPIALIPEDALIODOCIOUSPHOBICALLY LUNATIC
- 小(A)=FALSE
- If 正(見(D)) is singular: 見(A)=正(見(D)), 小(A)=TRUE
-->
- If A=C(D):
- 見(A)=A, 小(A)=FALSE
Coughinality[]
I define Cough(A) for an erdinal A as follows:
- If A=0: Cough(0)=0
- If A=D+E:
- If D=0: Cough(0+E)=Cough(E)
- Else, If E=0: Cough(D+0)=Cough(D)
- Else: Cough(D+E)=Cough(E)
- If A=C(D):
- If D is null: Cough(D)=W
- Else, Let E the RRNNEE of D.
- If Cmp(Cough(E),1)=0: Cough(A)=A
- Else: Cough(A)=Cough(E)
- If A=ψ_D(E):
- If Cmp(D,W)=0 and E=0: Cough(ψ_D(0))=1
- Else, if Cmp(D,Cough(E))=-1 or 0: Cough(ψ_D(E))=w
- Else, If 正(見(D)) is singular, where Cmp(Cough(F),1)=0:
- If Cough(E)=0: Cough(ψ_D(0))=ψ_D(0)
- Else, if Cmp(Cough(E),1)=0: Cough(ψ_D(E))=w
- Else: Cough(ψ_D(E))=Cough(E)
- Else:
- If Cmp(Cough(E),w)=-1: Cough(ψ_D(E))=ψ_D(E)
- Else, if Cmp(Cough(E),D)=-1: Cough(ψ_D(E))=Cough(E)
- Else: Cough(ψ_D(E))=w
If an erdinal A satisfies Cmp(Cough(A),A)=0, A is said to be legural.
Comparison[]
I define Cmp(A,B) for erdinals A and B as follows. It returns either -1, 0, or +1 (these are meaningless symbols). Cmp(A,B)=+1 is supposed to imply A>B, Cmp(A,B)=0 is supposed to imply A=B, and Cmp(A,B)=-1 is supposed to imply A<B.
- If A=0:
- If B=0: Cmp(0,0)=0
- Else: Cmp(0,B)=-1
- If A=D+E:
- If D=0: Cmp(0+E,B)=Cmp(E,B)
- Else, if E=0: Cmp(D+0,B)=Cmp(D,B)
- Else, if B=0: Cmp(D+E,0)=+1
- Else, if B=F+G:
- If F=0: Cmp(D+E, 0+G)=Cmp(D+E,G)
- Else, if Cmp(D,F) is not 0: Cmp(D+E, F+G)=Cmp(D,F)
- Else: Cmp(D+E, F+G)=Cmp(E,G)
- Else, if Cmp(D,B)=0: Cmp(D+E,B)=+1
- Else: Cmp(D+E,B)=Cmp(D,B)
- If A=ψ_D(E):
- If B=0: Cmp(A,0)=+1
- Else, if B=F+G:
- If Cmp(A,F)=0: Cmp(A,F+G)=-1
- Else: Cmp(A,F+G)=Cmp(A,F)
- Else:
- Let 一=見(A), 二=小(A), 三=見(B), 四=小(B)
- If Cmp(一,三)=-1: Cmp(A,B)=-1
- Else, if Cmp(一,三)=+1: Cmp(A,B)=+1
- Else:
- If B=ψ_F(G):
- If 二 and 四: Cmp(A,B)=0
- Else, if 二: Cmp(A,B)=-1
- Else, if 四: Cmp(A,B)=+1
- Else: Cmp(A,B)=Cmp(正(A),正(B))
- If B=C(F):
- If 二: Cmp(A,B)=-1
- Else: Cmp(A,B)=0
- If B=ψ_F(G):
- If A=C(D):
- If B=0: Cmp(A,0)=+1
- Else, if B=F+G:
- If Cmp(A,F)=0: Cmp(A,F+G)=-1
- Else: Cmp(A,F+G)=Cmp(A,F)
- Else, if B=ψ_F(G):
- Cmp(A,B)=-Cmp(B,A) where -(-1)=+1, -(0)=0, and -(+1)=-1. JUST LOOK AT ANOTHER SECTION
- Else, if B=C(F):
- If both D and F is null: Cmp(A,B)=0
- Else, if D is null: Cmp(A,B)=-1
- Else, if F is null: Cmp(A,B)=+1
- Else:
- Let D=G_m@H_m,...,G_0@H_0, F=I_n@J_n,...,I_0@J_0.
- Let i=m and j=n.
- While G_i is null, decrease i by 1.
- While I_j is null, decrease j by 1.
- If Cmp(H_i,J_j) is not 0: Cmp(A,B)=Cmp(H_i,J_j)
- Else, if Cmp(G_i, I_j) is not 0: Cmp(A,B)=Cmp(G_i,I_j)
- Else: Decrease i and j by 1 each.
- If i=-1 and j=-1: Cmp(A,B)=0
- Else, if i=-1: Cmp(A,B)=-1
- Else, if j=-1: Cmp(A,B)=+1
- Else: Go to 5.4.4.3 and repeat the process. (Yes, I know what I am doing and yet I seriously want to use GOTO.)
Fundamental Sequence[]
I define 〈X〉[n], where X and n are erdinals, as follows. This is the main part of this notation.
- If X=0: 〈X〉[n]=0
- If X=A+B:
- If A=0: 〈0+B〉[n]=〈B〉[n]
- Else, if B=0: 〈A+0〉[n]=〈A〉[n]
- Else: 〈A+B〉[n]=A+〈B〉[n]
- If X=ψ_A(B):
- If Cmp(A,Cough(B))=+1:
- If 小(X):
- If Cmp(Cough(B),1)=-1:
- 正(見(A)) must be able to be written as C(D@0).
- If Cmp(Cough(〈D〉[0]),w)=-1: 〈X〉[n]=n
- Else: 〈X〉[n]=〈〈D〉[0]〉[n]
- Else, if Cmp(Cough(B),1)=0:
- If n=0: 〈X〉[n]=0
- If n=1: 〈X〉[n]=ψ_A(〈B〉[0])
- Else, if n=D+1: 〈X〉[n]=〈X〉[D]+〈X〉[1]
- Else (when n is neither 0 nor 1+1+...+1): 〈X〉[n]=0
- Else: 〈X〉[n]=ψ_A(〈B〉[n])
- If Cmp(Cough(B),1)=-1:
- Else: 〈X〉[n]=n
- If 小(X):
- Else, if Cmp(A,Cough(B))=0:
- If n=0: 〈X〉[n]=ψ_A(〈B〉[0])
- If n=1: 〈X〉[n]=〈X〉[0+1]
- Else, if n=D+1: 〈X〉[n]=ψ_A(〈B〉[〈X〉[D]])
- Else (when n is neither 0 nor 1+1+...+1): 〈X〉[n]=0
- Else: 〈X〉[n]=〈ψ_A(〈B〉[ψ_Cough(B)(B)])〉[n]
- If Cmp(A,Cough(B))=+1:
- If X=C(D):
- If D is null: 〈X〉[n]=n
- Else, if Cmp(Cough(RRNNEE of D),1)=0: 〈X〉[n]=n
- Else, let D=(E_n)@F_n,...,(E_0)@F_0
- There must exist i such that E_i is not null and E_(i-1),...,E_0 are all null
- 〈X〉[n]=C((E_n)@F_n,...,(E_(i+1))@F_(i+1),(〈E_i〉[n])@F_i,(E_(i-1))@F_(i-1)...,(E_0)@F_0)
Cast[]
I will define Cast(n) as follows. It takes a natural number and returns an erdinal.
- Cast(0)=0
- Cast(1)=1
- Cast(n+1)=Cast(n)+1 for n>0