Ask¶
Module for querying SymPy objects about assumptions.
- class sympy.assumptions.ask.AssumptionKeys[source]¶
This class contains all the supported keys by
ask. It should be accessed via the instancesympy.Q.
- sympy.assumptions.ask.ask(proposition, assumptions=True, context={})[source]¶
Function to evaluate the proposition with assumptions.
- Parameters
proposition : Any boolean expression.
Proposition which will be evaluated to boolean value. If this is not
AppliedPredicate, it will be wrapped byQ.is_true.assumptions : Any boolean expression, optional.
Local assumptions to evaluate the proposition.
context : AssumptionsContext, optional.
Default assumptions to evaluate the proposition. By default, this is
sympy.assumptions.global_assumptionsvariable.- Returns
True,False, orNone- Raises
TypeError : proposition or assumptions is not valid logical expression.
ValueError : assumptions are inconsistent.
Explanation
This function evaluates the proposition to
TrueorFalseif the truth value can be determined. If not, it returnsNone.It should be discerned from
refine()which, when applied to a proposition, simplifies the argument to symbolicBooleaninstead of Python built-inTrue,FalseorNone.Syntax
- ask(proposition)
Evaluate the proposition in global assumption context.
- ask(proposition, assumptions)
Evaluate the proposition with respect to assumptions in global assumption context.
Examples
>>> from sympy import ask, Q, pi >>> from sympy.abc import x, y >>> ask(Q.rational(pi)) False >>> ask(Q.even(x*y), Q.even(x) & Q.integer(y)) True >>> ask(Q.prime(4*x), Q.integer(x)) False
If the truth value cannot be determined,
Nonewill be returned.>>> print(ask(Q.odd(3*x))) # cannot determine unless we know x None
ValueErroris raised if assumptions are inconsistent.>>> ask(Q.integer(x), Q.even(x) & Q.odd(x)) Traceback (most recent call last): ... ValueError: inconsistent assumptions Q.even(x) & Q.odd(x)
Notes
Relations in assumptions are not implemented (yet), so the following will not give a meaningful result.
>>> ask(Q.positive(x), x > 0)
It is however a work in progress.
See also
sympy.assumptions.refine.refineSimplification using assumptions. Proposition is not reduced to
Noneif the truth value cannot be determined.