I'm writing my thesis on semidirect products. As an example, I am proving that the Rubik's cube group $G$ is the semidirect product of its orientation-preserving moves subgroup $C_P$ and position-preserving moves subgroup $C_O$. (In other words, elements of $C_O$ are moves that may change the orientation of a block, but not its position, and elements of $C_P$ are such that they may change the position of a block, but not its orientation.)
I already proved that they're both subgroups of $G$ and $C_O \lhd G$. My proof that $G = C_O \rtimes C_P$ goes like this:
We already know that $C_O \lhd G$. If $g \in C_O \cap C_P$, then $g$ is a move that preserves both position and orientation; the only such move is the neutral move, or the identical permutation. Therefore, $C_O \cap C_P = \lbrace 1_G \rbrace$. Therefore, all is left to show is that $G = C_OC_P$. Obviously, $C_OC_P \subset G$, so we only need to prove that $G \subset C_OC_P$. If $g \in G$, then there are only four possibilities: $g$ preserves both orientations and positions; $g$ preserves only orientations; $g$ preserves only positions; and finally, $g$ preserves neither. In the first case, $g$ is the identity which obviously belongs to $C_OC_P$. In the second case, $g$ changes the position of some blocks, so $g \in C_P$; since $1_G \in C_O$, we have that $g = 1_Gg \in C_OC_P$. In the third case, $g$ changes the orientation of some blocks, so $g \in C_O$; since $1_G \in C_P$, we have that $g = g1_G \in C_OC_P$. Finally, in the fourth case, since $g$ changes both orientation and position of some blocks, there must be $c \in C_O$ and $p \in C_P$ such that $c \neq 1_G$, $p \neq 1_G$, and $g = cp$, whence $g \in C_OC_P$. This concludes the proof.
Initially, I thought this was too brief to be right, and my supervisor also said I probably need more stuff. Specifically, I was told that while I'm quite correct that the identity permutation is the only position- and orientation-preserving move, my proof doesn't make clear why it is so. Similarly, the bit when I describe the only four possible cases for $g \in G$ is apparently not enough.
I had a look around in books and on the Internet, but couldn't find much. I did find this proof (Theorem 1 c), but it is basically a one-liner which seems to say the same things I say, just with fancier notation and more words. Honestly, after having thought about it time and again, I don't see why my proof wouldn't be sufficient. I'm basing my reasoning on the premise that all you can change in Rubik's cube is the position and orientation of a block, and nothing else. If the premise is correct, we only have four options (neither changes, both change, either one changes), and I think my reasoning should work. Can you guys spot any error, contradiction, omission, exception, etc? Thanks!