I wonder if this logic is already implemented somewhere else.  Aaron mentioned `solve_inequality` in the previous PR.  Perhaps there is useful logic there or somewhere nearby?

Unfortunately we often write the same mathematical logic in a few places.  This makes it difficult to correctly navigate and use this code generally.  The logic that you're writing seems correct but it might be more general than just the assumptions module.  Someone else may have done it somewhere or maybe this work should be placed somewhere else where it can be used more broadly.  Using `sign` is a good example of this.  It's a simple function that is generally applicable.  We want to do more of that.

Of course, I don't know if these things exist (they may not) or where they would be; so I'm not of much help.  Mostly I want to make sure you're thinking about the long term effects of your code and how best to position your work within the broader context.