Well for starters I could give a semi-answer to the "prove in both directions" recommendation.

Make an abstraction of what you would prove, and make it fit the following template:

P->Q

and

Q->P

(Turn what it seems natural to need to prove into an "if... then" statement, and then just reverse polarity).

I'll try to make a more useful contribution than that a bit later on.

«later on...» Looks like you're right to not understand what they could mean by 'prove in two directions'. This is a "one way" relationship if you follow the Cohen theorems. P -> Q, and that's it.

Look at page 376 for the basic setup, and then 380 for the theorem ...

... but you obviously

*did* look at it ...

Probably the only missing things is just stating explicitly that you're subscripting to ensure the uniqueness of the terminals and nonterminals of L

_{1} or L

_{2} in the combined language. And of course the subscripts don't change the underlying language at all.

A bidirectional proof would be that given P = L

_{1}, L

_{2} in {CFGs} and Q = L

_{1} L

_{2} in {CFGs} , P iff Q. Cohen doesn't seem to claim this, but it's perhaps not an unreasonable possibility? It would say in reverse that you can split any language into "factors", which would be a pretty handy thing to be able to do, ja?

«Another bloomin' edit???»

I think the instruction to pay heed to is : "

Write down ..."

A "write down" question assumes you could work it out just by inspection if you know your stuff. Any tips would be aimed at just helping you orientate yourself for the job of writing down the answer ... as you have done here. I think your answer is fine.