An exception could be raised as a false positive.  We should only
demand consistency between two resolutors if they have both reached a
conclusion.  Before this patch, an exception would be raised in the event of an
inconclusive resolutor following a conclusive.

Added a test for the issue
---
 sympy/assumptions/ask.py              |    7 ++++++-
 sympy/assumptions/tests/test_query.py |    9 +++++++++
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/sympy/assumptions/ask.py b/sympy/assumptions/ask.py
index f575d7c..3814278 100644
--- a/sympy/assumptions/ask.py
+++ b/sympy/assumptions/ask.py
@@ -75,7 +75,12 @@ def ask(expr, key, assumptions=True):
             if hasattr(handler, subclass.__name__):
                 res = getattr(handler, subclass.__name__)(expr, assumptions)
                 if _res is None: _res = res
-                elif _res != res: raise ValueError, 'incompatible resolutors'
+                elif res is None:
+                    # since first resolutor was conclusive, we keep that value
+                    res = _res
+                else:
+                    # only check consistency if both resolutors have concluded
+                    if _res != res: raise ValueError, 'incompatible resolutors'
                 break
     if res is not None:
         return res
diff --git a/sympy/assumptions/tests/test_query.py 
b/sympy/assumptions/tests/test_query.py
index 0078dc6..e5c8907 100644
--- a/sympy/assumptions/tests/test_query.py
+++ b/sympy/assumptions/tests/test_query.py
@@ -926,6 +926,15 @@ def Number(expr, assumptions):
             return True
     register_handler('prime', Prime2AskHandler)
     raises(ValueError, 'ask(4, Q.prime)')
+    remove_handler('prime', Prime2AskHandler)
+
+    class InconclusiveHandler(AskHandler):
+        @staticmethod
+        def Number(expr, assumptions):
+            return None
+    register_handler('prime', InconclusiveHandler)
+    ask(3, Q.prime)
+
 
 def test_key_extensibility():
     """test that you can add keys to the ask system at runtime"""
-- 
1.6.5

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