Suppose L is regular, then there is a DFA M that accepts it.

We will define a DFA M' for L3 as follows:

M' = <Q, sigma, delta, q0, F'>

F' = {q | for every y that belongs to L. delta(q,y) belongs to F}

The set F' is well defined. Moreover, one need to check only strings of max length of n (number of states in M). Any string with length above n can be pumped to a string less than n.

]]>if x~y (~ of L) then for each z in sigma* xz in L <=> yx in L.

for each w in sigma*: xw in L3 if and only if for each u in L, xwu in L <=> ywu in L (since x~y, ~ of L, choosing z=wu) so for each u in L, ywu in L therefore yw in L3.

so, for each w in sigma* xw in L3 if and only if yz in L3.

conclusion: if x~y (~ of L) then x~y (~ of L3); so number of equivalent classes in L3 is less then or equals to number of equivalent classes in L

]]>Still, how can you prove the claim that every regular language L will result in reguar language L3

]]>