CS 454, Section 001 Sonoma State University Spring, 2026
 
Theory of Computation
Instructor: Henry M. Walker

Lecturer, Sonoma State University
Professor Emeritus of Computer Science and Mathematics, Grinnell College

Although much of this course has been well developed in recent semesters, some details may be adjusted from semester to semester.
In particular, the Signature Project for this course satisfies SSU's Upper Division GE Area B Requirement for CS Majors, but details of this project likely vary from instructor to instructor and from semester to semester.
In particular,

Assignment on Decidability

  1. Decidability of Whether a Regular Language is Empty: Consider the question of whether a regular language L is empty. The following proof outline claims to prove this question is decidable.

    Proof Outline:

    Exercise: Is this proof outline valid? That is

  2. Decidability of Whether a Regular Language is Infinite: Consider the question of whether a regular language L is infinite, and consider these claims. Use the same notation (L, R, c) as in the previous problem.

    Proof Outline:

    Exercise: Is this proof outline valid? That is

  3. Decidability of Whether a Context Free Language is Empty or Infinite:

    1. Can the argument of Problem 1 be modified to show a context free language is empty? (One might need to compute c in a rather different way, but can the argument be made for some computable value of c?)
    2. Can the argument of Problem 2 be modified to show a context free language is infinite? (Again, one might need to compute c in a rather different way, but can the argument be made for some computable value of c?)
  4. Pythagorean Triples as Roots of a Polynomial: In number theory, a Pythagorean triple consists of three positive integers (a, b, c), so that a2 + b2 = c2. Also, a polynomial of three variables p(x, y, z) is a sum of terms as described during the discussion of Hilbert's Problems in Section 3.3. In this problem, we consider only polynomials with integer coefficients.

    Consider the language Polyint = {p(x, y, z) | p(x, y, z) is a polynomial with integer coefficients, such that there exists a Pythagorean triple (a, b, c) where p(a, b, c) = 0}

    Show that Polyint is Turing recognizable.

  5. Reviewing the Halting Problem: The Halting Problem is said to be "unsolvable".

    1. Outline the basic argument that shows that the Halting Problem is unsolvable.
    2. How is being "unsolvable" different from stating that we have not yet found an algorithm that solves the problem?
  6. How Far Can Automated Testing/Program Verification Go? A company believes there would be a strong market for a software package that would take the specifications of a problem and the code for a program as input and would prove whether the program meets its specifications in all cases. That is, the software package would prove whether or not a program always meets its specifications.

    Although the prospect of such software package might capture one's imagination, such can package cannot be successfully produced. Explain why an error-free version of this software is impossible to develop.

created Fall, 2023
revised Fall, 2023
Valid HTML 4.01! Valid CSS!
For more information, please contact Henry M. Walker at walker@cs.grinnell.edu.