Coverage for /usr/lib/python3/dist-packages/sympy/sets/contains.py: 61%

18 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-14 15:55 +0200

1from sympy.core import S 

2from sympy.core.relational import Eq, Ne 

3from sympy.logic.boolalg import BooleanFunction 

4from sympy.utilities.misc import func_name 

5from .sets import Set 

6 

7 

8class Contains(BooleanFunction): 

9 """ 

10 Asserts that x is an element of the set S. 

11 

12 Examples 

13 ======== 

14 

15 >>> from sympy import Symbol, Integer, S, Contains 

16 >>> Contains(Integer(2), S.Integers) 

17 True 

18 >>> Contains(Integer(-2), S.Naturals) 

19 False 

20 >>> i = Symbol('i', integer=True) 

21 >>> Contains(i, S.Naturals) 

22 Contains(i, Naturals) 

23 

24 References 

25 ========== 

26 

27 .. [1] https://en.wikipedia.org/wiki/Element_%28mathematics%29 

28 """ 

29 @classmethod 

30 def eval(cls, x, s): 

31 

32 if not isinstance(s, Set): 

33 raise TypeError('expecting Set, not %s' % func_name(s)) 

34 

35 ret = s.contains(x) 

36 if not isinstance(ret, Contains) and ( 

37 ret in (S.true, S.false) or isinstance(ret, Set)): 

38 return ret 

39 

40 @property 

41 def binary_symbols(self): 

42 return set().union(*[i.binary_symbols 

43 for i in self.args[1].args 

44 if i.is_Boolean or i.is_Symbol or 

45 isinstance(i, (Eq, Ne))]) 

46 

47 def as_set(self): 

48 return self.args[1]