3.1 (c) 110
3.2 (d) 010
3.3 (b) Below r1 = r and r2 = s.
=
For (r1 + r2)* represent all strings
consisting of concatenation of any number of strings of r1 and
r2 in any order. Hence r1(r1 + r2)*
represent all strings of r1(r1 + r2)*(r1(r1 + r2)*)*.
Conversely
r1(r1 + r2)*(r1(r1
+ r2)*)* represent all strings of
r1(r1 + r2)*, because you don't have to use anything from (r1(r1
+ r2)*)*.
3.8 (b)
3.9
(d)
(f)
3.10 (a) Strings of 0's and 1's containing an odd number of 1's.
3.17 (d) (I) \Lambda
(II) a(a+bb*a)*
(III) a(a+bb*a)*b(b)* = a(a+b)*b
(IV) b(a + b)*