o
    GZŽhj,  ã                   @   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| v sJ ‚td | vs J ‚dt | vs(J ‚t| vs.J ‚dt ttd dktjƒv s=J ‚dt ttd dktjƒvsLJ ‚dt tt	dktdd	ƒƒvs[J ‚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u sJ ‚tddgddggƒ}| |¡ ¡ tju s¦J ‚tt ttdk tt	hƒjtƒs¶J ‚t
tdd„ ƒ t
tdd„ ƒ tj‰tj‰t ‰ ˆ tdˆƒtju s×J ‚ˆ tdˆƒˆu sáJ ‚ˆ ttdk ˆ ttdk ˆƒƒˆ ttdk tdk @ ˆƒksýJ ‚ˆ t	t	dk ˆ tt	dk ˆƒƒˆ ttdk t	dk @ ˆƒks(J ˆ t	t	dk ˆ tt	dk ˆƒƒƒ‚ˆ t	t	dk ˆ ttdk ˆƒƒˆ t	t	dk t	dk @ ˆƒksEJ ‚ˆ t	t	dk ˆ tt	tk ˆƒƒˆ ttdk t	tk @ ˆƒksbJ ‚tˆ t	tdk ˆ tt	tk ˆƒƒstJ ‚t ttdk ƒjˆu sJ ‚t tftdk ƒjˆu sJ ‚t tt	ftt	k ˆd ƒ}d|v s¢J ‚dtf|vs«J ‚t
t‡ ‡fdd„ƒ t
t‡ ‡fdd„ƒ d S )Nr   é   FTé   é   é   é   é   c                   S   ó   dt ttdktddƒƒv S ©Né   r&   r(   r)   ©r   r    r!   r   © r.   r.   úQ/var/www/auris/lib/python3.10/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/   r0   :   s    c                   S   s   t ttdƒS r2   ©r   r    r.   r.   r.   r/   r0   ;   s    ©r(   r$   c                      s$   ˆ t t dkˆ t tft dkˆd ƒƒS ©Nr(   r$   ©r    r!   r.   )ÚCÚIr.   r/   r0   T   s   $ c                      s   ˆ t tft t dk ˆˆƒS )Nr$   r6   r.   )r7   ÚUr.   r/   r0   V   ó    )r   r    r   r   r   r   r   r   ÚRealsr!   r   Ú	TypeErrorr   r   ÚcontainsZdoitÚtrueÚfalseÚ
isinstanceZbase_setr   ÚIntegersZUniversalSetr   r   )Zsin_sols_principalr1   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.J ‚d S )Nr$   r'   r(   Fr   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u sJ ‚t tttttƒƒdƒtjƒtjks"J ‚d S )Néÿÿÿÿ)r   r    r   r   ZNaturalsr   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J ‚t ttdk tdddƒƒtks'J ‚t tttdk ƒtƒtks5J ‚tdƒ} t tttdkƒtddd| ƒƒttdƒt tttdkƒt| ƒƒƒks[J ‚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‚J ‚d S )	Nr(   éýÿÿÿr   r$   r!   rG   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J ‚t tttdƒttƒƒjthks#J ‚t tttdƒtttƒƒjtthks6J ‚t tttdƒttttd ƒt	j
ƒƒjtƒ ksNJ ‚d S ©Nr   r$   )r   r    r   r!   r   r"   Zfree_symbolsr	   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J ‚t tttdƒtttƒƒjtgks#J ‚t ttdk ttttd ƒt	j
ƒƒjtgks:J ‚t ttdk t ttdkt	j
ƒƒjtgksOJ ‚d S )Nr   é
   r$   r(   )r   r    r   r!   r   r"   Úbound_symbolsr	   r   r   rA   r.   r.   r.   r/   Útest_bound_symbols‚   s   ÿÿ ÿÿrP   c               	   C   s@  t dƒ\} }tttdk tttƒƒ ¡ t| | dk tttƒƒks J ‚tttdk tttƒƒ ¡ t| | dk tttƒƒks:J ‚tttdk ttttd ƒt	j
ƒƒ ¡ t| | dk tt| | d ƒt	j
ƒƒks`J ‚tttfttkt	jd ƒ}|jttgksvJ ‚| ¡ t| |f| |kt	jd ƒks‰J ‚| ¡ tttfttkt	jd ƒ ¡ ksžJ ‚d S )Nz_0 _1r(   r$   )r   r   r    r   r!   r   Zas_dummyr	   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J ‚| tt¡tttdk t tƒƒks)J ‚| tti¡tttdk | ƒks:J ‚ttttk | ƒ tt¡ttttk |  tt¡ƒksTJ ‚tddd‰ tˆ dˆ k t	j
ƒt	ju shJ ‚tddd}tˆ ˆ tk t	j
ƒ ˆ t¡tˆ ˆ tk t	j
ƒks†J ‚ttdd	„ ƒ t|ˆ tk td
dƒƒ t|¡td
dƒks²J t|ˆ tk td
dƒƒ t|¡ƒ‚tˆ ˆ tk tt dƒƒ t|¡tt dƒksÊJ ‚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îJ ‚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 ¡ |¡s0J ‚dtttftt dk t	j
d ƒv sDJ ‚tt‡ fdd	„ƒ d S )Nr$   ÚnT)Únegativer   Úp)Zpositivec                   S   s   t td tdk tjƒS r2   )r   r    r   rA   r.   r.   r.   r/   r0   ­   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/   r0   Â   s    )r   r"   r!   r   r    ÚsubsZ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   s€   t ƒ 3 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.J ‚W d   ƒ d S 1 s9w   Y  d S )Nr(   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 |ƒ¡sJ ‚| d¡dks#J ‚| | ttdk tjƒ¡dks3J ‚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J ‚| |¡du sˆJ ‚| |¡du s‘J ‚| |¡du sšJ ‚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ÕJ ‚d S )Nr(   Fr   r$   ÚmrS   Úa)r   r   rA   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ƒƒv sJ ‚dt ttdktddƒƒv du s J ‚ttdd„ ƒ ttd	d„ ƒ t ttdktddƒƒ d¡tdkksBJ ‚t ttdktddƒƒ d¡tju sUJ ‚t ttdktddƒƒ t	¡t
tt	tddƒƒtdkƒksrJ ‚t tdt d
ktjƒ d
¡td
t tdt d
ktjƒddks’J ‚t ttftt dktjd ƒ} |  d¡r¨J ‚|  d¡s¯J ‚|  d¡r¶J ‚t t	ttfft	t t dktjtjd  ƒ} |  d¡rÓJ ‚|  d¡rÚJ ‚|  d¡ráJ ‚|  d¡rèJ ‚|  d¡sïJ ‚d S )Nr,   r&   r(   r)   é   Fc                   S   r*   r+   r-   r.   r.   r.   r/   r0   ì   r:   ztest_contains.<locals>.<lambda>c                   S   s   dt tdt dktjƒv S )Nr   r(   )r   r    r   r;   r.   r.   r.   r/   r0   ï   r:   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;   rA   )rD   r.   r.   r/   Útest_containsæ   s8   "ÿÿ
ÿÿÿ,ri   c                   C   s|   t ttftdktjd ƒ ttf¡tdktttjƒ@ tttjƒ@ ks$J ‚t ttdktjƒ t¡tttjƒtdk@ ks<J ‚d S r5   )r   r    r!   r   rA   Zas_relationalr   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s&J ‚t tttƒt dkƒ} t ttt| ƒtjƒ}|t tttƒt dktjƒksLJ ‚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szJ ‚dS )z4Tests whether there is basic denesting functionalityr   rG   r(   N)	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/   r0   !  s    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ƒu sJ ‚t ttdk ƒjttƒu s%J ‚d S rK   )	r   r    r   r   r   r   Úkindr
   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>   sJ    $=
(!