U
    L?h%                     @   sl   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ G d	d
 d
e
ZdS )    )S)sympify)EqNe)global_parameters)Boolean)	func_name   )Setc                       s6   e Zd ZdZd	 fdd	Zedd Zdd Z  ZS )
Containsa  
    Asserts that x is an element of the set S.

    Examples
    ========

    >>> from sympy import Symbol, Integer, S, Contains
    >>> Contains(Integer(2), S.Integers)
    True
    >>> Contains(Integer(-2), S.Naturals)
    False
    >>> i = Symbol('i', integer=True)
    >>> Contains(i, S.Naturals)
    Contains(i, Naturals)

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Element_%28mathematics%29
    Nc                    s   t |}t |}|d krtj}t|ts8tdt| |rv||}t|trf|t	j
t	jfkrv|S n|d k	rvtdt | ||S )Nzexpecting Set, not %sz)_contains() should return Boolean or None)r   r   evaluate
isinstancer
   	TypeErrorr   Z	_containsr   r   truefalsesuper__new__)clsxsr   result	__class__ E/var/www/html/venv/lib/python3.8/site-packages/sympy/sets/contains.pyr      s    


zContains.__new__c                 C   s   t  jdd | jd jD  S )Nc                 S   s,   g | ]$}|j s"|js"t|ttfr|jqS r   )Z
is_BooleanZ	is_Symbolr   r   r   binary_symbols).0ir   r   r   
<listcomp>9   s
    z+Contains.binary_symbols.<locals>.<listcomp>r	   )setunionargsselfr   r   r   r   7   s    
zContains.binary_symbolsc                 C   s
   | j d S )Nr	   )r!   r"   r   r   r   as_set>   s    zContains.as_set)N)	__name__
__module____qualname____doc__r   propertyr   r$   __classcell__r   r   r   r   r   
   s
   
r   N)Z
sympy.corer   Zsympy.core.sympifyr   Zsympy.core.relationalr   r   Zsympy.core.parametersr   Zsympy.logic.boolalgr   Zsympy.utilities.miscr   Zsetsr
   r   r   r   r   r   <module>   s   