In[]:=
PacletInstall["Wolfram/Lazy"]
Out[]=
In[]:=
<<Wolfram`Lazy`
Represent ordinals as a lazy list with the conventional ordinal corresponding to its last element
In[]:=
ω=LazyRange[]
Out[]=
2ω=ω+ω
In[]:=
Join[ω,ω]
Out[]=
2
ω
In[]:=
Map[ω&,ω]
Out[]=
In[]:=
Catenate@Map[ω&,ω]
Out[]=
ω×=Catenate@Map[ω&,]
ω
ω
LazyNest[Catenate@Map[ω&,#]&,ω,Infinity]
Out[]=
In[]:=
Fold[Catenate@Map[ω&,#]&,ω,ω]
Out[]=
ω
ε
0
⋰
ω
ω
ω
ε
0
ω
LazyNest[LazyNest[Catenate@Map[ω&,#]&,#,Infinity]&,ω,Infinity]
In[]:=
ε0=Fold[Fold[Catenate@Map[ω&,#]&,ω,#]&,ω,ω]
Out[]=
ε
1
ε
1
ε
0
ε1=Fold[Fold[Catenate@Map[ε0&,#]&,ε0,#]&,ε0,ω]
ε
ω
εω=Fold[ε|->Fold[Fold[Catenate@Map[ε&,#]&,ε,#]&,ε,ω],ω,ω]