U
    ˜9%e?  ã                   @   sÐ  d dl mZmZmZ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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 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%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 „ Z0d!d"„ Z1d#d$„ Z2d%d&„ Z3d'd(„ Z4d)d*„ Z5d+d,„ Z6d-d.„ Z7d/d0„ Z8d1d2„ Z9d3d4„ Z:d5d6„ Z;d7d8„ Z<d9d:„ Z=d;d<„ Z>d=d>„ Z?d?d@„ Z@dAdB„ ZAdCdD„ ZBdEdF„ ZCdGdH„ ZDdIdJ„ ZEdKS )Lé    )ÚsymbolsÚSymbolÚTupleÚooÚDummy)ÚIndexException)Úraises)Úiterable)ÚSum)ÚFunctionÚSubsÚ
Derivative)ÚStrictLessThanÚGreaterThanÚStrictGreaterThanÚLessThan)ÚS)ÚexpÚlog)ÚcosÚsin©ÚKroneckerDelta)ÚOrder)ÚRange)ÚIndexedBaseÚIdxÚIndexedc                     sô   t ddd\‰ } }tˆ ƒtˆ dƒks(t‚tˆ | ƒtˆ d| d fƒksHt‚tˆ tƒtˆ dtfƒksdt‚t ddd‰tt‡fdd	„ƒ ttd
d	„ ƒ 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 )Núi a bT©Úintegeré   r   ÚxFc                      s   t ˆ ƒS ©N©r   © ©r"   r%   ú^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/tensor/tests/test_indexed.pyÚ<lambda>   ó    z'test_Idx_construction.<locals>.<lambda>c                   S   s   t dƒS ©Ng      à?r$   r%   r%   r%   r'   r(      r)   c                      s
   t ˆ ˆƒS r#   r$   r%   ©Úir"   r%   r'   r(      r)   c                      s
   t ˆ dƒS r*   r$   r%   ©r,   r%   r'   r(      r)   c                      s   t ˆ ˆdfƒS )Né   r$   r%   r+   r%   r'   r(      r)   c                      s   t ˆ dˆfƒS )Né   r$   r%   r+   r%   r'   r(       r)   c                      s
   t ˆ dƒS )N)r/   g      @r$   r%   r-   r%   r'   r(   !   r)   )r   r   ÚAssertionErrorr   r   Ú	TypeError)ÚaÚbr%   r+   r'   Útest_Idx_construction   s     r4   c                  C   s^   t ddd\} }}t| ƒjs t‚t| ƒjdks2t‚t| d ƒjdksHt‚tdƒjdksZt‚d S )Nr   Tr   r,   r/   zi + 2Zfoo)r   r   Ú
is_integerr0   Úname©r,   r2   r3   r%   r%   r'   Útest_Idx_properties$   s
    r8   c                  C   sJ  t ddd\} }}t| ƒjd ks$t‚t| ƒjd ks6t‚t| |ƒjdksJt‚t| |ƒj|d ksbt‚t| dƒjdksvt‚t| dƒjdksŠt‚t| tƒjdksžt‚t| tƒjtks²t‚t| ||fƒj|ksÊt‚t| ||fƒj|ksât‚t| dƒjdksöt‚t| dƒjdkst‚t| t tfƒjt ks*t‚t| t tfƒjtksFt‚d S )	Nr   Tr   r   r!   r.   é   ©r!   r.   ©r   r   Úlowerr0   Úupperr   r7   r%   r%   r'   Útest_Idx_bounds,   s    r>   c                  C   sL  t ddd\} }}}t|ƒjd ks&t‚t|ƒjd ks8t‚t||ƒjdksLt‚t||ƒj|d ksdt‚t|dƒjdksxt‚t|dƒjdksŒt‚t|tƒjdks t‚t|tƒjtks´t‚t|||fƒj|ksÌt‚t|||fƒj|ksät‚t|dƒjdksøt‚t|dƒjdkst‚t|t tfƒjt ks,t‚t|t tfƒjtksHt‚d S )	Nzi a b xTr   r   r!   r.   r9   r:   r;   )r,   r2   r3   r"   r%   r%   r'   Útest_Idx_fixed_bounds>   s    r?   c                  C   s  t ddƒ} t ddƒ}t ddƒ}t ddƒ}| d	ks4t‚| d	k s@t‚| d	krLt‚| d	krXt‚d	| ksdt‚d	| kspt‚d	| kr|t‚d	| k rˆt‚t| d	ƒs–t‚t| d	ƒs¤t‚t| d	ƒr²t‚t| d	ƒrÀt‚| d
ksÌt‚t| d
k tƒsÞt‚t| d
ktƒsðt‚| d
krüt‚t| dktƒst‚| dk rt‚| dks,t‚t| dktƒs@t‚| dkrNt‚| dk r\t‚| dksjt‚| dksxt‚ddlm} t| |k tƒs˜t‚t| |ktƒs¬t‚t| |ktƒsÀt‚t| |ktƒsÔt‚| |k sât‚| |ksðt‚| |krþt‚| |krt‚| |kst‚t| |k tƒs.t‚t| |ktƒsBt‚| |krPt‚t| |k tƒsdt‚t| |ktƒsxt‚t| |ktƒsŒt‚t| |ktƒs t‚t dƒ}t dƒ}t||k tƒsÄt‚t||ktƒsØt‚t||ktƒsìt‚t||ktƒs t‚d S )NÚi14©r!   r9   Úi79)é   é	   Úi46)r9   é   Úi35)é   r.   r.   r9   r!   r   r&   ÚiNone1ÚiNone2)	r   r0   r   r   r   r   Ú
isinstanceZ	sympy.abcr"   )r@   rB   rE   rG   r"   rI   rJ   r%   r%   r'   Útest_Idx_inequalitiesP   sf    



rL   c                  C   sN   t ddƒ} tdƒ| kst‚tdƒ| ks*t‚tdƒ| kr:t‚tdƒ| k rJt‚d S )Nr@   rA   r.   )r   r   r0   )r@   r%   r%   r'   Ú#test_Idx_inequalities_current_fails“   s
    
rM   c                  C   sr   t ddd\} }}t| ƒ}|j|jŽ |ks.t‚t| |ƒ}|j|jŽ |ksLt‚t| ||fƒ}|j|jŽ |ksnt‚d S )Nr   Tr   )r   r   ÚfuncÚargsr0   )r,   r2   r3   Úiir%   r%   r'   Útest_Idx_func_argsœ   s    
rQ   c                  C   sº   t ddd\} }}t| |ƒ ||¡t| |ƒks2t‚t| |ƒ | |¡t||ƒksRt‚t| ƒ | d¡tdƒksnt‚t| |ƒ |d¡t| dƒksŽt‚t| ||fƒ | d¡td||fƒks¶t‚d S )Nr   Tr   r/   )r   r   Úsubsr0   r7   r%   r%   r'   Útest_Idx_subs¦   s       rS   c                  C   s¦   t ddd\} }t dƒ}t|| |ƒ}t|ƒ}||| |f ks@t‚||| |f ksTt‚||| |g ksht‚||t| |ƒ ks~t‚tdd„ |d jdd … D ƒƒs¢t‚d S )	Núi jTr   r2   c                 s   s   | ]}|j V  qd S r#   )Z
is_Integer)Ú.0r2   r%   r%   r'   Ú	<genexpr>¹   s     z)test_IndexedBase_sugar.<locals>.<genexpr>)r!   r   r!   )r   r   r   r0   r   ÚallrO   )r,   Újr2   ÚA1ÚA2r%   r%   r'   Útest_IndexedBase_sugar°   s    r[   c                  C   sl   t ddd} t dƒ\}}t|ƒ}t|ƒ}||  ||   ||¡ksDt‚ddi}|d |d  ||¡ksht‚d S )Nr,   Tr   úa br!   r/   ©r   r   rR   r0   )r,   r2   r3   ÚAÚBÚCr%   r%   r'   Útest_IndexedBase_subs¼   s    ra   c                     sJ  t ddd\‰‰} }td| | fd}td| |fd‰ˆjt| |ƒksHt‚|ˆˆf ˆˆˆf ksdt‚|ˆˆf ˆˆˆf  || ¡ksˆt‚ˆjˆjŽ ˆksœt‚ˆˆˆf jˆˆˆf jŽ ˆˆˆf ksÈt‚tt	‡‡fdd„ƒ tt	‡‡‡fdd„ƒ td	| d‰ ˆ jt| ƒkst‚ˆ ˆ  ˆˆ¡ˆ ˆ ks0t‚tt	‡ ‡‡fd
d„ƒ d S )Nzi j m nTr   r2   ©Úshapec                      s   ˆ ˆ S r#   r%   r%   )r3   r,   r%   r'   r(   Ï   r)   z(test_IndexedBase_shape.<locals>.<lambda>c                      s   ˆ ˆˆˆf S r#   r%   r%   )r3   r,   rX   r%   r'   r(   Ð   r)   ÚFc                      s   ˆ ˆˆf S r#   r%   r%   )rd   r,   rX   r%   r'   r(   Ô   r)   )
r   r   rc   r   r0   rR   rN   rO   r   r   )ÚmÚnr2   r%   )rd   r3   r,   rX   r'   Útest_IndexedBase_shapeÆ   s    $,rg   c                  C   sÂ   t ddd} t dƒ}t|dd}|||  fD ]T}|js:t‚|jsDt‚|jrNt‚|jsXt‚|jsbt‚|jslt‚t	t
|ƒƒ|ks,t‚q,|t|ƒks’t‚|t|dddks¨t‚||  t|| ƒks¾t‚d S )Nr,   Tr   r2   )Úpositive)rh   Úreal)r   r   Úis_realr0   Z
is_complexZis_imaginaryZis_nonnegativeZ
is_nonzeroZis_commutativer   r   r   )r,   r2   r^   Úcr%   r%   r'   Útest_IndexedBase_assumptions×   s    





rl   c                  C   s\   t ddd} t| ƒ}tddd}|js*t‚|js4t‚|jjs@t‚|jjsLt‚||ksXt‚d S )NÚITr   )r   r   r5   r0   Úlabel)rm   Z	I_inheritZ
I_explicitr%   r%   r'   Ú(test_IndexedBase_assumptions_inheritanceé   s    

ro   c                  C   sV   G dd„ dt ƒ} | dƒ}t|ƒ| ks(t‚t|ƒ}t|ƒ| ks@t‚t|jƒ| ksRt‚dS )z`Regression test issue #17652.

    IndexedBase.label should not upcast subclasses of Symbol
    c                   @   s   e Zd ZdS )z"test_issue_17652.<locals>.SubClassN)Ú__name__Ú
__module__Ú__qualname__r%   r%   r%   r'   ÚSubClassú   s   rs   ÚXN)r   Útyper0   r   rn   )rs   r"   Úbaser%   r%   r'   Útest_issue_17652õ   s    rw   c                      sŽ   t ddd\‰‰tdˆˆƒ‰ ˆ ttdƒˆˆƒks4t‚ˆ ttdƒˆˆƒksLt‚tt‡ ‡‡fdd„ƒ ttdd„ ƒ ˆ jˆ ˆ j	j
ˆˆhksŠt‚d S )NrT   Tr   r^   c                      s   t ˆ ˆˆƒS r#   ©r   r%   ©r^   r,   rX   r%   r'   r(   	  r)   z*test_Indexed_constructor.<locals>.<lambda>c                   S   s   t dƒS ©Nr^   rx   r%   r%   r%   r'   r(   
  r)   )r   r   r   r0   r   r   r1   r   Zfree_symbolsrv   rn   r%   r%   ry   r'   Útest_Indexed_constructor  s    r{   c                  C   s<   t ddd\} }t dƒ}t|| |ƒ}||j|jŽ ks8t‚d S )NrT   Tr   r2   )r   r   rN   rO   r0   )r,   rX   r2   r^   r%   r%   r'   Útest_Indexed_func_args  s    r|   c                  C   sz   t ddd\} }}t dƒ\}}t|ƒ}t|ƒ}|| |f || |f  ||¡ksRt‚|| |f || |f  ||¡ksvt‚d S )Nzi j kTr   r\   r]   )r,   rX   Úkr2   r3   r^   r_   r%   r%   r'   Útest_Indexed_subs  s    $r~   c                     s  t ddd\‰‰tdˆˆƒ‰ ˆ jdks*t‚ˆ jdks8t‚ˆ jˆˆfksJt‚ˆ jtdƒks\t‚ˆ jd d gksnt‚t	t
‡ fdd„ƒ t d	dd\} ‰tdtˆˆƒtˆ| ƒƒjtd
ˆd ƒtd
| d ƒgksÊt‚tdtˆˆƒtˆ| ƒƒjtˆ| ƒksòt‚t	t
‡‡‡fdd„ƒ d S )NrT   Tr   r^   zA[i, j]r/   c                      s   ˆ j S r#   rb   r%   )r^   r%   r'   r(   &  r)   z)test_Indexed_properties.<locals>.<lambda>ún mr   r!   c                      s   t dtˆ ˆƒtˆƒƒjS rz   )r   r   rc   r%   )r,   rX   re   r%   r'   r(   ,  r)   )r   r   r6   r0   ÚrankÚindicesrv   r   Úrangesr   r   r   r   rc   )rf   r%   )r^   r,   rX   re   r'   Útest_Indexed_properties  s&     ÿÿÿ(rƒ   c                  C   s  t ddd\} }t ddd\}}t ddd\}}td||fd}|jt||ƒksTt‚t|t| |ƒt||ƒƒjtd|d	 ƒtd|d	 ƒgksŽt‚t|t| |ƒt||ƒƒjt||ƒks¶t‚t|t| |ƒt|ƒƒjtd|d	 ƒd
gksät‚t|t| |ƒt|ƒƒjt||ƒkst‚d S )NrT   Tr   zo pr   r2   rb   r   r!   )NN)r   r   rc   r   r0   r   r   r‚   )r,   rX   ÚoÚprf   re   r2   r%   r%   r'   Útest_Indexed_shape_precedence/  s*      ÿÿ(  ÿÿr†   c                  C   sH   t ddd\} }td| | | ƒ}|jdks.t‚|j| | | fksDt‚d S )NrT   Tr   r^   r/   )r   r   r€   r0   r   ©r,   rX   r^   r%   r%   r'   Útest_complex_indices=  s    rˆ   c                  C   s0   t ddd\} }td| | | ƒ}t|ƒr,t‚d S )NrT   Tr   r^   )r   r   r	   r0   r‡   r%   r%   r'   Útest_not_interableD  s    r‰   c                  C   s|   t ddd} | }td|d ƒ}td|fd}d||d   ||   || ¡}|| ||d    || ¡}||ksxt‚d S )NÚNTr   r,   r!   Úyrb   )r   r   r   Zcoeffr0   )rŠ   Zlen_yr,   r‹   r2   r3   r%   r%   r'   Útest_Indexed_coeffJ  s    "rŒ   c                  C   sè  ddl m}  tdtd\}}}}tdƒ}tdddd\}}|jsDt‚td	td\}}	|| ||  }
}|
}| |¡| ||ƒks‚t‚| |
¡| ||ƒksšt‚td
ƒ|
 }| |¡td
ƒ| ||ƒ ksÆt‚| |
¡td
ƒ| ||ƒ ksæt‚| |¡tj	ksút‚t
||t tfƒ |¡t
d
| ||ƒ |t tfƒks4t‚t
| |¡|t tfƒt
d
| ||ƒ |t tfƒksnt‚t
||t tfƒ |¡ ¡ d
ks”t‚t
| |
¡|t tfƒ ¡ t
d
|t tfƒ ¡ ksÌt‚t
||t tfƒ |
¡ ¡ tksòt‚|| | td
ƒ }| |
¡|||  | ||ƒ ks,t‚| |¡|| td
ƒ ksLt‚| |d
¡tj	ksdt‚t
||t tfƒ |
¡t
|| ||ƒ ||  |t tfƒks¦t‚t
| |
¡|t tfƒt
|| ||ƒ ||  |t tfƒksèt‚t
||t tfƒ |
¡ ¡ |||  kst‚t
||t tfƒ |
¡t
|| ||ƒ ||  |t tfƒksXt‚t
| |
¡|t tfƒt
|| ||ƒ ||  |t tfƒksšt‚t
||t tfƒ |
¡ ¡ |||  ksÈt‚|t|| ƒ }| |
¡d
| t|| ƒ | | ||ƒ ks
t‚| |¡d
| t|| ƒ | ks2t‚||	||f  ||  }| |
¡||	||f  | ||ƒ kstt‚| |¡||	||f  ks”t‚| |	||f ¡|||  ks¸t‚| |	||f ¡|| ||ƒ | ||ƒ ||  ksðt‚| |	||f ¡|| ||ƒ ||  kst‚t
||t tfƒ |	||f ¡t
|| ||ƒ | ||ƒ ||  |t tfƒksrt‚t
||t tfƒ |	||f ¡ ¡ || ||ƒ ||  ks²t‚||  || ¡dksÎt‚||  || ¡| ||ƒksðt‚t
|||  |t tfƒ || ¡t
|| ||ƒ |t tfƒks6t‚t
|||  |t tfƒ || ¡ ¡ |ksht‚t
|||  |t tfƒ || ¡t
|| ||ƒ |t tfƒks®t‚t
|||  |t tfƒ || ¡ ¡ t| ksät‚d S )Nr   r   zi j k l©Úclsr2   zm, nT)r    Zfinitezh Lr/   r!   )Ú(sympy.functions.special.tensor_functionsr   r   r   rj   r0   r   Údiffr   ZZeror
   r   Zdoitr   r   )r   r,   rX   r}   Úlr2   re   rf   ÚhÚLÚhiZhjÚexprr%   r%   r'   Útest_differentiationT  s\    
  ::&8&& BB.BB.2(* $8.T@"F2Fr–   c                  C   sp   t dƒ} tddd}t| | ƒ | | ¡| | | | d d  | | d d  t| | d | | ƒ kslt‚d S )	Nr^   r,   Tr   rH   rF   r.   éx   )r   r   r   Zseriesr   r0   )r^   r,   r%   r%   r'   Útest_indexed_series  s    r˜   c                  C   s²   t dƒ} tdƒ\}}}| |  ¡ r&t‚| |  |¡s8t‚| dd|  |f  ¡ rTt‚| dd|  |f  |¡rrt‚| dd|  |f  |¡st‚| dd|  |f  |¡r®t‚d S )Nr^   úi,j,kr!   r/   )r   r   Zis_constantr0   )r^   r,   rX   r}   r%   r%   r'   Útest_indexed_is_constant–  s    rš   c                  C   s–   t dƒ} t tdƒƒtdddƒks$t‚| d  tdƒtdƒ¡dksDt‚| d  | tdƒ¡dks`t‚| d  | tdƒ¡dks|t‚ttdƒdƒdks’t‚d S )NÚdr.   r   r!   r/   )r   Úranger   r0   rR   r   r   )r›   r%   r%   r'   Útest_issue_12533¡  s     r   c                      s.   t dƒ‰tddˆfƒ‰ tt‡ ‡fdd„ƒ d S )Nrf   r,   r   c                      s   ˆ   ˆd¡S )Ng      ø?)rR   r%   ©r,   rf   r%   r'   r(   ­  r)   z"test_issue_12780.<locals>.<lambda>)r   r   r   r1   r%   r%   rž   r'   Útest_issue_12780ª  s    rŸ   c                      sj   t dƒ‰ tdˆ ƒjdkst‚tdˆ ƒjdks0t‚tdˆ ƒjˆ d ksHt‚t ddd‰ tt‡ fdd„ƒ d S )	Nre   r,   r   r!   F)ri   c                      s
   t dˆ ƒS )Nr,   r$   r%   ©re   r%   r'   r(   ¶  r)   z"test_issue_18604.<locals>.<lambda>)r   r   r6   r0   r<   r=   r   r1   r%   r%   r    r'   Útest_issue_18604°  s    r¡   c                  C   sÖ  t dƒ} tdƒ\}}}tdƒ\}}}tdƒ}t| | | | | | ƒ | | ¡dksVt‚t| | | | |ƒ | | ¡dks|t‚t| | | | |ƒ | | ¡dks¢t‚t| | | | |ƒ |¡dksÄt‚t| | | | |ƒ |¡dksæt‚t| | | | | | ƒ | | ¡t||ƒkst‚t||| | ƒ | | ¡t||ƒksBt‚t|| | ƒ| | |ƒ | | ¡dksnt‚t|| | ƒ| | | | ƒ | | ¡t|| | ƒ| | ƒt||ƒ ksºt‚t||| | d ƒ | | ¡dt||ƒ | |  ksôt‚t| | | | | | d ƒ | | ¡dt||ƒ | |  ks6t‚t| | | || | ƒ | | ¡d| |  ksjt‚t| | | || | ƒ | | ¡d| |  t||ƒ ks¨t‚t| | | || | ƒ | | ¡| | | | t||ƒ  ksêt‚t| | | || | ƒ | | ¡| | | | t||ƒ  ks,t‚t| | | || | ƒ | | ¡d| |  t||ƒ ksjt‚t| | | || | ƒ | | ¡t||ƒ| |  t||ƒ| |   ks¶t‚t| | | | | |ƒ | | ¡dksât‚t| | | | | |ƒ | | ¡dkst‚t| | | | | |ƒ | | ¡|ks:t‚t| | | | | |ƒ | | ¡|t||ƒ kspt‚t| | | | | |ƒ | | ¡dksœt‚t| | | | | |ƒ | | ¡|t||ƒ ksÒt‚d S )Nr^   r™   zx,y,zÚfr!   r   r/   )r   r   r   r   r   r0   r   r   )r^   r,   rX   r}   r"   r‹   Úzr¢   r%   r%   r'   Útest_Subs_with_Indexed¸  s6    *&&""2*,L:B4>BB>L,,,6,r¤   c               
   C   s   t dtd\} }t dƒ}t dƒ\}}}t dƒ\}}}}	}
}tdƒ}|| | ||  d | ƒ}t dtd}| | | ¡ | | ||  t||ƒ d tt||ƒ|ƒ|f| | ||  d | fƒ | ¡sÎt	‚| | | ¡ | | ¡ dt||ƒ t||ƒ tt||ƒ|ƒ|f| | ||  d | fƒ | d	| | ||  d  t||ƒ t||ƒ tt||ƒ||ƒ|f| | ||  d | fƒ |d   ¡sœt	‚d S )
Nzx,yr   Úsigmar™   zm0:6r¢   r/   Zxi_1r9   )
r   r   r   r   r   Zdummy_eqr   r   r   r0   )r"   r‹   r¥   r,   rX   r}   Zm0Úm1Úm2Zm3Zm4Zm5r¢   r•   Z_xi_1r%   r%   r'   Ú(test_complicated_derivative_with_IndexedÙ  sV    ÿýÿûÿÿýÿû*ýÿûúÿr¨   N)FZ
sympy.corer   r   r   r   r   Zsympy.tensor.indexedr   Zsympy.testing.pytestr   Zsympy.utilities.iterablesr	   Zsympy.concrete.summationsr
   Zsympy.core.functionr   r   r   Zsympy.core.relationalr   r   r   r   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.trigonometricr   r   r   r   Zsympy.series.orderr   Zsympy.sets.fancysetsr   r   r   r   r4   r8   r>   r?   rL   rM   rQ   rS   r[   ra   rg   rl   ro   rw   r{   r|   r~   rƒ   r†   rˆ   r‰   rŒ   r–   r˜   rš   r   rŸ   r¡   r¤   r¨   r%   r%   r%   r'   Ú<module>   sV   C	



	
<	!