Given $L$ is regular, the proof that $\mathrm{HALF}(L)$ is regular is pretty straightforward to me (e.g., #11 in this link): simply making a NFA and meeting in the middle with 2 original DFAs, the creation of such NFA proving it is regular.
However, what if you wanted to prove the 2nd half string is regular, not the 1st half of a string. That is,
$$\mathrm{2HALF}(L) = \{ x\mid yx\in L \text{ for some }y\text{ with } |y|=|x|\}\,.$$
Compare this to the standard
$$\mathrm{HALF}(L) = \{ x\mid xy\in L \text{ for some }y\text{ with } |y|=|x|\}\,.$$
I struggled on a solution, trying to use the same method as used on $\mathrm{HALF}(L)$ but can't seem to wrap my head around it.
As far as guessing a middle point, you mean by that guessing a start state for the language 2HALF(L), of which I assumed you have an epsilon transition to every non-accept state in the original DFA, and this new NFA will work? I am having trouble with that because it seems it would accept strings that were not right.
– QIANG Sep 12 '14 at 13:53