(The presentation that follows is a very light introduction. For more austere results, consult Paper 6).

__Main Problem:__

If F(x,n) = x^{xx...}
iterated n-1 times, is there a definition of a *continuous* function identical to F, not limited
to integral values of n, and valid for larger values of x (Greg Kavalec in sci.math)?

We need some consistent notation. One such commonly used notation for iterated exponentials, is the *hyper4* or *tetration*
operator described in Dave L. Renfro's Big Number article in sci.math and Robert Munafo's pages. The author will sometimes use the following alternative notation concurrently, because it bares well with html and because the extension that is about to be constructed follows some sort of natural symmetry with regular exponents:

^{n}m = m^{mm...m} (n m's).

Following the standard convention for iterated exponentials, the above is essentially equal to:

^{n}m = m^{(m(m(m...(mm)...)))} (n m's).

Whenever the above notation becomes insufficient in describing the
*hyperexponent*, as in cases where a simple superscript is not enough to indicate it, we will use the regular notation,

m^^n = ^{n}m (n m's).

Now that hyperexponential notation has been defined as such, we can define iterated *hyperexponential towers* to aid us in some extended cases
as follows:

n^^n^^...^^n = n^^(m^^(m^^(m^^...(m^^m)...))).

In Greg's notation, above, then, F(x,n) = ^{n}x (n x's) and his question really amounts to extending ^{n}x to ^{y}x, with y real or possibly complex. If we want to have any hope of extending the above notation to reals, we should try to define first hyperexponentials with rational hyperexponents
and then pass onto the reals via Cauchy sequences or density.

First then, we need to define: ^{(1/n)}m = m^^(1/n) (the
n-th *hyperroot* of m).

The only natural choice here, is to think in terms of using a symmetric definition to that of the regular n-th root of a number. So, roughly speaking,

^{(1/n)}m = (some object), iff m = ^{n}(some object).

For given c in C, c=/=0, then, define ^{(1/n)}c to be "the object" z (possibly in C and perhaps not *singly* defined, but we'll take care of this later) which satisfies:

c = ^{n}z. (1)

That is:

c = z^^n (n z's). (2)

For n=2, equation (1) has a nice solution, which is reminiscent of the fixed points of the iterated exponential in the first article. The solution is:

z=Log(c)/W(Log(c))^{[1]} (3)

Since the Lambert's W function has infinitely many branches, equation (1) has really an infinite number of solutions, but for our purposes, let us stick with the principal branch of the W. Let us verify that this z satisfies (2) for n=2:

Using the definition of the W, z can be rewritten as z=e^{W(Log(c))}, so plugging this into (2) we get ^{2}z=z^{z}=[e^{W(Log(c))}]^{[eW(Log(c))]} =e^{W(Log(c))*eW(Log(c))} (3). Note that the exponent is nothing more than Log(c) by the definition of the W again, so (3) equals c.

For n>2 the situation is more complicated. In order to understand exactly what's going on, we first need to define a suitable function in the spirit of Greg's F, above, which we can fall back onto, when we have problems with our definitions (assume all good things, Log is the principal branch of the complex log function, use careful inductive definitions on n's, etc).

Let f then be defined as follows:

f(z,w,n) = {z^{w}, iff n=1, z^{f(z,w,n-1)} iff
n>1} (4)

f is a general purpose complex exponential, in which we can control the base, the exponent and the level of hyperexponentiation. Its use will come forth later when we examine rational powers. So:

f(z,1,1) = ^{1}z = z,

f(z,1,2) = ^{2}z = z^{z},

f(z,1,3) = ^{3}z = z^{(zz)},

etc, while,

f(z,w,1) = z^{w},

f(z,w,2) = z^{zw},

etc.

Our aim is to show:

__Lemma #1:__

Let c =e^{(-1/e)}. Then, given n>2 in N and y in R,
such
that y >= f(e^{W(Log(c))},c,n-2), the equation ^{n}z
=y admits (at least) one solution for z.

__Proof:__

For n=2, the point: z_{2} = Log(c)/W(Log(c)) given by (3)
above satisfies the equation and the hyperexponential equation ^{2}z=c admits a (at least one) solution, so we are done.

For n>2, the situation is much more complex, but can be resolved, with some effort. Let us look at the following recurrence:

a(2)=^{2}z, a(n) = z^{a(n-1)}. (5)

Now write:

z=e^{Log(z)}

=e^{W(Log(z)*eLog(z))}

=e^{W(z*Log(z))}

=e^{W(Log(zz))}

=e^{W(Log(a(2)))}.

Accordingly, ^{n}z=f(e^{W(Log(zz))},z^{z},n-2). Calling a(2) = b, recurrence (5) gets transformed into:

a(2) = b, a(n)=(e^{W(Log(b))})^{a(n-1)}= e^{a(n-1)*W((Log(b))} (6)

If we can determine a suitable b in recurrence (6) above, then we are
essentially done, since we know that z^{z}=b=a(2) and then
z is given by (3), z=e^{W(Log(b))}. Such a z will satisfy our recurrence (5).

First, we have to restrict our y suitably, so we don't have a wild goose chase on the b. Note that W(w) is real-valued for w in [-1/e, +∞). Since our final z will be given via (3), we have to have:

e^{W(Log(b))} in R. For this to happen, we must force Log(b) in [-1/e, +∞), which gives us a lower calculation bound for b: b=e^{(-1/e)}.

Having a lower bound for b, it is easy to calculate all the y's for which we hope recurrence (6) will have a solution for b.

Now we are ready for the heavy artillery. The author will quickly go over the following lemmas, which are almost trivial.

First, it is obvious that when b ranges in [e^{(-1/e)},+∞),
then z ranges in [1/e,+∞).

__Lemma #2:__

For fixed n, the corresponding function ^{n}x is continuous on [1/e,+∞).

__Sketch of Proof:__

By induction on n. All the partial iterates, ^{1}x, ^{2}x,
^{3}x,...^{n}x
are continuous on the indicated interval. The inductive step can be
dealt with by considering the decomposition,
^{k+1}x=e^{{Log(x)*kx}}, which is itself a composition of continuous functions on the indicated interval with the aid of the induction hypothesis.

__Lemma #3__

For fixed n's the corresponding function ^{n}x is strictly
increasing on [1/e,+∞).

__Sketch of Proof:__

By induction on n. The n=2 case has a little trickery in it,
in that the function ^{2}x needs to be examined closely. The
minimum
of the function occurs at x=1/e, and this is precisely the point we are
interested in. Right of this point, ^{2}x is increasing. This
takes
care of the step n=2. For the inductive step, we have ^{k}x_{1}<^{k}x_{2}, by the induction hypothesis, consider again
the decomposition ^{k+1}x=e^{{Log(x)*kx}} and
note that the functions exp and Log are increasing respectively.

Continuing with the proof of Lemma #1:

If c=e^{(-1/e)}, then the minimum y in recurrence (6) will
be f(e^{W(Log(c))},c,n-2) (which is also f(1/e,1,n)). Now let h(x) = f(e^{W(Log(x))},x,n-2)-y, as usual. Since y≥f(e^{W(Log(c))},c,n-2) by our hypothesis =>h(c)≤0. If h(c) = 0, we are done and b = c is a solution. If h(c)<0 then, we consider two cases.

- y>1. In this case, look at h(y
^{y}). We have, h(y^{y})=f(e^{W(Log(yy))},y^{y},n-2)-y =^{n}y-y>0. - y<1. Here, look at h(1). h(1)=1-y>0.

Now apply IVT and we get a b such that recurrence (6) is satisfied. Having this b at hand, equation (3) gives us the required z that satisfies our hyperexponential equation and Lemma #1 is proved.

__Corollary:__

For fixed n, the hyperroot function is continuous on [1/e,+∞).

__Sketch of Proof:__

By Lemma #2, for fixed n the corresponding function ^{n}x is continuous on [1/e,+∞) and the hyperroot function ^{1/n}x
is an inverse of ^{n}x on [1/e,+∞), since f(^{1/n}x,1,n)=x. Result follows by Theorem 3 on Spivak's page 220.

Let's now see what Maple can do with our results.

> restart;

> W:=LambertW;

> a:=proc(n)

> option remember;

> global b;

> b:='b';

> if n=2 then b

> else exp(a(n-1)*W(Log(b)));

> fi;

> end:

> f_N:=proc(z,w,n)

> option remember;

> if n=1 then z^w;

> else z^f_N(z,w,n-1);

> fi;

> end:

so,

>b:='b'; #clear previous b

>b:=fsolve(a(4)=3,b,1..infinity);# get b

b := 2.011649992

> z[4]:=exp(W(Log(b))); #get z, solution to hyperexponential
equation

z[4] := 1.563627903

> evalf(f_N(z[4],1,4));

2.999999996

Cool. So 1.563627903 is the hyperroot of order 4 of the number 3. Let us now construct the full hyperroot function:

> hr_N:=proc(y,n)

> global b;

> local c, minb, miny;

> b:='b';

> minb:=evalf(f_N(exp(1),-exp(-1),1));

> miny:=evalf(f_N(exp(W(log(minb))),minb,n-2));

> if evalf(y)>=miny then

> if n<>0 then

> b:=fsolve(a(n)=y,b); # but see ^{[2]}, below

> evalf(exp(W(log(b))));

> else

> ERROR(`division by zero.`,n);

> fi;

> else

> b:=fsolve(a(n)=y,b,complex);

> evalf(exp(W(log(b))));

> fi;

> end:

Let's see some examples:

> evalf(hr_N(134,3));

2.238885474

And the verification:

> evalf(f_N(",1,3));

134.0000001

> evalf(hr_N(2,4));

1.446601432

> evalf(f_N(",1,4));

1.999999997

> evalf(hr_N(8170554,3));

2.738985962

> evalf(f_N(",1,3));

.8170554501 10^{7}

> evalf(hr_N(89,4));

1.861796185

> evalf(f_N(",1,4));

89.00000035

> evalf(hr_N(90,5));

1.716715302

> evalf(f_N(",1,5));

89.99999930

> evalf(hr_N(0.124,5));

1.839576693 - .2214100457*I

> evalf(f_N(",1,5));

.1239999998 + .3218906008 10^{-8}*I

Let's now see the graph of the hr function:

> with (plots):

> plot({'hr_N(x,3)','hr_N(x,4)','hr_N(x,5)'},x=1..10);

Here is another little interesting fact. Could we possibly make sense of lim_{n->+∞}^{1/n}x
for fixed x? Well, if we proceed through the definition ^{1/n}x=y<=>x =^{n}y, and extend it to include the
limiting
case, that is, lim_{n->+∞}^{1/n}x=y<=>x= lim_{n->+∞}^{n}y,
then since we know that lim_{n->+∞}^{n}y exists for y in [(1/e)^{e}, e^{(1/e)}] and is equal to e^{-W(-log(y))}, let us solve for y the following:

> solve(x=exp(-W(-log(y))),y);

Surprise!

y=x^{(1/x)}. Which is a partial inverse of the infinite hyperpower function F(x) = ^{∞}x = x^{xx...}. Therefore, if x is in [1/e, e], we can define as well:

lim_{n->+∞}^{1/n}x = x^{(1/x)}.

Which is another way of saying that on the indicated interval, the
hyperroot functions convergence point-wise to the function x^{(1/x)}.

Here then, are the graphs of the first 3 hyperroot functions (order 2 (red), order 3 (green) order 4 (blue), along with their limit (yellow)).

>plot({exp(W(log(x))),'hr_N(x,3)','hr_N(x,4)',x^(1/x)},x=evalf((exp(-1)))..evalf(exp(1)));

- Alternatively, z = e
^{W(Log(c))}, by the definition of Lambert's W function - The code for hr_N above, may go as high as n=6 under certain circumstances. If it fails for large values of y, replace the line b:=fsolve(a(n)=y,b); with b:=fsolve(a(n)=y,b,minb..infinity);. Sometimes Maple seems to need a default interval, although in some cases it doesn't help at all. The author has no idea why Maple misbehaves on this. Perhaps it internally has a more accurate value picking mechanism for the root finding algorithm.