如果hi,那么(ha)(ib)
如果(a)(b),那么[a][b]
归约规则也可以这么说。
在第n步中,
1~2、如果最右边的头部是白色头部x,那么设它的父顶点是y,去掉x。如果y不是根顶点,那么设y的父顶点是z,把t_y复制n遍,都附加到原hydra上,使得那些t_y的根顶点是z的子顶点。
3、如果最右边的头部是黑色头部x,那么找到它的最近白色顶点y,再找到y的最近“小于y”的顶点z。这里设一个“界限”:把t_y中的x换成t_y,得到界限。
31如果z小于界限,那么找到z的“使得y是u的子孙”的最近白色子孙顶点u,把t_u换成原t_y,再把t_y中的x换成t_u。
32如果z大于等于界限,那么重复n遍“把t_y换成t_z”,最后去掉t_y。
注意:31的添层规则中,添加层只能发生在一个白色顶点与它的父顶点之间,而不可发生在一个黑色顶点与其父顶点之间。
比较规则:
(a)[b]
如果a含有至少一个括号表达式,那么()(a)
如果hi,那么(ha)(ib)
如果(a)(b),那么(ha)(hb)
如果(a)(b),那么[a][b]
也就是说,黑色顶点总是大于白色顶点。
同色顶点比较,就从左到右比它们的子顶点。
不说顶点,应该是括号表达式(子树)
在(([([[][]])]))中,首先看最右边头部:[]是黑色,于是找到它的最近白色顶点:([[][]]),它的“界限”是([[]([[][]])])。
继续找([[][]])的最近“小于([[][]])”的祖先,得([([[][]])])。它小于界限,因此要用添层规则。
添层规则发生在([[][]])外(而不是[([[][]])]外!),于是最终hydra变成了(([([[]([[][]])])]))
一般说来,在一个白色顶点内(在一个()内),
添加一个黑色子顶点就意味着它的“类型”增加了1
添加一个[()]就是类型增加了w
添加一个[()()]就是类型增加了w2
添加一个[(())]就是类型增加了ww
添加一个[((()))]就是类型增加了www
添加一个[(([]))]就是类型增加了e_0
如果对应的序数是α,那么在白色顶点内添加子树[a]就是类型增加了wα。
特别感谢“hyps”大佬~,