Before getting into my question, let me provide some context:
I recently started using Mathematica to automatically perform stability analyses that I previously did by hand. A major part of the process requires me to determine (1) which algebraic expressions among a list can possibly become negative, and (2) if any of them are dependent on another (i.e., one expression can only be negative if another is necessarily negative). I have major assumptions that allow me to answer these questions in most cases: that all of the parameters in my problem are positive, save for one (lets call it q), which ranges from -1 to 1.
I have been very impressed with the ability of Mathematica to tear through these questions symbolically — most people would resort to numerical methods in my community. My process is deceptively simple, I make a statement ("There exists values for Z parameters for which X is negative and Y is positive) and then ask Mathematica to determine whether that statement is true or false using
Resolve. It surprisingly works in most cases, and it takes Mathematica seconds to perform what used to take me days.
However, sometimes Mathematica just plain stalls. Upon asking it to resolve my statement into true or false, it just sits and chews on the question indefinitely. I've left it overnight to no avail.
My question is this: what is Mathematica doing behind the scenes to resolve these statements, and how can I help it along?
I've experimented with adding finite bounds to my assumptions, and allowing Mathematica to use 'finite precision', but I haven't had much success with the former and I don't fully understand/trust the latter. Feel free to lecture me on what I'm doing wrong as long as its educational.