B
    [                 @   s@  d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZmZ d dlmZ d dl mZmZ d dlmZ ee
edd Zeeedd Zeeed	d Zeeed
d Zeeedd Zeeedd Zeeedd Zeeedd Zeeedd Zeeedd Zeeedd Zeeedd ZdS )    )IntervalIntersectionSetEmptySet	FiniteSetUnionComplexRegion
ProductSet)IntegersNaturalsReals)UniversalSet)Ssympify)dispatchc             C   s&   t | |}|| kr|S ||kr"| S d S )N)r   )abZ	intersect r   8lib/python3.7/site-packages/sympy/sets/handlers/union.py
union_sets	   s
    
r   c             C   s`   | tjrt|}|jr\| js:|js:tt| j|jS | jr\|jr\tt| j|jddS d S )NT)polar)		is_subsetr   r   r   Z	from_realZis_ComplexRegionr   r   Zsets)r   r   r   r   r   r      s    
c             C   s   |S )Nr   )r   r   r   r   r   r       s    c             C   s   | S )Nr   )r   r   r   r   r   r   %   s    c             C   s   | | r| S t|jt| jkr&d S | jd |jd krj| jd tt| jdd  t|jdd   S | jd |jd krtt| jd d t|jd d | jd  S d S )Nr      )r   lenargsr   r	   )r   r   r   r   r   r   )   s    
c             C   s   | | r| S d S )N)r   )r   r   r   r   r   r   7   s    
c             C   s   |  |rddlm}m} || j|j}|| j|j}||k sV||krZ|| krZ||krZd S || j|j}|| j|j}| j|ks| jo|j|kp|j}| j|ks| jo|j|kp|j}t||||S d S )Nr   )MinMax)	Z_is_comparableZ(sympy.functions.elementary.miscellaneousr   r   endstart	left_open
right_openr   )r   r   r   r   r   r   r    r!   r   r   r   r   =   s    
c             C   s   t jS )N)r   r   )r   r   r   r   r   r   Q   s    c             C   s   | j o"t|| jtjko"| jj}| joFt|| jtjkoF| jj}|sP|r| j o^| j|k}| jon| j|k}t	| j| j||}t
||fS d S )N)r    r   containsr   r   trueZ	is_finiter!   r   r   set)r   r   Zopen_left_in_b_and_finiteZopen_right_in_b_and_finiteZ	open_leftZ
open_rightZnew_ar   r   r   r   U   s    c             C   s   t | j|jB  S )N)r   Z	_elements)r   r   r   r   r   r   h   s    c                s8   t  fdd| D r4tt fdd| D   fS d S )Nc             3   s   | ]}  |d kV  qdS )TN)r"   ).0x)r   r   r   	<genexpr>o   s    zunion_sets.<locals>.<genexpr>c                s   g | ]}  |d kr|qS )T)r"   )r%   r&   )r   r   r   
<listcomp>q   s    zunion_sets.<locals>.<listcomp>)anyr$   r   )r   r   r   )r   r   r   l   s    c             C   s   d S )Nr   )r   r   r   r   r   r   t   s    N)Zsympyr   r   r   r   r   r   r   r	   Zsympy.sets.fancysetsr
   r   r   Zsympy.sets.setsr   r   r   Zsympy.multipledispatchr   r   r   r   r   r   <module>   s    (