Fredrik Johansson wrote:
> On Sat, Jun 20, 2009 at 2:30 PM, Fabian Pedregosa<[email protected]> wrote:
>> Hi Ronan!
>>
>>
>> Ronan Lamy wrote:
>>> I've noticed that the boolean functions Or and And in the new
>>> sympy.logic subpackage are defined to raise ValueError when called
>>> with 0 or 1 argument. However, there are perfectly sound mathematical
>>> definitions for those cases:
>>> Or() -> False
>>> Or(A) -> A
>>> And() -> True
>>> And(A) -> A
>>>
>>> Using these would allow one to write things like:
>>> assert solve(Eq(poly, 0)) == Or(*[Eq(r, 0) for r in roots(poly)])
>>>
>>> and I don't see any drawback. What's the reason for the current
>>> choice?
>> The mathematical definition of And that I used defined it as a function
>> B^2 --> B, so I did not know what should be expected if called with 0 or
>> 1 arguments. However, we can change that if it can improve the module.
>>
>> Just tell me, what is the mathematical reason behind Or() -> False,
>> And() -> True ?
> 
> And, Or should accept any number of arguments. It means that for any
> lists A and B, op(*(A+B)) = op(op(*A), op(*B)), which is very
> convenient. Also Xor satisfies this property (it gives the parity) and
> should be defined with Xor() = False, Xor(x) = x.
> 

Thaks for your comments. I pushed a patch implementing this for And and 
Or (Xor is not yet implemented). I just had to remove the line that 
raised the ValueError and worked right away.


> Fredrik
> 
> > 
> 


-- 
http://fseoane.net/blog/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to