--- 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.