Curious weakness in Simplify with Assumptions 3
- To: mathgroup at smc.vnet.net
- Subject: [mg19013] Curious weakness in Simplify with Assumptions 3
- From: "Andrzej Kozlowski" <andrzej at tuins.ac.jp>
- Date: Tue, 3 Aug 1999 13:44:48 -0400
- Sender: owner-wri-mathgroup at wolfram.com
I guess it would be wisest for me to wait for Adam Strzebonski to produce a much better solution but my impatience forces me to send another, improved attempt: Unprotect[Simplify] Simplify[Element[expr_, Reals], Element[a_, Reals], opt___] := Simplify[Element[expr, Reals], a > 0, opt] && Simplify[Element[expr, Reals], a < 0, opt] && Simplify[Element[expr, Reals], a == 0, opt] Simplify[Element[expr_, Reals], And[x___, Element[a_, Reals], y___], opt___ ] :=Simplify[Element[expr, Reals], And[x, a > 0, y], opt] && Simplify[Element[expr, Reals], And[x, a < 0, y], opt] && Simplify[Element[expr, Reals], And[x, a == 0, y], opt] Simplify[Element[expr_, Reals], And[x___, a_ >= b_, y___], opt___] := Simplify[Element[expr, Reals], And[x, a > b, y], opt] && Simplify[Element[expr, Reals], And[x, a == b, y], opt] Simplify[Element[expr_, Reals], a_ >= b_, opt___] := Simplify[Element[expr, Reals], a > b, opt] && Simplify[Element[expr, Reals], a == b, opt] Simplify[Element[expr_, Reals], And[x___, a_ <= b_, y___], opt___] := Simplify[Element[expr, Reals], And[x, a < b, y], opt] && Simplify[Element[expr, Reals], And[x, a == b, y], opt] Simplify[Element[expr_, Reals], a_ <= b_, opt___] := Simplify[Element[expr, Reals], a < b, opt] && Simplify[Element[expr, Reals], a == b, opt] Protect[Simplify] This is still imperfect: In[5]:= Simplify[Sqrt[x] \[Element] Reals, x \[Element] Reals] Out[5]= False while it would be better just to return Sqrt[x] \[Element] Reals but I guess this is just a minor nuisance. Anyway I should better wait to see what Adam Strzebonski will (I hope) suggest. -- Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp http://eri2.tuins.ac.jp ---------- >From: "Andrzej Kozlowski" <andrzej at tuins.ac.jp> To: mathgroup at smc.vnet.net >To: adams at wolfram.com , mathgroup at smc.vnet.net >Subject: [mg19013] Curious weakness in Simplify with Assumptions 2 >Date: Sat, Jul 31, 1999, 6:49 PM > > A few minutes after sending my first message on this topic I produced the > following obvious solution: > > Unprotect[Simplify]; > > Simplify[expr_ \[Element] Reals, And[x___, a_ \[Element] Reals, y___], > opt___] := > Simplify[expr \[Element] Reals, {x, a > 0, y}, opt] && > Simplify[expr \[Element] Reals, And[x, a < 0, y], opt] && > Simplify[expr \[Element] Reals, And[x, a == 0, y], opt]; > > Simplify[expr_ \[Element] Reals, And[x___, a_ >= 0, y___], opt___] := > Simplify[expr \[Element] Reals, And[x, a > 0, y], opt] && > Simplify[expr \[Element] Reals, And[x, a == 0, y], opt] > > Simplify[expr_ \[Element] Reals, a_ = 0, opt___] := > Simplify[expr \[Element] Reals, a > 0, opt] && > Simplify[expr \[Element] Reals, a == 0, opt] > > Protect[Simplify] > > This deals with the cases I complained about: > > In[6]:= > Simplify[Sqrt[x] \[Element] Reals, x >= 0] > Out[6]= > True > > In[7]:= > Simplify[Sqrt[a^2 + b^2] \[Element] Reals, > a \[Element] Reals && b \[Element] Reals] > Out[7]= > True > > However, this looks to me like a bit of a hack. Is there a better solution? > -- > Andrzej Kozlowski > Toyama International University > JAPAN > http://sigma.tuins.ac.jp > http://eri2.tuins.ac.jp > > > ---------- >>From: "Andrzej Kozlowski" <andrzej at tuins.ac.jp> To: mathgroup at smc.vnet.net >>To: Adam Strzebonski <adams at wolfram.com> , mathgroup at smc.vnet.net >>Subject: [mg19013] Curious weakness in Simplify with Assumptions >>Date: Sat, Jul 31, 1999, 4:53 PM >> > >> Today I noticed a weakness in Simplify with assumptions. I tried >> >> In[1]:= >> Simplify[Sqrt[x] \[Element] Reals, x >= 0] >> Out[1]= >> Sqrt[x] \[Element] Reals >> >> This leads to the following curious situation: >> >> In[2]:= >> Simplify[Sqrt[a^2 + b^2] \[Element] Reals, >> a \[Element] Reals && b \[Element] Reals] >> Out[2]= >> 2 2 >> Sqrt[a + b ] \[Element] Reals >> >> even though: >> >> >> >> In[3]:= >> Simplify[Sqrt[a^2 + b^2] \[Element] Reals, (a \[Element] Reals) && (b > 0)] >> Out[3]= >> True >> >> In[4]:= >> Simplify[Sqrt[a^2 + b^2] \[Element] Reals, (a \[Element] Reals) && (b < 0)] >> Out[4]= >> True >> >> and >> >> In[5]:= >> Simplify[Sqrt[a^2 + b^2] \[Element] Reals, (a \[Element] Reals) && (b == 0)] >> Out[5]= >> True >> >> which covers all the possibilities. Surely this is something that ought to >> be fixed quite easily? >> >> -- >> Andrzej Kozlowski >> Toyama International University >> JAPAN >> http://sigma.tuins.ac.jp >> http://eri2.tuins.ac.jp