# Variable Value as Range

Thank you for the help so far!

I would like to assign +/i signs for the function and solution such as (+)(+)(-) and therefore (-).

It is working for the first evaluation, λlower, but not for the second evaluation, λupper. I cannot see the difference - has it to do with "λi /. Solve" in both definitions?

    (* Endogenous *)
Clear[μ, ξ, β, γ, ri, si, rj, sj, λCri, λCsi , λlower, λupper, λlowereip, λip];
(* Exogenous *)
Clear[ ci, yp, λi, αi, ϵip, ηip, eip];
ri = ϵip*λi + (1 - ηip)*(1 - λi);
si = ηip*(1 - λi) + (1 - ϵip)*λi;
λCri = (ϵip*λi)/(ϵip*λi + (1 - ηip)*(1 - λi));
λCsi = (ηip*(1 - λi))/(ηip*(1 - λi) + (1 - ϵip)*λi);
λlower = λi /.
Solve[ri*(yp - eip - ci + αi*λCri) + si*(yp - eip + αi*(1 - λCsi)) == yp + αi*(1 - λi), {λi}];
λupper = λi /.Solve[ri*(yp - eip - ci + αi*λCri) +
si*(yp - eip + αi*(1 - λCsi)) == yp + αi*λi - ci, {λi} ];
Simplify[D[λlower, eip]]
Simplify[Sign[D[λlower, eip]], αi > 0 && eip > 0 && ci > 0 && 0 < ϵip < 1 && 0 < ci < 1 && 0 < ηip < 1 && αi > ci && αi > ci + eip && ϵip + ηi < 1]
Simplify[D[λupper, eip]]
Simplify[Sign[D[λupper, eip]], αi > 0 && eip > 0 && ci > 0 && 0 < ϵip < 1 && 0 < ci < 1 && 0 < ηip < 1 && αi > ci && αi > ci + eip && ϵip + ηi < 1]

• Mathematica supports intervals, a = Interval[{0, 1}] and Assuming[0<a<1,Simplify[...]] Perhaps you can use one or both of those and see if you can get where you want to go, BUT in my experience it sometimes doesn't propagate through a chain of statements to give what you can sometimes see the answer should be.
– Bill
Commented Oct 5, 2014 at 20:28
• Simplify[Sign[a (1 - b) (1 - a - b)], 0 < a < 1 && 0 < b < 1 && a + b > 1]?
– kglr
Commented Oct 5, 2014 at 20:32
• If I use \[Lambda]lowereip = Simplify[D[\[Lambda]lower, eip]] Simplify[Sign[\[Lambda]lowereip], 0 < \[Epsilon]ip < 1 && 0 < ci < 1 && 0 < \[Eta]ip < 1 && \[Alpha]i > ci && \[Alpha]i > ci + eip && \[Epsilon]ip + \[Eta]i < 1] , then I get only {{0 -> ...}} However, if I use the value of [Lambda]lowereip and copy it and define it as "x" x = 1/(2 \[Alpha]i - ci (-1 + \[Epsilon]ip + \[Eta]ip)) Simplify[Sign[x], 0 < \[Epsilon]ip < 1 && 0 < ci < 1 && 0 < \[Eta]ip < 1 && \[Alpha]i > ci && \[Alpha]i > ci + eip && \[Epsilon]ip + \[Eta]i < 1] it is working.
– Tom
Commented Oct 5, 2014 at 20:59
• @TomG: I tried evaluating \[Lambda]lowereip = Simplify[D[\[Lambda]lower, eip]] Simplify[Sign[\[Lambda]lowereip], 0 < \[Epsilon]ip < 1 && 0 < ci < 1 && 0 < \[Eta]ip < 1 && \[Alpha]i > ci && \[Alpha]i > ci + eip && \[Epsilon]ip + \[Eta]i < 1] which produces 0. That's because you forgot to post the relevant parts of your code, and we can't help you if you forget to post the code that your question is about. :) Also, note that kguler's suggestion solves the question as you asked it, so unless we're missing something, your question appears to be answered. Commented Oct 5, 2014 at 22:59
• @DumpsterDoofus: I have updated the question with the example code.
– Tom
Commented Oct 6, 2014 at 19:43

exp = {Sign[a], Sign[1 - b], Sign[1 - a - b],
Sign[a (1 - a) (1 - a - b)]};
ref = Assuming[{0 < a < 1 && Element[a, Reals] 0 < b < 1 &&
Element[b, Reals] && a + b > 1}, Refine[exp]];
Grid[{exp, ref /. {1 -> "+", -1 -> "-"}},
Dividers -> {{True, {None}, True, True}, {{True}}}]


• Thanks. Very helpful for the visualization!
– Tom
Commented Oct 6, 2014 at 19:43
expressions = {a, 1 - a, 1 - b, a + b, a (1 - b) (1 - a - b)};
assumptions = 0 < a < 1 && 0 < b < 1 && a + b > 1;

signF = Simplify[Sign@#, #2]  /. {1 -> "+", -1 -> "-"} &;

signF[expressions, assumptions]
(* {"+","+","+","+","-"} *)

Grid[{expressions, signF[expressions, assumptions]}, Dividers -> All]