Proving undecidability of a language with mapping reductions I'm referring to questions like this one:
Mapping reduction to show NeverHalt is undecidable
I understand with Turing reductions, you have to use oracle calls of the unknown language you're trying to prove is undecidable to solve a known undecidable language.
However, with mapping reductions, am I right in assuming these calls aren't needed? In addition, in the link provided, the solution pseudocode says
For input x:
  Simulate M for input w
    if it accepts, loop
    if it rejects accept x

How can you say &quot;if it accepts&quot;? How can you determine this, what if it loops forever and this is never found out? Why can you make such statements with a mapping reduction but not with Turing reductions? Could I make a statement like &quot;if M halts on w, do ...&quot;. I mentioned this to my teaching assistant and he said you can't make any statements like these unless you're accessing an oracle and doing a during reduction, but I see loads of examples which seem to show otherwise. Hopefully this makes sense
Usually, when the context of the statement &quot;if $M$ accepts $x$&quot; is in a loop simulating the execution of $M$ on $x$, we just mean to say that if the simulation stopped and $M$ accepted/rejected then do something, otherwise just continue simulating (the more precise way of writing this would be to say &quot;if $M$ accepted after $t$ steps then...&quot;).
Your pseudocode doesn't do anything magical, it simply checks at a specific point of the simulation whether or not $M$ already accepted/rejected.