o
    *ήc0                     @   s   d dl mZmZ d dlmZmZmZ d dlmZm	Z	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 d dlmZ d dl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#S )$    )FunctionUndefinedFunction)IRationalpi)GreaterThanLessThanStrictGreaterThanStrictLessThan)DummySymbolWildsymbols)sympify)uniquely_named_symbol_symbolStr)raises)disambiguatec                  C   sF   t d} t d}t d}| |  kr|ksJ  J ttdd  d S )Nabc                   S      t  S N)r    r   r   C/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_symbol.py<lambda>       ztest_Str.<locals>.<lambda>)r   r   	TypeError)a1a2r   r   r   r   test_Str   s
   r    c                  C   s   t d} t d}t d}td}td}| |ksJ | |ks J ||ks&J ||ks,J ||ks2J t dt dks<J tdtdksFJ tdtd}t|tsSJ tdtd\}}t|tsbJ t|tsiJ ttdd  d S )Nr   xdclszc,dc                   S   r   r   r   r   r   r   r   r   &   r   ztest_Symbol.<locals>.<lambda>)r   r   r   
isinstancer   r   )r   x1x2xdummy1xdummy2r"   cr   r   r   test_Symbol   s$   r,   c                   C   s   t  t  ksJ d S r   r   r   r   r   r   
test_Dummy)   s   r.   c                  C   s   t tdd  tdddtdddksJ tdddtdddks#J tddd} td}| |ks3J tddd}| |ks?J t jtdddjksLJ d S )	Nc                   S   s
   t ddS )N   dummy_indexr-   r   r   r   r   r   .   s   
 z.test_Dummy_force_dummy_index.<locals>.<lambda>r"      r0   d1d2   )r   AssertionErrorr   _count)r3   r4   d3r   r   r   test_Dummy_force_dummy_index-   s   r9   c                  C   s  t } tdtd}}||kt||ksJ |dkt|dks!J ||kt||ks,J |dkt|dks7J d|kt|dksBJ d|kt|dksMJ | d|ktd|ksZJ | d|ktd|ksgJ ||kt||ksrJ |dkt|dks}J ||k t||ksJ |dk t|dksJ d|k t|dksJ d|kt|dksJ | d|ktd|ksJ | d|k td|ksJ |d d|  d }|dkt|dksJ d|kt|dksJ |dkt|dksJ d|k t|dksJ |dkt|dksJ d|kt|dksJ |dk t|dksJ d|kt|dks)J | d|ktd|ks7J | d|ktd|ksEJ | d|k td|ksSJ | d|ktd|ksaJ d S )Nr!   yr   r2      r/   )r   r   r   r   r	   r
   )Sr!   r:   er   r   r   
test_lt_gt:   s>    r>   c                      s   t d tt fdd d S )Nr!   c                      s   t  S r   )lenr   r!   r   r   r   f       ztest_no_len.<locals>.<lambda>r   r   r   r   r   r@   r   test_no_lenc   s   rC   c            	      C   s:  t } td\}}}g | d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k | d|k | d|k | d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k | d|k | d|k | d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k | d|k | d|k | d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k | d|k | d|k | d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k| d|k | d|k | d|k |dk|dk|dk|dk|dk|dk|dk|dk|dk|dk |dk |dk |dk|dk|dk|dk|dk|dk|dk|dk|dk|dk |dk |dk |dk|dk|dk|dk|dk|dk|dk|dk|dk|dk |dk |dk |dk|dk|dk|dk|dk|dk|dk|dk|dk|dk |dk |dk ||k||k||k||k||k||k||k||k||k||k||k||k||k||k||k||k||k||k||k ||k ||k ||k ||k ||k |t || k|t || k|t || k|t || k|t || k|t || k|t || k|t || k|t || k|t || k |t || k |t || k ddR }|d d }t|D ]\}}||d	 d  D ]
}||ksJ qqd S )
Nx,y,zr   z3/7g      ?r2   TFr/   )r   r   r   	enumerate)	r<   r!   r:   zr=   left_eie1e2r   r   r   test_ineq_unequali   sZ  
























	
	
	



































   !!!"""###$$$&&&&&&''''''(((((())))))+++,,,---...//2rL   c                  C   s  t } td}td}tddd}tddd}tdddd	}||||| || | d
| dttddtg}dd }dd }dd }	dd }
td|	gd} td|
gd}td||||gd}td|gd}td|gd}td||gd}| |||||g}| |||||f|||| || d
dttddf	||d
dttddtf|||dttddf||| || d
df||dfi}|D ]#}|D ]}||}||| v r|| || v sJ q|d u sJ qqd S )Nr!   r:   pT)positivekintegern)rQ   rN   r5   r2   c                 S      | j S r   )
is_integerrO   r   r   r   r      r   z&test_Wild_properties.<locals>.<lambda>c                 S   rT   r   )is_positiverV   r   r   r   r      r   c                 S   rT   r   )	is_SymbolrV   r   r   r   r      r   c                 S   rT   r   )is_extended_realrV   r   r   r   r      r   r<   )
propertiesRY)excludePKN)r   r   r   r   r   r   match)r<   r!   r:   rM   rO   rR   given_patternsintegerp	positivepsymbolprealpr[   r\   r^   r_   r`   given_wildcards	goodmatchApatr"   r   r   r   test_Wild_properties   sF    
rk   c                  C   s  t d} t d}t d}td| ksJ td| ksJ td| ks$J td| fks-J td| fks6J td| fks?J td	| |fksIJ td
| ||fksTJ td| ||fks_J td| ||fksjJ td| ||fksuJ t d}t d}td|ksJ td|fksJ td||fksJ td|fksJ td|ffksJ td| ||ffksJ td||fksJ td||ffksJ td||f| ||ffksJ td| ||fksJ tg d| ||gksJ th d| ||hksJ ttdd  ttdd  ttdd  ttdd  tdd d!\}}|jr-|js/J t d"}t d#}t d$}	t d%}
t d&}td'd(ksLJ td)|fksVJ td*||fksaJ td+|||	fksmJ td,d(ksvJ td-|fksJ td.||fksJ td/|||	fksJ td0d(ksJ td1|fksJ td2||	fksJ td3||	| ||fksJ td4|||	|
|fksJ td5|||	f|
|ffksJ t d6}t d7}t d8}t d9}td:| ||fksJ td;||||| ||fksJ td<||||f| ||ffksJ t d=}t d>}t d?}t d@}tdA||||fks<J tdB||||| ||fksLJ tdC||||f| ||ffks^J ttdDtdEdF dF tksoJ dGdH }|dIdJks|J |dKdLksJ |dMdNksJ |dOdPksJ |dQdRksJ |dSdTksJ |dUdVksJ |dWdXksJ |dYdZksJ |d[tdF d\tdFfd]  ksJ |d^d_ksJ |d`daksJ |dbdcksJ |dddeksJ |dfdgksJ |dhdiksJ |djdkksJ |dldmks J |dndoks)J ttdpd  ttdqd  ttdrd  ttdsd  ttdtd  ttdud  d S )vNr!   r:   rG   zx z x zx,zx, zx ,zx , yrD   zx y zx,y,z,zx y z xyzabcxyz,xyz,abc)rm   )ro   )rl   )rm   rn   )rp   )rp   rD   )r!   r:   rG   >   r!   r:   rG   c                   S      t dS )N r   r   r   r   r   r      rA   ztest_symbols.<locals>.<lambda>c                   S   rq   )N,rs   r   r   r   r   r      rA   c                   S   rq   )Nzx,,y,,zrs   r   r   r   r   r      rA   c                   S   rq   )N)r!   rr   r:   rr   rG   rs   r   r   r   r   r      rA   zx,yTrealx0r'   r(   y0y1zx0:0r   zx0:1zx0:2zx0:3zx:0zx:1zx:2x:3zx1:1zx1:2zx1:3z
x1:3,x,y,zzx:3,y:2)rz   zy:2r   r   r+   r"   x:zza:d,x:z)za:dr{   aaabacadaa:dzaa:d,x:z)r   r{   )zq:2zu:2r#   r   c                 S   s   t t| S r   )strr   )sr   r   r   sym-  s   ztest_symbols.<locals>.symza0:4z(a0, a1, a2, a3)z	a2:4,b1:3z(a2, a3, b1, b2)za1(2:4)z
(a12, a13)za0:2.0:2z(a0.0, a0.1, a1.0, a1.1)zaa:czz(aaz, abz, acz)zaa:c0:2z(aa0, aa1, ab0, ab1, ac0, ac1)zaa:ba:bz(aaa, aab, aba, abb)za:3bz(a0b, a1b, a2b)za-1:3bz(a-1b, a-2b)za:2\,:2z (a0,0%s, a0,1%s, a1,0%s, a1,1%s)r;   zx(:a:3)z(x(a0), x(a1), x(a2))zx(:c):1z(xa0, xb0, xc0)z	x((:a)):3z(x(a)0, x(a)1, x(a)2)zx(:a:3z(x(a0, x(a1, x(a2)z:2z(0, 1)z:bz(a, b)z:b:2z(a0, a1, b0, b1)z:2:2z(00, 01, 10, 11)z:b:bz(aa, ab, ba, bb)c                   S   rq   )N:rs   r   r   r   r   r   D  rA   c                   S   rq   )Nza:rs   r   r   r   r   r   E  rA   c                   S   rq   )Nz::rs   r   r   r   r   r   F  rA   c                   S   rq   )Nza::rs   r   r   r   r   r   G  rA   c                   S   rq   )Nz:a:rs   r   r   r   r   r   H  rA   c                   S   rq   )Nz::ars   r   r   r   r   r   I  rA   )	r   r   r   
ValueErroris_realtyper   r   chr)r!   r:   rG   rm   rn   r   r   rw   r'   r(   rx   ry   r+   r"   r|   r}   r~   r   r   r   r   r   test_symbols   s     $ $"r   c                      sx   ddl m mmm ttfdd ttfdd ttfdd tt fdd ttfdd d S )	Nr   )alphaphibetatc                          dS )Nr2   r   r   r   r   r   r   N  rA   z:test_symbols_become_functions_issue_3539.<locals>.<lambda>c                      r   Ng      @r   r   r   r   r   r   O  rA   c                      r   r   r   r   )r   r   r   r   P  rA   c                      r   r   r   r   )r   r   r   r   Q  rA   c                      s    S r   r   r   )r   r   r   r   r   R  rA   )	sympy.abcr   r   r   r   r   r   r   r   )r   r   r   r   r   (test_symbols_become_functions_issue_3539L  s   r   c                  C   s.   t d} t d}|| ksJ ttdd  d S )Nr!   c                   S   rq   )Nr/   r%   r   r   r   r   r   Z  rA   ztest_unicode.<locals>.<lambda>rB   )xur!   r   r   r   test_unicodeU  s   r   c                  C   sR  t } td}| ||ksJ | d|ksJ t| d|dks!J t| d|d d| fdks2J tddd}| d|f|ksBJ | ||f|ksLJ | dddjsUJ td}| d|fddjsdJ tddd}| d|fjssJ | d|fddjs~J | dtdd	d
 djdksJ | dtddd
 djdksJ t|||ksJ d S )Nr!   rw   r/   Tru   r:   Fr'   c                 S   s   t | dS )N1)r   rstriprI   r   r   r   r   n  s    z7test_uniquely_named_symbol_and_Symbol.<locals>.<lambda>)comparec                 S   s   | d S )N_r   r   r   r   r   r   p  rA   )modifyx1_)r   r   r   r   namer   )Fr!   _xr:   rr   r   r   %test_uniquely_named_symbol_and_Symbol]  s4   "

r   c                  C   sf  t d\} }}}}}td|tdtdf}tdtdf}tdtdf}| tdf}	tddd| tdf}
t| ||| |fksCJ t| | |fksMJ t| | |fksWJ t|	 || fksaJ t|
 |
d ||fksnJ t|
 d | ksxJ |td| f}|td |f}t| || | fksJ t| || |fksJ ttdtd|tdfksJ d S )	Nzx y y_1 _x x_1 x_2r:   r!   TrP   x_1r   x_1_1)r   r   r   r   )r!   r:   y_1r   r   x_2t1t2t3t4t5t6t7r   r   r   test_disambiguatet  s&   
r   N)&sympy.core.functionr   r   sympy.core.numbersr   r   r   sympy.core.relationalr   r   r	   r
   sympy.core.symbolr   r   r   r   sympy.core.sympifyr   r   r   r   sympy.testing.pytestr   r   r    r,   r.   r9   r>   rC   rL   rk   r   r   r   r   r   r   r   r   r   <module>   s*    )<+|	