打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

UPS

来自Googology Wiki

UPS(Upward Projection Sequence, 向上投影序列)是由 Optimism 最初创作,Alice 完善的记号,旨在以序列形式模拟向上投影。然而,UPS 在 SSO 以上是不理想的。

其极限表达式为 0,1,2*,3*,4*,... 。

定义

基础定义

一个 UPS 表达式由一组有序排列的项组成。

项:一个自然数与一个星号标记 αi=(vi,si) 。

父项:一个索引 i 的父项 p(i) 为最大的 j<i, 满足 vj<vi 。若不存在满足条件的项,则记作 p(i)=−1 。

正规化:一个序列 S=[α0,α1,...,αL−1] 的正规化序列为 norm(S)=[α'0,α'1,...,α'L−1], 其中 α'i=(vi−v0,si) 。

直接集与直接段

一个索引 i 的直接集定义为:

  1. i∈D(i) ;
  2. 若 p(j)∈D(i),sj=1 , 则 j∈D(i) 。

定义直接段结尾:令 M(i)=max⁡(t|t∈D(i)) 。若存在 k 使得 k>M(i),p(k)∈D(i) 且 vk=min⁡(vj|j>M(i),p(j)∈D(i)) , 找到其中索引最小的 k0 , 定义 end(i)=k0 ; 否则,定义 end(i)=M(i) 。

定义索引 i 的直接段为 seg(i)=[αi,αi+1,...,αend(i)] 。

字典序比较与投影比较

在进行任何一种比较之前,首先要将待比较序列的 αL−1 替换为 α*L−1=(vL−1,1) ,并进行正规化。

字典序比较记为 S<T , 为逐项首先比较数值(数值大者更大),其次比较星号(有星号者更大)。若前缀完全相同,则更长者更大。

投影比较记为 S<projT, 比较流程如下:

首先定义 S=[α0,α1,...,αL−1]的投影深度 dep(S)=vL−1 。若 dep(S)<dep(T) , 则 S<projT 。

若 dep(S)=dep(T)=0 , 则S=projT 。

若 t=p(L−1)≥0 , 则定义 S 的投影子序列为 proj(S)=norm([α't,αt+1,...,αL−1]) , 其中 α't=(vt,0) 。若 t=−1 , 定义 S 的投影子序列为空序列。

若 dep(S)=dep(T) 且 proj(S)<proj(T) , 则 S<projT 。若 dep(S)=dep(T) 且 proj(S)=proj(T) , 则 S=projT 。(注意此处为比较 proj(S) 与 proj(T) 的字典序)

父段与 Dropping 祖先段

定义索引 i 的父段起始索引为:ps(i)={−1,p(i)=−1;p(i),sp(i)=0;ps(p(i)),sp(i)=1.

若 si=0 , 通过以下流程计算出索引 i 的 Dropping 祖先段:初始状态下定义 c0=i,r0=i 。

循环进行以下步骤:

令 pn=ps(cn) 。若 pn=−1 ,则计算结束,得到 drop(i)=rn 。

否则,令 R=seg(rAn),P=seg(pAn) 。

情况1: R<P

不更新状态,向上追溯父段:令 cAn+1=pAn,rAn+1=rAn 。

情况2:R≥P 且 R<projP

更新候选为当前段,并向上追溯父段:令 cAn+1=pAn,rAn+1=pAn 。

情况3:R≥P 且 R≥projP

计算结束,得到 drop(i)=rn 。

坏根寻找

若 sL−1=1 , 以此流程确定坏根。

令 a=ps(L−1),d=drop(a) 。若 psm+1(a)=−1 , 则构建祖先段链 A=[ps(a),ps2(a),...,psm(a)] 。定义参考段 R=[αd,αd+1,...,αL−1] 。若 a=−1 , 表达式无坏根。

若 d=psk(a) , 则将 ps(a) 到 psk(a) 预先标记为跳过。

按顺序枚举祖先段链。

对于当前枚举到的 aj∈A , 若其被标记为跳过,则跳过本项。否则令 dj=drop(aj) , 并构造子序列 Tj=[αdj,αdj+1,...,αend(aj)] 。令 pss(a)=aj,pse(a)=dj , 定义 C=[pss(a),pss+1(a),...,pse(a)] 。

情况1:R<Tj

将 C 中所有索引标记为跳过,并继续枚举。

情况2:R≥Tj

找到最大的索引 q∈C 使得 seg(q)≤seg(a) , 计算结束,坏根 ρ=end(q) 。

若 A 中索引已耗尽而仍未得到坏根,则该表达式无坏根。

展开

定义 SA′=[αA0,αA1,…,αAL−2] 。

若 vL−1=0 , 则展开结果为 S′ 。

若 sL−1=0 , 定义坏根 ρ=p(L−1) 。若 sL−1=1 , 按上述流程确定坏根。

定义阶差 δ={0,sL−1=0;vL−1−vρ,sL−1=1. , 追加块 B+k=[αρ+k,αρ+1+k,...,αL−2+k] , 其中 αi+k=(vi+k⋅δ,si) 。

展开结果的基本列第 m 项为 SA′+BA+1+BA+2+…+BA+m , 其中 + 为序列拼接。

若表达式无坏根或坏根为 −1 , 则该表达式无法展开。

展开器

NE Rewritten 上可进行 UPS 的展开。