Re: Sign Query
- To: mathgroup at smc.vnet.net
 - Subject: [mg19755] Re: Sign Query
 - From: Adam Strzebonski <adams at wolfram.com>
 - Date: Wed, 15 Sep 1999 03:53:05 -0400
 - Organization: Wolfram Research, Inc.
 - References: <7ri5nq$8ih@smc.vnet.net>
 - Sender: owner-wri-mathgroup at wolfram.com
 
David Ridley wrote:
> Hello,
>
> Please excuse my ignorance.  I'm trying to sign a function and wonder
> how
> to go about making some assumptions.
>
> In general, my problem is as follows:
> a=b-c
> Sign[a]
> I know that b<0 and c>0.  How do I tell Mathematica?
In Mathematica 4 you can use Simplify with assumptions.
In[1]:= Simplify[Sign[b-c], b<0 && c>0]
Out[1]= -1
> -------
>
> More specifically, my problem is the following:
>
> focp=(-(1+r)Q1[P]-(1+g)Q2[(1+g)P]+c(1+r)Q1'[P]+c(1+g)Q2'[(1+g)P])
> /((1+r)Q1'[P]+(1+g)^2Q2'[(1+g)P])
>
> dpdg=Simplify[D[focp,g]]
>
> Sign[dpdg]
>
> where:
> c,g,r,P,Q1,Q2 >0
> Q1',Q2'<0
> Q1", Q2" ???
>
If these assumptions were sufficient to determine the sign of dpdg
Simplify[Sign[dpdg], assumptions] would give 1 or -1. (The assumptions
would need to be written in terms of Variables[dpdg], i.e. Q2[(1+g)P]>0,
rather than Q2>0 etc.)
However, Sign[dpdg] depends on the value of Q2''. We can prove it
using Developer`InequalityInstance.
In[2]:= focp=(-(1+r)Q1[P]-(1+g)Q2[(1+g)P]+c(1+r)Q1'[P]+
        c(1+g)Q2'[(1+g)P])/((1+r)Q1'[P]+(1+g)^2Q2'[(1+g)P]);
In[3]:= dpdg=Simplify[D[focp,g]];
In[4]:= vars=Variables[dpdg]
Out[4]= {c, g, P, r, Q1[P], Q2[(1 + g) P], Q1'[P], Q2'[(1 + g) P],
>    Q2''[(1 + g) P]}
In[5]:= ineqs=And@@(#>0&/@Take[vars, 6]) && vars[[7]]<0 && vars[[8]]<0
Out[5]= c > 0 && g > 0 && P > 0 && r > 0 && Q1[P] > 0 &&
>    Q2[(1 + g) P] > 0 && Q1'[P] < 0 && Q2'[(1 + g) P] < 0
In[6]:= <<Developer`
This finds a point satisfying the assumptions ineqs, for which dpdg>0.
In[7]:= InequalityInstance[ineqs && dpdg>0, vars]
Out[7]= {r -> 1, g -> 1, Q2[(1 + g) P] -> 1, Q1[P] -> 1,
>    Q2'[(1 + g) P] -> -1, Q1'[P] -> -1, c -> 1, P -> 1,
>    Q2''[(1 + g) P] -> 2}
This finds a point satisfying the assumptions ineqs, for which dpdg<0.
In[8]:= InequalityInstance[ineqs && dpdg<0, vars]
Out[8]= {r -> 1, g -> 1, Q2[(1 + g) P] -> 1, Q1[P] -> 1,
>    Q2'[(1 + g) P] -> -1, Q1'[P] -> -1, c -> 1, P -> 1,
>    Q2''[(1 + g) P] -> 0}
Best Regards,
Adam Strzebonski
Wolfram Research