o
    8Va                     @   s  d dl mZmZ d dl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mZmZmZ d dlmZ ejejejejejejg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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 )    )SSymbol)	fuzzy_and
fuzzy_bool	fuzzy_notfuzzy_or)Eq)	FiniteSetIntervalSetUnion
ProductSet)	ComplexesRealsRange	Rationals)dispatchc                 C   s   d S N abr   r   >/usr/lib/python3/dist-packages/sympy/sets/handlers/issubset.pyis_subset_sets      r   c                 C   sx   t | j|jk r
dS t | j|jkrdS |jr%| js%t t| j|jr%dS |jr6| js8t t| j|jr:dS d S d S d S NF)r   startend	left_openr   
right_openr   r   r   r   r      s   c                 C   s   t | jjrdS d S r   )r   measureZis_zero)
a_intervalb_fsr   r   r   r      s   c                    s   t dd |jD rBdd |jD }t  fdd|D rdS t  fdd|D r,dS  jjrDdd	 t  fd
d|D rFdS d S d S d S )Nc                 s   s    | ]
}t |ttfV  qd S r   )
isinstancer
   r	   .0sr   r   r   	<genexpr>$   s    !is_subset_sets.<locals>.<genexpr>c                 S   s   g | ]	}t |tr|qS r   )r#   r
   r$   r   r   r   
<listcomp>%   s    z"is_subset_sets.<locals>.<listcomp>c                 3   s     | ]}t  j|jk V  qd S r   )r   r   r$   r!   r   r   r'   &       Fc                 3   s     | ]}t  j|jkV  qd S r   )r   r   r$   r*   r   r   r'   (   r+   c                 S   s$   t t| j|jkt| j|jkgS r   )r   r   r   r   )s1s2r   r   r   <lambda>+   s    z is_subset_sets.<locals>.<lambda>c                 3   s    | ]}| V  qd S r   r   r$   r!   Z
no_overlapr   r   r'   /       )allargsr    Z
is_nonzero)r!   Zb_uZ	intervalsr   r/   r   r   "   s   c                 C   sF   | j |j   krdkr!n d S tt| j|jkt| j|jkgS d S )N   )stepr   r   r   stopr   r   r   r   r   2   s
   c                 C   sh   | j jr2|jr| jjr| j|jk}n| j|jk}|jr&| jjr&| j|jk }n| j|jk}t	||gS d S r   )
r4   Zis_positiver   infZ	is_finiteleftr   suprightr   )a_rangeZ
b_intervalZ	cond_leftZ
cond_rightr   r   r   r   8   s   c                    s   z| j }W n
 ty   Y d S w |t krdS tdd | jD r-t fdd| D S t| }t }d} D ]-}|jrD|| n
t	|j
rJn|d7 }|d8 }t||| kr] dS t|dkrf dS q9d S )NFc                 s   s    | ]}| tV  qd S r   )Zhasr   )r%   argr   r   r   r'   N   r0   r(   c                 3       | ]}  |V  qd S r   containsr%   xb_finitesetr   r   r'   O   r0   r   r3   T)size
ValueErrorlenanyr2   r   setZ
is_Integerdiscardr   
is_integer)r:   rB   Za_sizeZa_setZb_remainingZcnt_candidater   r   rA   r   r   E   s2   

c                 C      | j jrdS d S r   r    Zis_extended_nonzero)r!   Zb_ranger   r   r   r   g      c                 C   rJ   r   rK   )r!   Zb_rationalsr   r   r   r   l   rL   c                 C      dS NTr   r   r   r   r   r   q   r   c                 C   rM   r   r   r   r   r   r   r   u   r   c                 C   rM   r   r   r   r   r   r   r   y   r   c                 C   rM   r   r   r   r   r   r   r   }   r   c                 C   rM   rN   r   r   r   r   r   r      r   c                 C   rM   r   r   r   r   r   r   r      r   c                    s   t  fdd| D S )Nc                 3   r<   r   r=   r?   r"   r   r   r'      r0   r(   )r   )Za_psr"   r   rO   r   r      s   N)Zsympyr   r   Zsympy.core.logicr   r   r   r   Zsympy.core.relationalr   Zsympy.sets.setsr	   r
   r   r   r   Zsympy.sets.fancysetsr   r   r   r   Zsympy.multipledispatchr   ZNaturalsZ	Naturals0ZIntegersZ	_inf_setsr   r   r   r   r   <module>   sN    






!







