Is there a direct proof of the intermediate value theorem? I am interested in proving a weak version of the intermediate value theorem, specifically:

Suppose that $f$ is continuous on $[a,b]$, and $f(a)<0<f(b)$. Then, there exists a number $x\in(a,b)$ such that $f(x)=0$.

The usual proof of this uses contradiction. I am curious as to whether there is a proof that doesn't use contradiction, and also doesn't require too much machinery.
For reference, here is the argument presented in Michael Spivak's Calculus. We need the following lemma, which can be easily proven using the epsilon-delta definition of the limit:

Suppose that $\lim_{x \to \lambda}f(x)=f(\lambda)$, and $f(\lambda)<0$. Then, there is a $\delta>0$ such that if $|x-\lambda|<\delta$, then $f(x)<0$. Similarly, if $\lim_{x\to\lambda}f(x)=f(\lambda)$ and $f(\lambda)>0$, then there is an open interval containing $\lambda$ for which $f$ is positive. This lemma also applies to "one-sided continuity": if $\lim_{x \to a^+}f(x)=f(a)$ and $f(a)<0$, then there is a $\delta>0$ such that if $0\le x-a<\delta$, then $f(x)<0$; likewise, if $\lim_{x \to b^-}f(x)=f(b)$ and $f(b)>0$, then there is a $\delta>0$ such that if $0\le b-x<\delta$, then $f(x)>0$.

Consider the set $$E=\{x\in[a,b]:\text{$f$ is negative on $[a,x]$}\} \, .$$From the above lemma we know that $E$ contains values greater than $a$, and that all points sufficiently close to $b$ are not in $E$. Since the real numbers satisfy the least upper bound property, we know that $\sup E$ exists, and we will denote it as $\alpha$. Note that $\alpha$ satisfies $a<\alpha<b$. We can prove that $f(\alpha)=0$ by contradiction. If $f(\alpha)$ were smaller than $0$, then because $f$ is continuous at $\alpha$, there would be a $\delta>0$ such that if $|x-\alpha|<\delta$ then $f(x)<0$. This means that there would be numbers $x>\alpha$ such that $x\in A$, contradicting the fact that $\alpha$ is an upper bound of $E$. Similarly, if $f(\alpha)$ were greater than $0$, then there would be a $\delta>0$ such that if $|x-\alpha|<\delta$, then $f(x)>0$. This means that there would be numbers $x<\alpha$ that are not in $E$, contradicting the fact that $\alpha$ is the least upper bound of $E$. So $f(\alpha)$ must be equal to $0$, and since $a<\alpha<b$, the theorem is proven.
As you can see, this proof functions by ruling out the possibilities $f(\alpha)>0$ and $f(\alpha)<0$ using contradiction. Is there a way of directly showing that $f(\alpha)=0$ instead?
 A: Why not Cantor's Intersection Theorem (=CIT)? Let $\;f:[a,b]\to\Bbb R\;$ be continuous such that $\;f(a)f(b)<0\;$ Let $\;z:=\cfrac{a+b}2\;$ be the middle point of the interval $\;[a,b]\;$. If $\;f(z)=0\;$ we're done, otherwise either $\;f(a)f(z)<0\;$ or else $\;f(z)f(b)<0\;$ . Suppose WLOG that this happens on $\;[a,z]\;$ and denote this new subinterval as $\;[a_1,b_1]\;$ , meaning: $\;a=a_1\,,\,\,b_1=z\;$ , so that $\;f(a_1)f(b_1)<0\;$ .
Once again subdivide as above this interval and...etc., just as before. At the end you get all the conditions of CIT: a (decreasing) sequence of non-empty nested closed and bounded intervals whose sequence of lengths tend to zero and thus their interesection is one single point, say $\;c\;$:
$$\bigcap_{n\in\Bbb N}[a_n,b_n]=\{c\}$$
Well, now...what is $\;f(c)\;$ ? Exactly, it must be $\;f(c)=0\;$ since:
$$f(a_n)\nearrow f(c)\;,\;\;\;f(b_n)\searrow f(c)\implies (\text{remember!}\;0>)\; f(a_n)f(b_n)\xrightarrow[n\to\infty]{}f(c)^2\le0$$
But of course also trivially $\;f(c)^2\ge 0\;\implies f(c)^2=0\iff f(c)=0\;$ and we're done, directly and without contradiction.
Just to make sure we understand: where did we use continuity of $\;f\;$ in the above ?
A: I just realised that if the proof is worded more carefully, then it is a proof by contraposition, not contradiction. I thought that this was worth mentioning because many mathematicians have a preference for contraposition over contradiction (see here). Let $$E=\{x\in[a,b]:\text{$f$ is negative on $[a,x]$}\} \, .$$It is not difficult to prove that (a) if $\alpha=\sup E$, then $f(\alpha)\le0$, and (b) if $\alpha=\sup E$, then $f(\alpha)\ge0$. This method is still not as "direct" as I would like, but I thought it would be worth mentioning anyway.
The contrapositive of (a) is "if $f(\alpha)>0$, then $\alpha\ne\sup E$". Since $f$ is continuous at $\alpha$, there is an open interval $I$ containing $\alpha$ such that for all $x\in I$, we have $f(x)>0$. Let $x_0$ be a member of $I$ satisfying $x_0<\alpha$. Since $x_0$ is an upper bound of $E$, we find that $\alpha\ne\sup E$.
The contrapositive of (b) is "if $f(\alpha)<0$, then $\alpha\ne\sup E$". Since $f$ is continuous at $\alpha$, there is an open interval $I$ containing $\alpha$ such that for all $x\in I$, we have $f(x)<0$. Let $x_0$ be a member of $I$ satisfying $x_0>\alpha$. Since $x_0\in E$, $\alpha$ is not even an upper bound of $E$, and so $\alpha\ne\sup E$.
Combining (a) and (b) gives us $f(\alpha)=0$, as desired.
