How to prove $n^x \in o(a^n)$ for $x>0$ and $a>1$? formally, without using limits. What is a clever and robust argument to show that for any $x>0$ and $a>1$, $n^x \in o(a^n)$, or equivalently; for all $c>0$, there is a $n_0 >0$ such that $n \geq n_0 \Rightarrow n^x < ca^n$?
Here's my argument; Since $\log_n(ca^n)$ is an increasing function for any $a,c >0$, there is always a $n_0$ such that  $\log_{n_0}(ca^{n_0}) > x$. As a result, for all $n \geq n_0$, $ca^n = n^{\log_{n}(ca^{n})} \geq n^{\log_{n_0}(ca^{n_0})} > n^x $.
I'm not really happy with this because it doesn't really give a precise and nice definition of $n_0$. Is my proof correct and is there a better/more clever way?
 A: You need your $\log_n(ca^n)$ not only to be increasing, but to actually go to infinity. Apart from that, your proof looks fine.
Here's how I would prove it. Lightly tweaking the notation a little*, we want to prove that $n^b = o(a^n)$ (for fixed constants $b > 0$ and $a > 1$), or in other words that for any given constant $c > 0$, we have $n^b < c a^n$ for sufficiently large $n$.
Just solve for $n$. Note that $n^b = e^{b \ln n}$, and $a^n = e^{n \ln a}$. So we want $e^{b \ln n} < e^{\ln c + n \ln a}$, or $b \ln n < \ln c + n \ln a$, or equivalently $n \ln a - b \ln n > -\ln c$. This is something you can see clearly is true for sufficiently large $n$: the LHS goes to infinity, while the RHS is a fixed constant. This you can now prove.

If you wanted a “precise and nice definition for $n_0$” (but really you shouldn't want it: note that the whole point of the $O$ notation is to suppress such information as nonessential), you could probably do the following: pick $n_0$ to be large enough such that:

*

*$b \ln n_0 < 0.5n_0 \ln a$ (this just means $n_0 / \ln n_0 > 2b/\ln a$)
and such that


*$0.5n_0 \ln a > -\ln c$ (this just means $n_0 > -2\ln c/\ln a$)
(That is, pick $n_0$ to be the maximum of the points where the two conditions hold.) Then for $n \ge n_0$, we have
$$ n \ln a - b \ln n > n \ln a - 0.5 \ln a > 0.5n \ln a > -\ln c$$
and therefore $c a^n > n^b$ as required.
(The way I arrived from “$n \ln a - b \ln n > -\ln c$” to this trick is to see that the LHS was basically $O(n)$, so the pesky thing being subtracted could be bounded by say $0.1n$ or $0.5n$… and carrying the factors along.)

If you want something even more explicit: to prove that $n^b < ca^n$ for sufficiently large $n$, assume without loss of generality that $c \le 1$ (otherwise if $c > 1$ we could just prove the stronger inequality with $c = 1$), pick
$$n_0 = e + \left(\frac{b + \ln(1/c)}{\ln a}\right)^2$$
so that, for all $n \ge n_0$, we have:

*

*$\dfrac{n}{\ln n} > \sqrt{n}$ (true for all $n > 1$), and

*$\sqrt{n} > \dfrac{b + \ln(1/c)}{\ln a}$
which together give
$$ \frac{n}{\ln n} > \frac{b + \ln(1/c)}{\ln a}$$
or
$$ n \ln a > b \ln n + \ln(1/c)\ln n > b \ln n + \ln(1/c) $$
and therefore
$$a^n > n^b (1/c)$$
which is the same as $n^b < c a^n$ that we wanted to prove.

But if you don't want a “precise and nice definition for $n_0$”, then the nicer way to prove this (and to think about this) would be to write something like:
$$n^b = e^{O(\ln n)} = e^{o(n)} = o(a^n)$$
after proving that each of these (one-way) equalities is generally valid. That is the whole power of the notation (or the idea of asymptotic analysis): to avoid having to thinking about specific constants where things happen, while still being completely formal and rigorous.

[* Footnote on notation: I used $b$ instead of $x$ to indicate that it is a constant. And I don't like the subset notation for $O$, so I will not indulge in that misguided pedanticism. You can read the treatments by de Bruijn and by Knuth to see that we lose much of the value of $O$ notation by definining $O(x)$ as a set; for example, statements like $e^{O(1)} = O(1)$ become harder to write. See also the “four reasons” for preferring “$=$” over “$\subseteq$”, on pp 446–447 of Concrete Mathematics: actually just work through the whole Asymptotics chapter and see if you still prefer thinking of $O(\ldots)$ as sets.]
A: Hint:
Let $k=\lceil x\rceil$. To prove $n^x=o(a^n)$, it is enough to prove $n^k=o(a^n)$.
Denote $u_n=\dfrac{n^k}{a^n}$. A standard argument to show $(u_n)\to 0$ consists in proving $\;\dfrac{u_{n+1}}{u_n}$ has a limit $\ell <1$.
Indeed, if this is the case, take any $r$ such that $\ell<r<1$. There exists an integer $N>0$ such that $\dfrac{u_{n+1}}{u_n}<r$ for all $n\ge N$. By a trivial induction there results that
$$0<u_n<u_N\, r^{n-N}=\frac{u_N}{r^N}r^n,$$i.e. if $n$ is large enough, $(u_n)$ is bounded from above by a geometric series of ratio $r<1$, which therefore converges to $0$. Hence, by the squeezing principle, $(u_n)$ converges to $0$.
Last step: let's check  $\dfrac{u_{n+1}}{u_n}$ conerges to a limit $<1$:
$$\frac{u_{n+1}}{u_n}=\frac{(n+1)^k}{a^{n+1}}\frac{a^n}{n^k}=\Bigl(1+\frac1n\Bigr)^k\frac1a\to 1\cdot\frac 1a<1\quad\text{by hypothesis.}$$
