One of the desiderata of the course is for the students to learn how to answer questions like: "is it possible using computational model x to do y?".

The general strategy to answer that type of question is to think about the formal definition of computational model x, and to think whether it's possible to implement y with x, or whether doing y with x contradicts what we know about x in some way. Answering this type of question is exactly what we aim that you learn and we ask in the HW/quiz/exam.

So, regarding your question - one should think: "how does the NTM **know** what type of input is on the tape?" if the NTM can check first what type of input it is faced with - then there is no problem: it will check the type of input and behave differently for each type of input (if x>1 then x++ else x—), but if the property you ask about the input is non-computable, then the NTM can never check what type of input. For example, we shall see that a question like: "is the input a coding of TM that always runs into an infinite loop?" is not computable and therefore no NTM can handle that.

When describing an NTM, is it possible to say that for some inputs it acts like M1 and for other inputs it acts like M2?

]]>