For those cases, I was thinking to create some dummy class to handle the issue, like `Evaluated(Add, Q.positive, Q.positive)` (totally making up syntax here). 

It's a compromise until we can get the core fixed. Actually for Add and Mul, we need a different construct anyway, because they are multi-argument, so we wouldn't represent them as `Q.positive + Q.positive` (unless we really do only care about Adds with two args). We would need some kind of AllArgs and AnyArgs objects. 

So in fact, I'm not even sure if there is a non-multiarg object that will reduce duplicate arguments that we need to worry about at this point.