o
    8Va                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZmZ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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Ssympify	FiniteSetUnionComplexRegion
ProductSet)dispatch)Naturals	Naturals0Integers	RationalsReals)UniversalSetc                 C      | S N abr   r   ;/usr/lib/python3/dist-packages/sympy/sets/handlers/union.py
union_sets	      r   c                 C   r   r   r   r   r   r   r   r      r   c                 C   r   r   r   r   r   r   r   r      r   c                 C   r   r   r   r   r   r   r   r      r   c                 C   r   r   r   r   r   r   r   r      r   c                 C   r   r   r   r   r   r   r   r      r   c                 C   s&   t | |}|| kr|S ||kr| S d S r   )r   )r   r   Z	intersectr   r   r   r   !   s   
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	   setsr   r   r   r   r   )   s   
c                 C   s   |S r   r   r   r   r   r   r   8   r   c                 C   r   r   r   r   r   r   r   r   =   r   c                 C   sx   | | r| S t|jt| jkrd S t| jdkr:| j\}}|j\}}||kr/|t|| S ||kr:t||| S d S )N   )r   lenr   r	   )r   r   Za1Za2Zb1Zb2r   r   r   r   A   s   


c                 C   s   | | r| S d S r   )r   r   r   r   r   r   P   s   
c                 C   s   |  |rbddlm}m} || j|j}|| j|j}||k s+||kr-|| vr-||vr-d S || j|j}|| j|j}| j|ksC| joJ|j|kpJ|j}| j|ksS| joZ|j|kpZ|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   V   s,   
c                 C   s   t jS r   )r   r   r   r   r   r   r   j   s   c                 C   s   | j ot|| jtju o| jj}| jo#t|| jtju o#| jj}|s(|rE| j o/| j|v}| jo7| j|v}t	| j| j||}||hS d S r   )
r%   r   containsr$   r   trueZ	is_finiter&   r#   r   )r   r   Zopen_left_in_b_and_finiteZopen_right_in_b_and_finiteZ	open_leftZ
open_rightZnew_ar   r   r   r   n   s    c                 C   s   t | j|jB  S r   )r   Z	_elementsr   r   r   r   r      s   c                    s4   t  fdd| D rt fdd| D   hS d S )Nc                 3   s    | ]
}  |d kV  qdS )TNr'   .0xr   r   r   	<genexpr>   s    zunion_sets.<locals>.<genexpr>c                    s   g | ]}  |d kr|qS )Tr)   r*   r-   r   r   
<listcomp>   s    zunion_sets.<locals>.<listcomp>)anyr   r   r   r-   r   r      s   c                 C   s   d S r   r   r   r   r   r   r      r   N)Zsympyr   r   r   r   r   r   r   r	   r
   r   Zsympy.multipledispatchr   Zsympy.sets.fancysetsr   r   r   r   r   Zsympy.sets.setsr   r   typer   r   r   r   <module>   sP   0 
















