Computer Science 4602, Fall 2019
Assignment 3

Assigned: Wednesday, October 9
Due: Wednesday, October 16
  1. We proved that the Halting Problem is not computable. What is the name of the method that we used?

    1. Is every computable set also partially computable? Justify your answer.
    2. Is every partially computable set also computable? Justify your answer.
    3. Is {} computable? Justify your answer.
  2. Is it true that, for all languages A and B, if B is computable and AB then A is computable? (Hint. Consider B = Σ* for some chosen alphabet Σ. What are the subsets of B?)

  3. Prove that every finite language is computable.

  4. Are all infinite languages uncomputable? Explain why or why not.

  5. If Am B and B is a regular language, does that imply that A is a regular language? Explain.

  6. Show that language {p | φp(aa) = 0 and φp(bb) = 1} is not computable.

  7. There are algorithms to convert a DFA to an equivalent regular expression and to convert a regular expression to an equivalent DFA. You can assume that.

    Show that there is an algorithm that takes two regular expressions A and B and produces a regular expression C where L(C) = L(A) ∩ L(B). (Hint. Use DeMorgan's laws.)

  8. There is an algorithm to determine whether L(M) = {} where M is a DFA. You can assume that.

    Show that the set {(A, B) | A and B are regular expressions where L(A) ∩ L(B) = ∅} is computable.

  9. What is the definition of a mapping reduction from language A to language B? Define a mapping reduction, not mapping reducibility. (Mapping reducibility is relation ≤m.)

  10. Let H be the halting problem. If Am H, can you conclude that A is not computable? Explain briefly.

  11. Let A = {p | φp(bbb)↓} and H = {(p, x) | φp(x)↓}. Give a mapping reduction from A to H.

  12. Is language A in the previous problem computable? Justify your answer.

  13. Let A = {n N | n is prime}. Give a mapping reduction from A to A.

  14. Let A = {p | φp(aa)↓} and B = {p | φp(bb)↓}. Give a mapping reduction from A to B.

  15. Suppose that L is a language over alphabet Σ. The complement L of L is defined to be Σ*L.

    Language L is co-partially computable if L is partially computable.

    Suppose that A and B are two disjoint languages over alphabet Σ. Say that language C separates A and B if AC and BC.

    Show that, for every two disjoint co-partially computable languages A and B, there exists a computable language C that separates A and B.

    Hints. Suppose that A and B are disjoint co-partially computable languages. So A and B are partially computable. That tells you that there exist programs a and b so that A = Wa and B = Wb.

    1. Draw a Venn diagram of sets A, B and C, where C separates A and B. Remember that A and B are disjoint.

    2. If A and B are disjoint, what can you say about set A B?

    3. Using programs a and b, define language C by writing a program that computes it. How can your program for C be sure that it answers yes on every input that is in A and answers no on every input that is in B?