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,