Big O notation has a very precise definition for 1 variable. You can prove
O(2x^2) = O(x^2) for example. There is never ambiguity. However, for 2 or more variables the definition gets muddy.
Often you might have algorithms with a run time like:
O(m + n*k). Intuitively I understand this means it will grow linearly if 2 out of 3 variables are held constant, linear if m=k or m=n and quadratic if n=k. However, I have not found any formal logic surrounding what are or are not valid transformations for big O of multiple variables.
My intuition breaks down in more complex cases though. What if you have O(m + n log(m)) or
O(m n ^ 2 + m ^ 2) or
O(m^n + m^3) or
O(mno + log(mn) + log(o)^m). Some of these might not even make sense, or simplify to something completely different.
My question is this: Is there a exact definition for big O with multiple variables? and is there a algorithm to simplify such expressions to the simplest form like there exists for normal big O.