Thank you for your clarification.

在 2017年5月30日星期二 UTC-6下午2:22:04,Aaron Meurer写道:
>
> No, the deduction of even/odd on Add isn't implemented yet. But the 
> implication Implies(Q.odd(d + 1), Q.even(d)) is always true, so you 
> can add it to the assumed facts unconditionally. 
>
> Aaron Meurer 
>
> On Tue, May 30, 2017 at 3:43 PM, mike <[email protected] <javascript:>> 
> wrote: 
> > Thank you Aaron, your response is very helpful. 
> > 
> > Q.odd(d + 1) & Q.even(d) are deduced assumptions. It seems if I use the 
> > current method, Sympy can not get the conclusion "d is even" from "if 
> (d+1) 
> > is odd" directly. 
> > 
> > 
> > 在 2017年5月29日星期一 UTC-6下午9:59:11,Aaron Meurer写道: 
> >> 
> >> None in this case means that SymPy doesn't know how determine the 
> >> fact. It looks like the sathandlers has an even/odd fact for Mul but 
> >> not for Add 
> >> 
> https://github.com/sympy/sympy/blob/71eb404921a4596b9fe42a7a4a0ccfa7d63a62c0/sympy/assumptions/sathandlers.py#L339.
>  
>
> >> If I remember correctly, it's because the corresponding fact for Add 
> >> requires counting, and I wasn't sure how to do that efficiently 
> >> (without adding an exponential number of clauses for large Adds). 
> >> 
> >> You can always tell SymPy the facts that it needs to know to deduce 
> >> things, in this case 
> >> 
> >> >>> with assuming(Q.positive(c), Q.integer(c), Q.positive(d), 
> >> >>> Q.integer(d), Q.odd(c*(d + 1)), Q.odd(d + 1) >> Q.even(d)): 
> >> ...     print(ask(Q.odd(d))) 
> >> False 
> >> 
> >> here >> means "implies" (you could also use Implies(Q.odd(d + 1), 
> >> Q.even(d))). 
> >> 
> >> Aaron Meurer 
> >> 
> >> 
> >> On Mon, May 29, 2017 at 9:45 PM, mike <[email protected]> wrote: 
> >> > Hi, 
> >> > 
> >> > I am new to learn sympy. This is a very simple question but I do not 
> >> > know 
> >> > how to deal with it. 
> >> > 
> >> > The question is: both c and d are positive integers, is c*d even if 
> >> > c*(d+1) 
> >> > is odd. 
> >> > 
> >> > my code: 
> >> > 
> >> > from sympy import Symbol 
> >> > from sympy.assumptions import assuming, Q, ask 
> >> > c = Symbol('c') 
> >> > d = Symbol('d') 
> >> > with assuming(Q.positive(c), Q.integer(c), Q.positive(d), 
> Q.integer(d)): 
> >> >     with assuming(Q.odd(c*(d +1))): 
> >> >         print(ask(Q.odd(c))) 
> >> >         print(ask(Q.odd((d+1)))) 
> >> > 
> >> > This code works. c is odd and (d+1) is odd, but how to evaluate d is 
> odd 
> >> > or 
> >> > even. 
> >> > I run the code 
> >> > ask(Q.odd(d)), 
> >> > but the result is "NONE" 
> >> > 
> >> > Ask for help. 
> >> > Thanks, 
> >> > 
> >> > -- 
> >> > 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 [email protected]. 
> >> > To post to this group, send email to [email protected]. 
> >> > Visit this group at https://groups.google.com/group/sympy. 
> >> > To view this discussion on the web visit 
> >> > 
> >> > 
> https://groups.google.com/d/msgid/sympy/5206e651-feeb-4cd9-a4c5-ba85f17ec6f0%40googlegroups.com.
>  
>
> >> > 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 [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > Visit this group at https://groups.google.com/group/sympy. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/sympy/2d41dd13-587e-4fca-996f-e3892b9fe792%40googlegroups.com.
>  
>
> > 
> > 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/c714a7f0-c58d-4e4d-813c-99255fc9e8b5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to