# Why can't we simulate an NP oracle with an NP machine?

In this question : Does $NP^{NP}=NP$? ,
it says that one of the reason is that we don't know how to detect 'no' answers from the oracle.
Why is that true though? There is an NTM for any language L in NP, that runs in polynomial time. IIRC we can simulate the NTM with a deterministic TM M that runs in exponential time, that tries every non-deterministic option, and decides L... So why can't we simulate the oracle using that M in another NP machine?

Thanks.

• That answer says we don't know how the NP machine could detect 'no' answers from the oracle, not that we don't know how to detect them at all. ​ ​
– user12859
Apr 15, 2017 at 14:08
• So the problem is that even if we get a 'no' from the simulation, there could still be an accepting branch?
– Bar
Apr 15, 2017 at 15:23
• Yes. ​ ​ ​ ​ ​ ​ ​ Contrast that with how ​ ​ ​ $(\text{NP} \cap \text{coNP})^{\text{NP} \cap \text{coNP}}$ ​ = ​ $\text{NP} \cap \text{coNP}$ ​ ​ ​ and ​ ​ ​ $\text{NP}^{\text{NP} \cap \text{coNP}}$ ​ = ​ NP $\hspace{.14 in}$ are both known to hold, since for those oracles, there's a witness regardless of what the answer is. $\hspace{.24 in}$
– user12859
Apr 15, 2017 at 16:56

What you can try to do, in order to simulate the oracle call to $\mathcal{O}\in NP$ on a string $s$, is to run the nondeterminstic polynomial machine $M_\mathcal{O}$ on input $s$. If $M_\mathcal{O}$ returned "yes" then you know $s\in\mathcal{O}$, but if it returned "no", then you cant be sure, and you don't have enough resources to try out all possible branches in an NP machine.