You need to include the assumptions in the call to refine:

>>> refine(sqrt((x - y)**2), Q.positive(x - y))
x - y

If I remember correctly, the `assuming` context manager also works for 
this, but I can't be certain.

On Monday, November 10, 2014 6:30:25 PM UTC-6, Andrew Spielberg wrote:
>
> Hi Aaron,
>
> Thanks for the reply.  One of the main things I'm hoping to do is make 
> absolute values go away.  I frequently in my code am getting things like (x 
> - y) / Abs(x - y).  I know x - y is > 0, so this is just 1.
>
> I should note that when I run your code, I get the following:
>
> In [1]: x, y = symbols('x y')
>
> In [2]: refine(sqrt((x - y)**2))
> Out[2]: 
>           __________
>        ╱        2 
> ╲╱  (x - y)  
>
> In [3]: Q.positive(x - y)
> Out[3]: Q.positive(x - y)
>
> In [4]: refine(sqrt((x - y)**2))
> Out[4]: 
>           __________
>        ╱        2 
> ╲╱  (x - y)  
>
>
> On Mon, Nov 10, 2014 at 7:13 PM, Aaron Meurer <asme...@gmail.com 
> <javascript:>> wrote:
>
>> Q is just a namespace for the assumptions, like Q.positive or Q.real.
>>
>> refine() simplifies things based on assumptions. This example returns x - 
>> y, because sqrt((x - y)**2) is equal to x - y if x - y is positive (but not 
>> in general).
>>
>> What kinds of simplifications are you expecting to get out of your 
>> constraints?
>>
>> Aaron Meurer
>>
>>
>> On Mon, Nov 10, 2014 at 5:42 PM, Andrew Spielberg <aespi...@gmail.com 
>> <javascript:>> wrote:
>>
>>> Hi Aaron,
>>>
>>> Thanks for the speedy reply.  I'm not sure I fully understand what this 
>>> example does, or how.  Could you perhaps elaborate?  What is Q?  What is 
>>> the difference between refine and simplify?
>>>
>>> I should note that the entirety of my constraints will be linear, so if 
>>> the current functionality can do that, that's enough.
>>>
>>> -Andy S.
>>>
>>> On Mon, Nov 10, 2014 at 5:06 PM, Aaron Meurer <asme...@gmail.com 
>>> <javascript:>> wrote:
>>>
>>>> There is a framework to do this with refine, like refine(sqrt((x - 
>>>> y)**2), Q.positive(x - y)), but not much is implemented yet, so the 
>>>> simplifications possible are quite limited (in fact, there's not much more 
>>>> than the one that I just showed that is implemented).
>>>>
>>>> Aaron Meurer
>>>>
>>>> On Mon, Nov 10, 2014 at 3:58 PM, Andrew Spielberg <aespi...@gmail.com 
>>>> <javascript:>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> When creating variables, I know you can provide certain constraints on 
>>>>> the domain of that variable.  For instance, one could say that a certain 
>>>>> variable, x, is positive, real, rational, etc.  These constraints affect 
>>>>> the way the simplify function behaves.
>>>>>
>>>>> I am wondering, without creating auxiliary variables, can add other 
>>>>> constraints?  For example, if I have a variable x that always must be 
>>>>> greater than another variable y, can I specify:
>>>>>
>>>>> x > y
>>>>>
>>>>> in some way, and have the simplifier intelligently know how to handle 
>>>>> it?  I know I could change my representation to be a = (x - y) and do 
>>>>> everything in terms of my variable a, and set a positive, but this is 
>>>>> less 
>>>>> than ideal and will not work in a lot of my cases.
>>>>>
>>>>> If there is no way to set these assumptions, is there some other 
>>>>> recommended way to do intelligent simplification in some way?
>>>>>
>>>>> -Andy S.
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "sympy" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to sympy+un...@googlegroups.com <javascript:>.
>>>>> To post to this group, send email to sy...@googlegroups.com 
>>>>> <javascript:>.
>>>>> Visit this group at http://groups.google.com/group/sympy.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/sympy/80f87d8d-1504-40f6-b6d4-efb08cdcc824%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/sympy/80f87d8d-1504-40f6-b6d4-efb08cdcc824%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "sympy" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to sympy+un...@googlegroups.com <javascript:>.
>>>> To post to this group, send email to sy...@googlegroups.com 
>>>> <javascript:>.
>>>> Visit this group at http://groups.google.com/group/sympy.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/sympy/CAKgW%3D6L3OorvtGQaXp7RUg2RGtVweSgUk2XNQ_tDs%2BqYB5-iMg%40mail.gmail.com
>>>>  
>>>> <https://groups.google.com/d/msgid/sympy/CAKgW%3D6L3OorvtGQaXp7RUg2RGtVweSgUk2XNQ_tDs%2BqYB5-iMg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "sympy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to sympy+un...@googlegroups.com <javascript:>.
>>> To post to this group, send email to sy...@googlegroups.com 
>>> <javascript:>.
>>> Visit this group at http://groups.google.com/group/sympy.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/sympy/CAM6e1JdxBKnfSxEMPxJnUqkd7XwOdkU4fddaqPRQmqGAaMZO-A%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/sympy/CAM6e1JdxBKnfSxEMPxJnUqkd7XwOdkU4fddaqPRQmqGAaMZO-A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sympy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sympy+un...@googlegroups.com <javascript:>.
>> To post to this group, send email to sy...@googlegroups.com <javascript:>
>> .
>> Visit this group at http://groups.google.com/group/sympy.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2Bn0vvxOd3H%2B-4rRdQOh4Std7uCfjzFudvbs9gQzOM5yQ%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2Bn0vvxOd3H%2B-4rRdQOh4Std7uCfjzFudvbs9gQzOM5yQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/7e94d8e3-09f9-424b-9d63-4f5a0c4842ed%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to