| from sympy.assumptions import Predicate | |
| from sympy.multipledispatch import Dispatcher | |
| class PrimePredicate(Predicate): | |
| """ | |
| Prime number predicate. | |
| Explanation | |
| =========== | |
| ``ask(Q.prime(x))`` is true iff ``x`` is a natural number greater | |
| than 1 that has no positive divisors other than ``1`` and the | |
| number itself. | |
| Examples | |
| ======== | |
| >>> from sympy import Q, ask | |
| >>> ask(Q.prime(0)) | |
| False | |
| >>> ask(Q.prime(1)) | |
| False | |
| >>> ask(Q.prime(2)) | |
| True | |
| >>> ask(Q.prime(20)) | |
| False | |
| >>> ask(Q.prime(-3)) | |
| False | |
| """ | |
| name = 'prime' | |
| handler = Dispatcher( | |
| "PrimeHandler", | |
| doc=("Handler for key 'prime'. Test that an expression represents a prime" | |
| " number. When the expression is an exact number, the result (when True)" | |
| " is subject to the limitations of isprime() which is used to return the " | |
| "result.") | |
| ) | |
| class CompositePredicate(Predicate): | |
| """ | |
| Composite number predicate. | |
| Explanation | |
| =========== | |
| ``ask(Q.composite(x))`` is true iff ``x`` is a positive integer and has | |
| at least one positive divisor other than ``1`` and the number itself. | |
| Examples | |
| ======== | |
| >>> from sympy import Q, ask | |
| >>> ask(Q.composite(0)) | |
| False | |
| >>> ask(Q.composite(1)) | |
| False | |
| >>> ask(Q.composite(2)) | |
| False | |
| >>> ask(Q.composite(20)) | |
| True | |
| """ | |
| name = 'composite' | |
| handler = Dispatcher("CompositeHandler", doc="Handler for key 'composite'.") | |
| class EvenPredicate(Predicate): | |
| """ | |
| Even number predicate. | |
| Explanation | |
| =========== | |
| ``ask(Q.even(x))`` is true iff ``x`` belongs to the set of even | |
| integers. | |
| Examples | |
| ======== | |
| >>> from sympy import Q, ask, pi | |
| >>> ask(Q.even(0)) | |
| True | |
| >>> ask(Q.even(2)) | |
| True | |
| >>> ask(Q.even(3)) | |
| False | |
| >>> ask(Q.even(pi)) | |
| False | |
| """ | |
| name = 'even' | |
| handler = Dispatcher("EvenHandler", doc="Handler for key 'even'.") | |
| class OddPredicate(Predicate): | |
| """ | |
| Odd number predicate. | |
| Explanation | |
| =========== | |
| ``ask(Q.odd(x))`` is true iff ``x`` belongs to the set of odd numbers. | |
| Examples | |
| ======== | |
| >>> from sympy import Q, ask, pi | |
| >>> ask(Q.odd(0)) | |
| False | |
| >>> ask(Q.odd(2)) | |
| False | |
| >>> ask(Q.odd(3)) | |
| True | |
| >>> ask(Q.odd(pi)) | |
| False | |
| """ | |
| name = 'odd' | |
| handler = Dispatcher( | |
| "OddHandler", | |
| doc=("Handler for key 'odd'. Test that an expression represents an odd" | |
| " number.") | |
| ) | |