For two binary strings x, y ∈ {0,1}*, of the same length, their Hamming distance dH(x,y) is the number of bits in which they differ. For example, dH(1111,1111) = 0, dH(0001,1111) = 3, and dH(1111001,1111011) = 1. As a negative example, observe that dH(11,1011) is not defined. Let L ⊆{0,1}* be a regular language.
(A) Consider the language L<1 = {x ∈ {0,1}* | ∃ y ∈ L s.t. dH(x,y) < 1}. Describe in words what the language L<1 is.
(B) Consider the following DFA M.
0.1
What is its language L = L(M)?
(C) By modifying the given DFA given above, describe an NFA that accepts the language L<1. Explain your construction. (For simplicity, you can assume L ≠∅). Specifically, consider a DFA for L, and describe in detail how to modify it to an NFA for L<1. (The description of the NFA does not have to be formal here.) Explain why the constructed NFA accepts the desired language.
(D) Prove that for any constant k, the language L<k is regular. Your proof has to be formal and provide all necessary details. (I.e., you need to provide an explicit formal description of the resulting NFA for the new language and prove that the NFA accepts the language L<k).