U
    me                     @   sT   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
 G dd deZd	S )
    )S)EqNe)BooleanFunction)	func_name   )Setc                   @   s0   e Zd ZdZedd Zedd Zdd Zd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
    c                 C   sP   t |tstdt| ||}t |tsL|tjtjfksHt |trL|S d S )Nzexpecting Set, not %s)	
isinstancer   	TypeErrorr   containsr	   r   truefalse)clsxsret r   7/tmp/pip-unpacked-wheel-rdz2gdd2/sympy/sets/contains.pyeval   s    


zContains.evalc                 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>*   s
    z+Contains.binary_symbols.<locals>.<listcomp>r   )setunionargsselfr   r   r   r   (   s    
zContains.binary_symbolsc                 C   s
   | j d S )Nr   )r   r   r   r   r   as_set/   s    zContains.as_setN)	__name__
__module____qualname____doc__classmethodr   propertyr   r   r   r   r   r   r	      s   


r	   N)Z
sympy.corer   Zsympy.core.relationalr   r   Zsympy.logic.boolalgr   Zsympy.utilities.miscr   Zsetsr   r	   r   r   r   r   <module>   s
   