8413 and 8373 related changes

See #8413 and #8373 

- [x] check coverage, especially the handling of duplicate args by Xor and Equivalent

(If anybody would like to take this over, that would be fine with me.)
Do you see any disadvantages of this over a method like `neg`? It's something we keep talking about. Perhaps this opens the way to start moving on it?