What is the motivation of this? It would be nice if you could add this
to the commit message.
'Implies(x, y)' is clearly less readable than 'Or(Not(x), y)', imho.

Fabian, what is your opinion about this?

Vinzent

2010/3/17 Christian Muise <christian.mu...@gmail.com>:
> ---
>  doc/src/modules/logic.txt         |    7 ++++---
>  sympy/logic/boolalg.py            |   12 +++++++++++-
>  sympy/logic/tests/test_boolalg.py |    6 ++++--
>  3 files changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/doc/src/modules/logic.txt b/doc/src/modules/logic.txt
> index 2487d57..e466d5a 100644
> --- a/doc/src/modules/logic.txt
> +++ b/doc/src/modules/logic.txt
> @@ -24,12 +24,13 @@ You can build boolean expressions with the standard 
> python operators & (And),
>     >>> ~x
>     Not(x)
>
> -You can also form implications with >>, <<, and class Equivalent:
> +You can also form implications with >>, <<, and class Equivalent, which are
> +compiled away into their logical equivalents:
>
>     >>> x >> y
> -    Implies(x, y)
> +    Or(Not(x), y)
>     >>> x << y
> -    Implies(y, x)
> +    Or(Not(y), x)
>
>  Like most types in SymPy, Boolean expressions inherit from sympy.core.Basic:
>
> diff --git a/sympy/logic/boolalg.py b/sympy/logic/boolalg.py
> index cd979bd..0a45e42 100755
> --- a/sympy/logic/boolalg.py
> +++ b/sympy/logic/boolalg.py
> @@ -104,7 +104,17 @@ def eval(cls, *args):
>         return A
>
>  class Implies(BooleanFunction):
> -    pass
> +    """Logical implication.
> +    A implies B is equivalent to !A v B
> +    """
> +   �...@classmethod
> +    def eval(cls, *args):
> +        if len(args) < 2:
> +            raise ValueError, "Only %d operand(s) used for an Implies (pairs 
> are required): %s" % (len(args), str(args))
> +        elif len(args) > 2:
> +            return map(cls, args)
> +        else:
> +            return Or(Not(args[0]), args[1])
>
>  class Equivalent(BooleanFunction):
>     """Equivalence relation.
> diff --git a/sympy/logic/tests/test_boolalg.py 
> b/sympy/logic/tests/test_boolalg.py
> index 3102f06..e28f063 100755
> --- a/sympy/logic/tests/test_boolalg.py
> +++ b/sympy/logic/tests/test_boolalg.py
> @@ -97,8 +97,10 @@ def test_Nor():
>
>  def test_Implies():
>     A, B, C = symbols('ABC')
> -    Implies(True, True) == True
> -    Implies(False, False) == False
> +    assert Implies(True, True) == True
> +    assert Implies(True, False) == False
> +    assert Implies(False, True) == True
> +    assert Implies(False, False) == True
>     assert A >> B == B << A
>
>  def test_Equivalent():
> --
> 1.6.3.3

-- 
You received this message because you are subscribed to the Google Groups 
"sympy-patches" group.
To post to this group, send email to sympy-patc...@googlegroups.com.
To unsubscribe from this group, send email to 
sympy-patches+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy-patches?hl=en.

Reply via email to