User blog:Ikosarakt1/Explicit ruleset for trees up to psi(psi I(0))

Wythagoras once considered how to get hydras (or trees) past Buchholz ones. I can come up with a certain ruleset for it.

Definitions

 * # is a remainder of tree and they can be different in one expression as in (#)# unless we state that they are equal.
 * A(#) is the function which reduces tree to smaller one.
 * n is the number of steps (rule-applications) which has been passed.
 * # indicates # -leveled node (that is, one tree can express level of another).
 * Rn is the iterating function which was described by Chris Bird.
 * Three dots have obvious meaning and can alternate # sign in the rule 3 and indicate omitted (#)#'s in the rule 2.

Rule 1.
is the separated node (it has no root):

A( # ) = #

Rule 2.
has level 0, but it has a root:

A(( # )#) = ( # )#( # )#...( # )#( # )#

With n ( # )#'s.

Rule 3.

 * 1) are equal in the string below, ... must not contain ( # )# which have ( # )# in its subtree.

A((...#...)#) = Rn

Rm+1 = (...Rm...)

R0 = (......)

Rule 4.

 * 1) is non-empty, rules 1,2 and 3 don't apply.

A(( # )) = (A( # ))

Rule 5.
Rules 1-4 don't apply.

A(#) = A( # )

Examples


()

(()) =

((())) = () =

(((()))) = (()) = () = =

((((())))) = ((())) = (()) = () = ()()() = ()() = ...

([]) =

([]) = ([]) = () = =  =

([]) = ([]) = ([]) = (()) = () = ()()()()() = ...

([])() = ([]) = (()) = () = ()()()()

([])() = ([])() = ([]) = ([]) = (((()))) = ((()))

([])([]) = ([]) = ([]) = ((()))

([])([])([]) = ([])([]) = ([])([]) = ([])((()))

([]) = ([]) = ([])([]) = ([])((()))

([]) = ([]) = ([])([]) = ([])([])([])([])