U
    ˜9%eX,  ã                   @   s   d dl mZ d dl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 d dlmZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ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) d dl*m+Z+m,Z, edƒZ-edƒZ.edƒZ/edƒZ0edƒZ1dd„ Z2dd„ Z3dd„ Z4dd„ Z5dd „ Z6d!d"„ Z7d#d$„ Z8d%d&„ Z9d'd(„ Z:d)d*„ Z;d+d,„ Z<d-d.„ Z=d/d0„ Z>d1d2„ Z?d3d4„ Z@d5S )6é    )Ú	unchanged)ÚConditionSetÚIntersectionÚ	FiniteSetÚEmptySetÚUnionÚContainsÚImageSet)ÚSetKind)ÚFunctionÚLambda)ÚMod)Ú
NumberKind)ÚooÚpi)ÚEqÚNe)ÚS)ÚSymbolÚsymbols)ÚAbs)ÚasinÚsin)ÚAnd)ÚMatrix)ÚMatrixSymbol)ÚInterval)ÚraisesÚwarns_deprecated_sympyÚwÚxÚyÚzÚfc                     sŽ  t ttttƒdƒtddt ddƒƒ} t| ks0t‚td | ks@t‚dt | ksPt‚t| ks\t‚dt ttd dktj	ƒkszt‚dt ttd dktj	ƒks˜t‚dt tt
dktdd	ƒƒks¶t‚ttd
d„ ƒ tdddƒ}t |t|tddgddggƒ |ƒƒ}tddgddggƒ}| |¡ ¡ tjks"t‚tddgddggƒ}| |¡ ¡ tjksPt‚tt ttdk tt
hƒjtƒsrt‚ttdd„ ƒ ttdd„ ƒ tj‰tj‰t ‰ ˆ tdˆƒtjks¶t‚ˆ tdˆƒˆksÌt‚ˆ ttdk ˆ ttdk ˆƒƒˆ ttdk tdk @ ˆƒkst‚ˆ t
t
dk ˆ tt
dk ˆƒƒˆ ttdk t
dk @ ˆƒks\tˆ t
t
dk ˆ tt
dk ˆƒƒƒ‚ˆ t
t
dk ˆ ttdk ˆƒƒˆ t
t
dk t
dk @ ˆƒks–t‚ˆ t
t
dk ˆ tt
tk ˆƒƒˆ ttdk t
tk @ ˆƒksÐt‚tˆ t
tdk ˆ tt
tk ˆƒƒsôt‚t ttdk ƒjˆkst‚t tftdk ƒjˆks*t‚t tt
ftt
k ˆd ƒ}d|ksPt‚dtf|ksbt‚tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )Nr   é   FTé   é   é   é   é   c                   S   s   dt ttdktddƒƒkS ©Né   r&   r(   r)   ©r   r    r!   r   © r-   r-   úa/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/sets/tests/test_conditionset.pyÚ<lambda>.   s   ÿztest_CondSet.<locals>.<lambda>ÚXc                   S   s   t ttd tthƒS ©Nr(   )r   r    r!   r-   r-   r-   r.   r/   :   ó    c                   S   s   t ttdƒS r1   ©r   r    r-   r-   r-   r.   r/   ;   r2   ©r(   r$   c                      s$   ˆ t t dkˆ t tft dkˆd ƒƒS ©Nr(   r$   ©r    r!   r-   )ÚCÚIr-   r.   r/   T   r2   c                      s   ˆ t tft t dk ˆˆƒS )Nr$   r6   r-   )r7   ÚUr-   r.   r/   V   r2   )r   r    r   r   r   r   ÚAssertionErrorr   r   ÚRealsr!   r   Ú	TypeErrorr   r   ÚcontainsZdoitÚtrueÚfalseÚ
isinstanceZbase_setr   ÚIntegersZUniversalSetr   r   )Zsin_sols_principalr0   Z
matrix_setÚYÚZÚcr-   )r7   r8   r9   r.   Útest_CondSet   sb    ÿ$ÿ
ÿ
ÿÿÿ
ÿ
$rE   c                  C   s`   t ttd dktddddƒƒ} tddddƒ}t ttd dktddddƒƒ}t| |ƒ|ks\t‚d S )Nr$   r'   r(   Fr   r%   )r   r    r   r   r:   )Zinput_conditionsetZother_domainZoutput_conditionsetr-   r-   r.   Útest_CondSet_intersectY   s    ÿ   ÿÿrF   c                   C   sH   t ttttƒtjƒtjkst‚t tttttƒƒdƒtjƒtjksDt‚d S )Néÿÿÿÿ)	r   r    r   r   ZNaturalsr:   r   r   r   r-   r-   r-   r.   Útest_issue_9849c   s    ÿÿrH   c               	   C   s
  t tttdk tdkƒtdddƒƒtdƒks.t‚t ttdk tdddƒƒtksNt‚t tttdk ƒtƒtksjt‚tdƒ} t tttdkƒtddd| ƒƒttdƒt tttdkƒt| ƒƒƒks¶t‚t ttt	tdƒdƒtddd| ƒƒttddƒt ttt	tdƒdƒt| ƒƒƒkst‚d S )	Nr(   éýÿÿÿr   r$   r!   rG   r%   r'   )
r   r    r   r   r:   r   r   r   r   r   )r!   r-   r-   r.   Ú$test_simplified_FiniteSet_in_CondSetj   s     ÿ  ÿ ÿÿrJ   c                   C   s    t tttdƒttƒƒjtthks$t‚t tttdƒttƒƒjthksFt‚t tttdƒtttƒƒjtthkslt‚t tttdƒtt	ttd ƒt
jƒƒjtƒ ksœt‚d S ©Nr   r$   )r   r    r   r!   r   r"   Zfree_symbolsr:   r	   r   r   rA   Úsetr-   r-   r-   r.   Útest_free_symbolsw   s    ÿÿÿÿÿrM   c                   C   s¢   t tttdƒttƒƒjtgks"t‚t tttdƒtttƒƒjtgksFt‚t ttdk tt	ttd ƒt
jƒƒjtgkstt‚t ttdk t ttdkt
jƒƒjtgksžt‚d S )Nr   é
   r$   r(   )r   r    r   r!   r   r"   Úbound_symbolsr:   r	   r   r   rA   r-   r-   r-   r.   Útest_bound_symbols‚   s    ÿÿ"ÿÿrP   c               	   C   sD  t dƒ\} }tttdk tttƒƒ ¡ t| | dk tttƒƒks@t‚tttdk tttƒƒ ¡ t| | dk tttƒƒkstt‚tttdk tt	ttd ƒt
jƒƒ ¡ t| | dk tt	| | d ƒt
jƒƒksÀt‚tttfttkt
jd ƒ}|jttgksìt‚| ¡ t| |f| |kt
jd ƒkst‚| ¡ tttfttkt
jd ƒ ¡ ks@t‚d S )Nz_0 _1r(   r$   )r   r   r    r   r!   r   Zas_dummyr:   r	   r   r   rA   r;   rO   )Z_0Z_1Úer-   r-   r.   Útest_as_dummy   s$    ÿÿ$  ÿÿ(rR   c                     s¦  t ttƒ} tttdk | ƒ}| tt¡|ks.t‚| tt¡tttdk t tƒƒksRt‚| tti¡tttdk | ƒkstt‚ttttk | ƒ tt¡ttttk |  tt¡ƒks¨t‚t	ddd‰ tˆ dˆ k t
jƒt
jksÐt‚t	ddd}tˆ ˆ tk t
jƒ ˆ t¡tˆ ˆ tk t
jƒkst‚ttdd	„ ƒ t|ˆ tk td
dƒƒ t|¡td
dƒkshtt|ˆ tk td
dƒƒ t|¡ƒ‚tˆ ˆ tk tt dƒƒ t|¡tt dƒksšt‚tttƒttƒdk tthƒ ttƒt¡tttƒttƒdk tthƒksät‚t	dƒ}tt|d| t ttƒ ƒt
jƒ}tt|d| t tt
jd ƒ ƒt
jƒ}tttttddƒƒ|ƒ tt
jd ¡ |¡sht‚dtttftt dk t
jd ƒkst‚tt‡ fdd	„ƒ d S )Nr$   ÚnT)Únegativer   Úp)Zpositivec                   S   s   t td tdk tjƒS r1   )r   r    r   rA   r-   r-   r-   r.   r/   ­   s     ÿz#test_subs_CondSet.<locals>.<lambda>éûÿÿÿr&   r(   Úkr%   rG   ©r   r(   c                      s   t ˆ ˆ dk tddƒƒS )Niöÿÿÿr   rN   )r   r   r-   ©rS   r-   r.   r/   Â   r2   )r   r"   r!   r   r    Úsubsr:   Zxreplacer   r   r   rA   r   r   Ú
ValueErrorr   r   r#   r	   r   r   r   ZOner   Údummy_eqr<   )ÚsrD   rU   rW   Zimg1Zimg2r-   rY   r.   Útest_subs_CondSet   s    
$" ÿÿ ÿÿ
  ÿ ÿÿ  ÿ ÿÿ  
ÿ ÿ
þ
 ÿÿ
"( ÿÿ ÿÿ
(r^   c                	   C   sj   t ƒ Z tttftd tt htjd ƒtttfttd dƒttt dƒ@ tjd ƒks\t‚W 5 Q R X d S )Nr(   r$   r   )r   r   r    r!   r   r;   r   r:   r-   r-   r-   r.   Útest_subs_CondSet_tebrÅ   s     ,ÿr_   c                  C   s¶  t } tj}| ttdk |ƒ}| | ttdk |ƒ¡s4t‚| d¡dksFt‚| | ttdk tjƒ¡dksft‚t ttfttd dƒttt dƒ@ tjd ƒ}t ttfttd dƒttt dƒ@ tjd ƒ}t ttfttd dƒttt dƒ@ tj	d ƒ}| |¡sþt‚| |¡dkst‚| |¡dks&t‚| |¡dks:t‚t
dƒ}t
dƒ}t
dƒ}tt||t ƒtjƒ}	tt||t ƒtjƒ}
t tt|dƒ|	ƒ}t tt|dƒ|
ƒ}| |¡s²t‚d S )Nr(   Fr   r$   ÚmrS   Úa)r   r   rA   r    r\   r!   r:   r;   r   Z	Complexesr   r	   r   r   r   )r7   r8   rD   Úc1Úc2Úc3r`   rS   ra   Zd1Zd2r-   r-   r.   Útest_dummy_eqË   s*     ...re   c                  C   sô  dt ttdktddƒƒkst‚dt ttdktddƒƒkdks@t‚ttdd„ ƒ ttd	d„ ƒ t ttdktddƒƒ d¡tdkks„t‚t ttdktddƒƒ d¡tj	ksªt‚t ttdktddƒƒ t
¡ttt
tddƒƒtdkƒksät‚t tdt d
ktjƒ d
¡td
t tdt d
ktjƒddks&t‚t ttftt dktjd ƒ} |  d¡rTt‚|  d¡sdt‚|  d¡rtt‚t t
ttfft
t t dktjtjd  ƒ} |  d¡r°t‚|  d¡rÀt‚|  d¡rÐt‚|  d¡ràt‚|  d¡sðt‚d S )Nr+   r&   r(   r)   é   Fc                   S   s   dt ttdktddƒƒkS r*   r,   r-   r-   r-   r.   r/   ì   r2   ztest_contains.<locals>.<lambda>c                   S   s   dt tdt dktjƒkS )Nr   r(   )r   r    r   r;   r-   r-   r-   r.   r/   ï   r2   r   )Úevaluater$   )r$   r(   rX   r4   )r4   r%   )r4   ©r%   r'   )r(   rh   )r   r    r   r:   r!   r   r<   r=   r   r?   r   r   r   r;   rA   )rD   r-   r-   r.   Útest_containsæ   sD    "ÿÿÿÿÿÿÿÿ
,ri   c                   C   sx   t ttftdktjd ƒ ttf¡tdktttftjd ƒ@ ksDt‚t ttdktjƒ t¡tttjƒtdk@ kstt‚d S r5   )r   r    r!   r   rA   Zas_relationalr   r:   r-   r-   r-   r.   Útest_as_relational  s    "ÿÿrj   c                  C   sø   t tttƒt dkƒ} t ttt| ƒtjƒ}|t tttƒt dktjƒksLt‚t tttƒt dkƒ} t ttt| ƒtjƒ}|t tttƒt dktjƒks˜t‚t tttƒt dkƒ t	ddƒ¡} t ttt| ƒtjƒ}|t tttƒt dkt	ddƒƒksôt‚dS )z4Tests whether there is basic denesting functionalityr   rG   r(   N)
r   r    r   r   r   r;   r:   r!   Z	intersectr   )ÚinnerÚouterr-   r-   r.   Útest_flatten  s    """rm   c                     s*   ddl m}  tdƒ‰ t| ‡ fdd„ƒ d S )Nr   ©ÚBadSignatureErrorza,ac                      s   t ˆ tdk ƒS )Nr   r3   r-   ©Údupr-   r.   r/   !  r2   z test_duplicate.<locals>.<lambda>)Úsympy.core.functionro   r   r   rn   r-   rp   r.   Útest_duplicate  s    rs   c                   C   sN   t ttttƒdƒtddt ƒƒjttƒks.t	‚t ttdk ƒjttƒksJt	‚d S rK   )
r   r    r   r   r   r   Úkindr
   r   r:   r-   r-   r-   r.   Útest_SetKind_ConditionSet$  s    .ru   N)AZsympy.core.exprr   Z
sympy.setsr   r   r   r   r   r   r	   Zsympy.sets.setsr
   rr   r   r   Zsympy.core.modr   Zsympy.core.kindr   Zsympy.core.numbersr   r   Zsympy.core.relationalr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.logic.boolalgr   Zsympy.matrices.denser   Z"sympy.matrices.expressions.matexprr   r   Zsympy.testing.pytestr   r   r   r    r!   r"   r#   rE   rF   rH   rJ   rM   rP   rR   r^   r_   re   ri   rj   rm   rs   ru   r-   r-   r-   r.   Ú<module>   sH   $=
(!