What is known about the languages:
$$S_f = \{ [M] \ | \ \exists{x} \ \text{s.t.} \\ M \ \text{accepts} \ x \ \text{in} \ f(|[M]|) \ \text{steps}, \\ \ |x| \leq f(|[M]|) \}$$
I used to think that in order to check whether a string $[M]$ is in $S_f$ you cannot avoid simulating $M$ on all possible $x$ whose length is less than $f(|[M]|)$.
But for a polynomial $f$, verifying a candidate solution $x$ takes polynomial time so that $S_f \in NP$, while trying all of them is exponential, which would prove $P \neq NP$ ...
So my reasoning is spectacularly wrong, but I can't find out why:
- Maybe $S_f$ is in fact not in $NP$ when $f$ is polynomial?
- Maybe it is possible to check whether a string $[M]$ is in $S_f$ without trying most of the possible $x$?
- Something else?