I'm having getting Mathematica to use my inequality assumptions. Here's a simple example:
$Assumptions = (v-w*x+y*z)>0
FullSimplify[Sign[(v-w*x+y*z)]]
Output: Sign[v-wx+yz] (Meaning that the assumption had no effect)
However, if I put in the pieces separately, it gives me the expected results.
$Assumptions = (v-w*x)>0
FullSimplify[Sign[(v-w*x)]]
Output: 1
$Assumptions = (y*z)>0
FullSimplify[Sign[(y*z)]]
Output: 1
Answer
The number of variables in the nonlinear expression in your first example (5) exceeds the limit set by the system sub-option "AssumptionsMaxNonlinearVariables" (which is 4).
SystemOptions["SimplificationOptions"]
{"SimplificationOptions" -> {"AssumptionsMaxNonlinearVariables" -> 4, "AssumptionsMaxVariables" -> 21, "AutosimplifyTrigs" -> True, "AutosimplifyTwoArgumentLog" -> True, "FiniteSumMaxTerms" -> 30, "FunctionExpandMaxSteps" -> 15, "ListableFirst" -> True, "RestartELProver" -> False, "SimplifyMaxExponents" -> 100, "SimplifyToPiecewise" -> True}}
Set the value of "AssumptionsMaxNonlinearVariables" to a larger number (say, 5) to make FullSimplify handle a larger number of nonlinear variables:
SetSystemOptions["SimplificationOptions" -> {"AssumptionsMaxNonlinearVariables" -> 5}];
$Assumptions = (v - w*x + y*z) > 0;
FullSimplify[Sign[(v - w*x + y*z)]]
1
Reset the value to its default using
SetSystemOptions["SimplificationOptions" -> {"AssumptionsMaxNonlinearVariables" -> 4}];
See also: Simplifying expressions with head Max
Comments
Post a Comment