(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.