User blog comment:Mh314159/Natural number recursion - first 4 rule sets/@comment-35470197-20191019143654/@comment-35470197-20191024131303

To begin with, I need to prepare a presice convention. The diagonalisation of a sequence \(f_0(x),f_1(x),f_2(x)\ldots\) of functions is the new function \(f_x(x)\).

If \(f_n(x)\) corresponds to an ordinal \(\alpha_n\) with respect to FGH, then the diagonalisation \(f_x(x)\) corresponds to the supremum of the sequence \(\alpha_0,\alpha_1,alpha_2,\ldots\) under a mild condition.

If \(alpha_n = \alpha + n\) for some ordinal \(\alpha\) independent of \(n\), then the supremum is \(\alpha + \omega\). If \(\alpha_n = \alpha + \omega \times n\), then the supremum is \(\alpha + \omega \times \omega = \alpha + \omega^2\). If \(\alpha_n = \alpha + \omega^n\), then the supremum is \(\alpha + \omega^{\omega}\). In this way, the diagonalisation gives "the replacement of \(n\) by \(\omega\)".

After understanding it, a strategy will be clearer: That is why it is better to get able to analyse functions. In order to diagonalise in a desired way, we need to know what sequence of constructed functions corresponds to a desired sequence of ordinals. Therefore I recommend you to enjoy analysing yours and others up to an elementary level such as \(\omega^2\).
 * 1) In order to add \(1\) or \(2\) to an ordinal \(\alpha\), you need to recurse as you did, i.e. iterate the power.
 * 2) In order to add \(\omega\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + n\) (or \(\alpha + 2n\)).
 * 3) In order to add \(\omega^2\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega \times n\).
 * 4) In order to add \(\omega^3\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^2 \times n\).
 * 5) In order to add \(\omega^{\omega}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^n\).
 * 6) In order to add \(\omega^{\omega+1}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^{\omega} \times n\).
 * 7) In order to add \(\omega^{\omega+2}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^{\omega+1} \times n\).
 * 8) In order to add \(\omega^{\omega \times 2}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^{\omega+n}\).
 * 9) In order to add \(\omega^{\omega^2}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^{\omega \times n}\).
 * 10) In order to add \(\omega^{\omega^{\omega}}\) to an ordinal \(\alpha\), you need to diagonalise a sequence of functions corresponding to \(\alpha + \omega^{\omega^n}\).

I note that there is a wall of \(\omega^{\omega^{\omega}}\) in this strategy, because you need to diagonalise a notation so many times. In order to avoid to "extend 100 times", we usually use the notion of an ordinal notation, which is a numerical notation performing in a similar way to ordinals.