What I want is to be able to transform relations in a certain order for ease of reasoning (and introspection of intermediate values), but then have the optimizer transform it into whatever equivalent plan it can determine that gives the same results. Of course, there may be places where the steps taken will over-constrain the optimizer, but that's probably an acceptable risk (and as long as we're wishing for things here, that should preferably be detected).