What a subsequence is
A subsequence of (a_n) is what you get by choosing an infinite, strictly increasing list of indices n_1 < n_2 < n_3 < … and reading off a_{n_1}, a_{n_2}, a_{n_3}, …. You may skip terms but never reorder them and never run out. From a_n = (-1)^n the even indices give the constant subsequence 1, 1, 1, … and the odd indices give -1, -1, -1, ….
The cleanest fact about subsequences: if a_n -> L, then every subsequence also converges to L. The contrapositive is a divergence detector. If two subsequences head to different limits, the parent sequence cannot converge — which is exactly why (-1)^n diverges, since its even and odd subsequences go to 1 and -1.
Bolzano–Weierstrass
Here is the headline theorem. The Bolzano–Weierstrass theorem says: every bounded sequence of real numbers has a convergent subsequence. A bounded sequence may refuse to converge as a whole — like (-1)^n — but it can never wriggle free of having some part of it settle down. This is the sequence-level form of compactness on the line.
The cleanest proof is bisection plus the nested interval theorem. Trap the sequence in an interval, halve it, and keep the half that still holds infinitely many terms. The intervals shrink to a point, and a carefully chosen subsequence is funneled to that point.
Bolzano-Weierstrass by bisection.
Let (a_n) satisfy |a_n| <= M, so all terms lie in I_0 = [-M, M].
Step: split the current interval in half. At least one half
contains a_n for infinitely many n; call that half I_{k+1}.
-> I_0 ⊇ I_1 ⊇ I_2 ⊇ ... , each I_{k} of length 2M / 2^k.
Build the subsequence: pick n_1 with a_{n_1} in I_1; then pick
n_2 > n_1 with a_{n_2} in I_2 (possible: infinitely many to choose from);
in general n_{k} > n_{k-1} with a_{n_k} in I_k.
Nested interval theorem: the I_k shrink to a single point L.
For k large, I_k has length < e, and both a_{n_k} and L lie in I_k, so
|a_{n_k} - L| <= length(I_k) < e.
Hence a_{n_k} -> L. QEDLimsup, liminf, and where this leads
Bolzano–Weierstrass guarantees subsequential limits exist; the limit superior and limit inferior organize them. The limsup of (a_n) is the largest value any subsequence can approach, and the liminf is the smallest. For a bounded sequence both always exist, and a_n converges if and only if limsup a_n = liminf a_n — that common value is then the limit. For (-1)^n, limsup = 1 and liminf = -1, neatly recording why it diverges.