CSE596, Fall 2015 Problem Set 1 Due Wed. Sept. 16 Reading. Keep Dr. Ogihara’s notes and the text chapters 1 and 2 in mind. Then read the course webpage’s handout on the Myhill-Nerode Theorem, which fills the same purposes as the (in)famous “Pumping Lemma” but is better in my opinion (and also a UB-Cornell joint product in 1958). Also read problem (A) below. The first problem is “for discussion” but is not assigned for credit. Sometimes I will ask for a proof of having followed the discussion, which can be a brief “bottom-line conclusion” in your own words, and it will have 3 pts. of “checkoff credit” (graded for showing a basic understanding but not fullness or accuracy). Here, however, the bottom-line is a preview of things to come (much) later, so it is just FYI. It expands “Homework 1.4” in the Boolean logic section of Chapter 1. (A) “Homework 1.4” says to convert every Boolean formula into conjunctive normal form. Here is the answer —the real questions start where the answer ends: • Convert any part of the form A → B into (¬A) ∨ B. Here A and B might be big clumps of the formula, but not necessarily all of it. • Convert any part of the form A ↔ B into (A ∧ B) ∨ ((¬A) ∧ (¬B)). • Convert any part of the form A XOR B into (A ∧ (¬B)) ∨ ((¬A) ∧ B). Do similarly for NAND and any other logic gate other than AND, OR, NOT. • Use DeMorgan’s laws as the text suggests to convert any part of the form ¬(A ∨ B) into ((¬A) ∧ (¬B)) and ¬(A ∧ B) into ((¬A) ∨ (¬B)). Reduce any resulting case of ¬¬C into just C. The negation signs “sink in” until they are all directly on variables. We can write ¬x where x is a variable as x̄, whereupon we call both x and x̄ literals. Well, x̄is also called a “negated literal.” • The last step is to convert any part of the form A ∨ (B ∧ C) into (A ∨ B) ∧ (A ∨ C). This “brings out ∧.” • When you can’t do the last step anymore, it means all the ∧ gates are on the outside, with all the ∨ gates inside clumps called clauses whose only parts are (possibly negated) literals. You can also cut down parentheses so thay are only bracketing each clause. That’s the definition of conjunctive normal form (CNF). An example of a formula in CNF is (x1 ∨ x̄2 ∨x3 )∧(x̄1 ∨x2 ∨x3 ). It is not a tautology—it can be made false by the assignment x1 = 0, x2 = 1, and x3 = 0. This kills the first clause, and because the ∧ gate is outside, the second clause cannot help. The formula is, however, satisfiable—that is, its negation is not a tautology (either). The easiest way to satisfy it is to set x3 = 1, whereupon you don’t even have to care about the values of the other variables. But you can also satisfy it with x3 = 0 provided you give the same value to x1 , x2 . Now for the questions: (a) What must happen for a CNF formula to be a tautology? (b) What happens when you apply the algorithm to the following two formulas? OK, this is tedious to do directly by the algorithm, but if you can tell whether either of them is a tautology you might find shortcuts. ((x ∧ y) → z) ←→ ((x → z) ∧ (y → z)) ((x ∧ y) → z) ←→ ((x → z) ∨ (y → z)) (c) What happens when you apply the algorithm to a formula that is already in disjunctive normal form (DNF), such as this one? (r ∧ s ∧ t) ∨ (u ∧ v ∧ w) ∨ (x ∧ y ∧ z). (d) The bottom line is that conversion to CNF provides a foolproof way to tell whether a formula is a tautology, but is the algorithm practical? For-credit portion (1) Design a deterministic finite automaton with alphabet {0, 1} to recognize the language of binary numbers (in standard binary notation with leading zeroes allowed) that are multiples of 5. It is your choice whether you prefer to include the empty string λ in this language, or not—you must state your choice clearly. (Design Hint: Imitate the process of binary long division by 101 with states denoting the five possible “carry values.”) Then say what would happen if you represented the given number in 2-adic notation rather than standard binary. If you have used a logical design then the change might not be too painful. . . (18 + 9 = 27 pts.) (2) Consider regular expressions without Kleene stars—or equivalently, consider expressions written as unions and concatenations of languages, such as we did in writing the distributive law as A · (B ∪ C) = (A · B) ∪ (A · C). Define a notion of “disjunctive normal form” for such expressions and give an algorithm for converting arbitrary expressions with just union and concatenation to that form. Suppose the basic languages in our expressions are just {c} for characters c in the alphabet Σ, possibly including also the languages {λ} and ∅ “just for show” (they won’t change anything). Note that without the Kleene star operation you can’t ever get an infinite language this way. But show that every finite language L has such a “star-free” expression, indeed one in your disjunctive normal form. Intuitively, how does this form relate to the set of strings in L? (18 pts. total, for 45 on the set)