Philip Martin wrote: > Philip Martin <philip.mar...@wandisco.com> writes: > >> alter(.) >> alter(A/B) >> alter(X/Y) >> rotate(A, X/Y/Z) >> rotate(X, A/B/C) >> alter(A) (pre-rotate X/Y/Z) >> alter(X/Y/Z) (pre-rotate A) >> move(X/Y/Z/B, A/B) >> alter(X) (pre-rotate A/B/X) > > Oops! A/B/C > >> alter(A/B/C) (pre-rotate X) >> move(A/B/C/Y, X/Y)
I just found a solution to your (A/B, X/Y) => (Y/X, B/A) case, using sequential operations: swap(A/B, X) mv(A, X/Y) mv(X/Y/X/Y, A) mv(X/Y/X, A/B) - Julian