Many times `_eval_transpose(arg)` does some check on the `arg` to see if it can evaluate to something simpler. Whenever it cannot evaluate to something simpler, it returns `None`. This tells the calling routine, look, I tried to simplify your input, but I couldn't. In this case the caller should construct `Transpose(arg)` and not return `None` as your code currently does.