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.

  • $\begingroup$ Additional detail: If I provide fractional values for some of the parameters in my problem (e.g. a = 1, b = 1, c =1/100), Mathematica resolves them immediately. What's the deal? $\endgroup$ – Bill Nov 18 '14 at 20:53
  • 1
    $\begingroup$ Bill, welcome to the site. Have you looked at Assumptions and Assuming? $\endgroup$ – Verbeia Nov 18 '14 at 21:37
  • 2
    $\begingroup$ Most likely it is using CAD, as in cylindrical algebraic decomposition. It may be using other technologies as well, depending on the specifics of the system. $\endgroup$ – Daniel Lichtblau Nov 18 '14 at 22:16
  • $\begingroup$ If not too verbose would be helpful if you can provide an answer where it works and one where it stalls. $\endgroup$ – Jack LaVigne Aug 31 '15 at 17:19