make a' ∘ b = b' ∘ a hold where (a', b') = transform(a, b)