I asked a question similar to this previously but I realized that what I was trying to prove was false. Then I changed the thing I was trying to prove but it was still false. I also accepted an answer that proved my theorem in a special case but that was not true in general. I am trying to prove it again and people stopped commenting on my previous question because I accepted the answer.
So I am asking a new question.
The correct version of the theorem I want to prove is "Suppose that $f$ is continuous on $[a,b]$, $f(a)<0$, and $f(b)>0$. Then $\exists c\in (a,b), \exists \delta>0, \forall x\in (c-\delta ,c),\ f(x)\le 0$ and $\forall x\in (c,c+\delta ),\ f(x)\ge 0$.
I tried to prove this by contradiction. I assumed that $\forall c\in(a,b), \forall \delta>0, \exists x\in(c-\delta,c), \ f(x)>0$ or $\exists x\in(c-\delta,c), \ f(x)<0$.
By Strong IVT I know that $\exists a_1\in (a,b), \forall x\in (a,a_1),\ f(x)<0$. Also by Strong IVT I know that $\exists b_1\in (a,b), \forall x\in (b_1,b),\ f(x)>0$. I see that $f(a_1)=0$ and $f(b_1)=0$.
I also know to prove that $a_1$ satisfies what I want if $a_1$ is an isolated zero.
Similarly, if $b_1$, I know to finish the proof (in both cases I don't need a proof by contradiction).
Then there is the case where neither $a_1$ or $b_1$ are isolated. Everything I write past this is speculation. Because $f$ is continuous on $[a,b]$ and $[a,b]$ is compact, I know that $f$ is uniformly continuous on $[a,b]$. Which means that I know that $\varepsilon>0$, $\exists \delta>0$, $\forall x,y\in[a,b]$, $|x-y|<\delta \Longrightarrow |f(x)-f(y)|<\varepsilon$.
What I tried to do is "walk" from $a_1$ to $b_1$ to show that for some point $x$ in $(b_1,b) \ \ f(x)<0$. I attempted this with the following (insufficient) process. I chose $\delta_n$ such that $\forall x\in[a,b], |x-y|<\delta_n \Longrightarrow |f(x)-f(y)|<-f(a)\cdot2^{-n}$. Then I defined a sequence $x_n$ such that $x_1=a_1$ and $x_n=x_{n-1}+\text{min}\left\{\frac{1}{2}\delta_n,(b-a_1)2^{-(n+1)}\right\}$. The first term in the minimum ensures that $f(x_n)\ge -f(a)\cdot2^{-n}>0$ while the second term prevents $x_n$ from leaving the interval $[a,b]$. The problem I see with this attempt is that if $x_n$ does not enter $(a,b)$ for a finite $n$ (which would occur if $\delta_n$ were too small) then I wouldn't get a contradiction.
Perhaps the correct approach is to use the fact that I am considering the case where $a_1$ and $b_1$ are not isolated. If someone can show me how to prove that $f(x) = |x| \sin(1/x)$ if $x\ne 0$ and $f(0)=0$ satisfies "$\exists c\in (-1,1), \exists \delta>0, \forall x\in (c-\delta ,c),\ f(x)\le 0$ and $\forall x\in (c,c+\delta ),\ f(x)\ge 0$ or give me a hint for such a proof then I think I can apply similar reasoning to the general case.
I know that it is possible to show that this holds by finding a $c$ where $f(c)=0$ and $f'(c)>0$, but I want to prove this without assuming that my function is differentiable.
Unfortunately I believe your proposition is false. Your question is intimately connected to this question:
Continuous function changing sign on Cantor set
The basic issue is that there is a continuous function whose set of points at which it changes sign is contains no isolated points which would be required in order for your proposition to be true.