U
    ZÊ¹j"  ã                   @   s0  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
 d dlmZ d dlmZ d dlmZ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„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd „ Z&d!d"„ Z'd#d$„ Z(d%d&„ Z)d'd(„ Z*d)d*„ Z+d+d,„ Z,d-d.„ Z-d/S )0é    )ÚAdd)ÚBasic)ÚTuple)ÚS)ÚSymbolÚsymbols)ÚAnd)ÚStr)ÚCompoundÚVariable)ÚdeconstructÚ	constructÚunifyÚis_associativeÚis_commutative)ÚxÚyÚzÚnc                  C   sÂ   t tdƒtdƒtdƒƒ} tt dƒ}t| ƒ|ks2t‚tdƒdksBt‚ttƒtksRt‚tttfd�ttƒkslt‚ttdtdd�ƒttdtfƒks�t‚ttdtdd�tfd�ttdttƒfƒks¾t‚d S )Né   é   é   )r   r   r   ©Ú	variablesF©Úevaluate)r   r   r
   r   ÚAssertionErrorr   r   r   ©ÚexprÚexpected© r    ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/unify/tests/test_sympy.pyÚtest_deconstruct   s    
$ÿr"   c                  C   sH   t ttdƒtdƒtdƒfƒ} ttdƒtdƒtdƒƒ}t| ƒ|ksDt‚d S ©Nr   r   r   )r
   r   r   r   r   r   r    r    r!   Útest_construct   s    r$   c                  C   sb   t tdƒt tdƒƒtdƒƒ} tt tdƒtt tdƒƒtdƒfƒ}t| ƒ|ksNt‚t|ƒ| ks^t‚d S r#   )r   r   r
   r   r   r   r   )r   Zcmpdr    r    r!   Útest_nested   s    "r%   c                  C   s”   t tdƒtdƒtdƒƒ} ttdƒ\}}}t |||ƒ}tt| |i |||fƒƒ|d|d|digksbt‚tt| ||||fd�ƒ|d|d|digks�t‚d S )Nr   r   r   Úabcr   ©r   r   Úmapr   Úlistr   r   )r   ÚaÚbÚcÚpatternr    r    r!   Ú
test_unify$   s    .ÿr.   c                   C   s@   t tttdƒtdƒƒttdƒtƒi tfd�ƒtdigks<t‚d S )Nr   r   r   )r)   r   r   r   r   r   r    r    r    r!   Útest_unify_variables,   s    r/   c                  C   sx   t tdƒtdƒƒ} ttdƒ\}}t ||ƒ}tt| |i ||fƒƒ|d|digksRt‚tt| ||di||fƒƒg kstt‚d S )Nr   r   Úabé   r'   )r   r*   r+   r-   r    r    r!   Útest_s_input/   s
    
(r2   c                    s6   t | ƒ} t ˆ ƒ‰ t| ƒtˆ ƒko4t‡ fdd„| D ƒƒS )Nc                 3   s   | ]}|ˆ kV  qd S ©Nr    )Ú.0r   ©r+   r    r!   Ú	<genexpr>9   s     ziterdicteq.<locals>.<genexpr>)ÚtupleÚlenÚall)r*   r+   r    r5   r!   Ú
iterdicteq6   s    r:   c                  C   s²   t ddddd�} ttdƒ\}}}t |||dd�}tt| |i |||fƒƒ}|d|d|di|d|d|di|d|d|di|d|d|di|d|d|di|d|d|dif}t||ƒs®t‚d S ©Nr   r   r   Fr   r&   )r   r(   r   r7   r   r:   r   ©r   r*   r+   r,   r-   Úresultr   r    r    r!   Útest_unify_commutative;   s    ûr>   c                  C   sl  t ddddd�} ttdƒ\}}}t ||dd�}tt|ƒƒs>t‚tt|ƒƒsNt‚tt| |i ||fƒƒ}|d|t dddd�i|d|t dddd�i|d|t dddd�i|d|t dddd�i|d|t dddd�i|d|t dddd�i|t dddd�|di|t dddd�|di|t dddd�|di|t dddd�|di|t dddd�|di|t dddd�|dig}t	||ƒ�sht‚d S r;   )
r   r(   r   r   r   r   r   r)   r   r:   r<   r    r    r!   Útest_unify_iterJ   s(    õr?   c                  C   sn   ddl m} m} |tƒ| tƒd  }ttdƒ\}}||ƒ| |ƒd  }tt||i ||fƒƒ|tigksjt‚d S )Nr   ©ÚcosÚsinr   Zpq)	Ú(sympy.functions.elementary.trigonometricrA   rB   r   r(   r   r)   r   r   )rA   rB   r   ÚpÚqr-   r    r    r!   Útest_hard_matcha   s
    rF   c                  C   sŽ   ddl m}  | dttƒ}| dddƒ}| dddƒ}tt||i ttdƒgd�ƒtdƒtdƒtdigksft‚tt||i ttdƒgd�ƒg ksŠt‚d S )	Nr   )ÚMatrixSymbolÚXÚYr   ÚZr   r   )Z"sympy.matrices.expressions.matexprrG   r   r)   r   r	   r   )rG   rH   rI   rJ   r    r    r!   Útest_matrixh   s    6rK   c                  C   s*   t td  } tt| ƒƒ}t|ƒ |j d S )Nr   )r   r   r   r   Ústrr   )r   Zrebuiltr    r    r!   Útest_non_frankenAddsp   s    rM   c            	      C   sh   ddl m}  tdƒ\}}}}}| |||ƒ}| ||ƒ}||f}|| ||ƒ||itt|||d�ƒksdt‚d S )Nr   ©Ú	FiniteSetz	a,b,c,x,yr   )Úsympy.sets.setsrO   r   r7   r   r   )	rO   r*   r+   r,   r   r   ÚsÚtr   r    r    r!   Útest_FiniteSet_commutivityy   s    
rS   c               	   C   s¤   ddl m}  tdƒ\}}}}}}| ttdƒ|ƒ|t||ƒƒ}| |t||ƒƒ}||f}	|d|| |t||ƒƒi|||| |ttdƒ|ƒƒif}
tt|||	d�|
ƒs t‚d S )Nr   rN   za,b,c,x,y,zr   r   )rP   rO   r   r   r   r:   r   r   )rO   r*   r+   r,   r   r   r   r   r-   r   r   r    r    r!   Útest_FiniteSet_complex�   s    ÿrT   c                  C   sL   t tf} t tdkttdk if}tttdktdk @ tt tƒ| d�|ƒsHt‚d S )Nr   r   r   )r   r   r   r   r:   r   r   r   )r   r   r    r    r!   Útest_andŒ   s
     ÿrU   c                  C   sN   ddl m}  tt| ddƒ| ddƒ | ddƒ| ddƒ | ddƒfd�ƒsJt‚d S )	Nr   ©ÚIntervalr   é
   é   é   é   r   )rP   rW   r)   r   r   rV   r    r    r!   Ú
test_Union’   s
    
þr\   c                   C   s@   t ttt ƒƒst‚t ttt ƒƒs(t‚t ttt ƒƒr<t‚d S r3   )r   r   r   r   r   r    r    r    r!   Útest_is_commutative˜   s    r]   c                  C   sž   ddl m} m}m}m} ddlm}m} |dƒ|dƒ |dƒ d|dƒ |dƒ  }| ||ƒ ||ƒ |||ƒ ||ƒ  }tt	||| |||fd�ƒsšt
‚d S )Nr   )r*   r+   r,   Údr@   r   é   r1   r   )Ú	sympy.abcr*   r+   r,   r^   rC   rA   rB   Únextr   r   )r*   r+   r,   r^   rA   rB   ÚeqÚpatr    r    r!   Útest_commutative_in_commutative�   s
    ,(rd   N).Zsympy.core.addr   Zsympy.core.basicr   Zsympy.core.containersr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.logic.boolalgr   r	   Zsympy.unify.corer
   r   Zsympy.unify.usympyr   r   r   r   r   r`   r   r   r   r   r"   r$   r%   r.   r/   r2   r:   r>   r?   rF   rK   rM   rS   rT   rU   r\   r]   rd   r    r    r    r!   Ú<module>   s6   	