Given the misunderstandings shown on your solutions to HW#2, I wanted to make some general comments on solving this type of problem before you attack similar problems on the midterm. You should also review my specific comments on your own HW#2 and review the HW#2 solutions carefully.
You should be familiar with typing from programming and even more familiar with it from your work with the LPL software. The computer will simply not accept statements that do not type-check, and you should train yourself likewise so you don't make such statements in your answers. A single error of confusing one type with another can get you off the track forever. Once you are no longer addressing the correct question, what you say is no longer likely to help you much.
One particular place to be concerned with typing is with the input and output types of any machine or algorithm. For example, the language K is defined as {n: n in L(Mn)}. Thus to say that an object x is in K or not, x must be a number. And an alleged algorithm for K must take a number as input and return a boolean. A reduction from K to some other language A must take a number as its input and return an output appropriate for membership or non-membership in A.
For example, if a language A is r.e. then by definition there exists a Turing machine M such that A = L(M). You may use this machine to show that other things are computable, but you may not use it to say that anything is uncomputable. There will in general be many different machines with the same language, and saying that one machine does not do something tells you nothing about what another machine might or might not do.
Here are some standard types of questions and how to answer them:
Last modified 20 July 2003