Initial implementation of the query system

I sent some patches to sympy-patches with an initial implementation of the query system.

You can check it out by pulling from my branch:

git pull http://fseoane.net/git/sympy.git master

into your sympy repo.

Some examples of what you can do (sample isympy session):

In [1]: query(x, positive=True)

Returns None, as we do not know whether x is positive or not.

In [2]: query(abs(x), positive=True)
Out[2]: True

because abs() is always positive. Because exp() is always positive, the following should also be True:

In [3]: query(exp(x), positive=True)

but why then does it return None ?. Well, it simply is not True that exp() is always positive, it is always positive for real values, but SymPy does not assume that x is real, so you would have to specify that. This is now done with the keyword assumptions:

In [5]: query(exp(x), positive=True, assumptions=Assume(x, real=True))
Out[5]: True

As you can see, now assumptions are independent objects and are not tied to symbols any more. For more examples, see the file sympy/query/tests/test_query.py

still in the TODO list:
- support for global assumptions
- solve more complex implications, like

query(x, positive=True, assumptions=Assume(x, even=True))

where it should build the chain of implications even => integer => rational => real. This chain of implications currently stops at rational for efficiency reasons, because the number of facts grows in each step which makes the number of possible paths grow exponentially.

3 Responses to “Initial implementation of the query system”

  1. Tenders Says:

    Отличное наполнение блога, есть что почитать интересного, спс

  2. Kinder Says:

    А мне нравится этот блог, только авторам надо помнить , что посетители разные бывают. Короче учитывайте возростной ценс посетителей.

  3. Jo Says:

    There’s no secret about success. Did you ever know a successful man who didn’t tell you about it?

Leave a Reply