U
    -eK                     @   s   d dl 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mZmZ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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. eddd\Z/Z0Z1Z2edZ3ede/e0Z4ede0e1Z5ede/e/Z6ede/e/Z7ede0e/Z8dd Z9dd Z:dd Z;dd Z<dd  Z=d!d" Z>d#d$ Z?d%d& Z@d'd( ZAd)d* ZBd+d, ZCd-d. ZDd/d0 ZEd1d2 ZFd3d4 ZGd5d6 ZHd7d8 ZId9d: ZJd;d< ZKe-d=d> ZLd?d@ ZMdAdB ZNdCdD ZOdEdF ZPdGdH ZQdIdJ ZRdKS )L    )IsymbolsBasicMulS)mul)adjoint	transpose)
ShapeError)IdentityInverseMatrixMatrixSymbol
ZeroMatrixeyeImmutableMatrix)Adjoint	TransposedetMatPow)GenericIdentity)factor_in_front
remove_idsMatMulcombine_powers	any_zerosunpackonly_squares)	null_safe)Q)refine)Symbol)XFAILraiseszn m l kTintegerxABCDEc                   C   s$   t ttddt tt ks td S )NTevaluate)r   r)   doitAssertionError r0   r0   m/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/matrices/expressions/tests/test_matmul.pytest_evaluate   s    r2   c                  C   s   t tt tttt ks tt dt t dtt tt ksHtt dt t dt tt kslttddddt ddg} tdddddt dg}t | |kstt d|  d| kstt td| td|	 kstd S )N            )
r   r'   r(   r   r/   r   r)   r   r   r.   )MZMAr0   r0   r1   test_adjoint   s     ($r9   c                  C   s   t tt tttt ks tt dt t dtt tt ksHtt dt t dt tt kslttddddt ddg} tdddddt dg}t | |kstt d|  d| kstt t|  t| kstt t	d| t	d|
 kstd S )Nr3   r5   r6   r7   )r	   r'   r(   r   r/   r   r)   r   r&   r   r.   )r8   ZMTr0   r0   r1   test_transpose)   s     ($r:   c                   C   s,   t ttdtddtdttddks(td S )Nr3   Fr,   )r   r   r'   r(   r/   r0   r0   r0   r1   test_factor_in_front6   s    r;   c                   C   sZ   t tttttddtttddks*ttt tttddtttddksVtd S NFr,   )	r   r   r'   r   mr(   r/   r   nr0   r0   r0   r1   test_remove_ids;   s    r?   c                	   C   s   t tttttddttttddks.tt ttjtt	t
 t	t
tddttjtttddksjtt tt
t	tt
t	 tddttttddkstd S r<   )r   r   r*   r   r   r>   r/   r(   Tr+   r'   r=   r0   r0   r0   r1   test_combine_powersB   s     rA   c                   C   s*   t tttttddtttks&td S r<   )r   r   r'   r   r=   kr>   r/   r0   r0   r0   r1   test_any_zerosK   s    rC   c                  C   s6   t ttddtkstttt} t | | ks2td S r<   )r   r   r'   r/   r(   )r&   r0   r0   r1   test_unpackP   s    
rD   c                   C   sP   t ttgkstt ttttgks(tt tttjttttj tgksLtd S N)r   r)   r/   r*   r'   r@   r0   r0   r0   r1   test_only_squaresV   s    rF   c                   C   s   t dt dt t t ks tt dt t dt t t t t ksLtt dt t tj t dt t t t ttj  t t kstd S )Nr3   r6   )r   r)   r>   r/   r*   r'   r@   r0   r0   r0   r1   test_determinant\   s     ,rG   c                   C   s   t tdtjtdtfkstt tdt jdttfks<tt tttt jtttt fksdtt tttt jddjttjtjfkstd S )Nr3   Tdeep)r   r)   r*   argsr/   r.   r   r@   r0   r0   r0   r1   	test_doitb   s     (rK   c                  C   sz   t ddgddgg} t ddgddgg}t| t|d | |d  ksLtttttt  jttj	tj	fksvtd S )Nr5   r3   r6   r7      )
r   r   r   r.   r/   r)   r   r*   rJ   r@   )XYr0   r0   r1   test_doit_drills_downi   s    $rO   c                   C   s8   t tttt djddjdtttt fks4td S )Nr3   FrH   )r   r)   r   r*   r.   rJ   r/   r0   r0   r0   r1   $test_doit_deep_false_still_canonicalp   s    rP   c                  C   s2   t ddgddgg} td|  d|  ks.td S )Nr5   r3   r6   r7   )r   r   r.   r/   )rM   r0   r0   r1   test_matmul_scalar_Matrix_doitu   s    rQ   c                   C   s&   t ttdtdjd ts"td S )Nr5   r   )
isinstancer   r   rJ   r   r/   r0   r0   r0   r1   test_matmul_sympify{   s    rS   c                  C   sR   t ddgddgg} t ddgddgg}t| | tddgddggksNtd S )Nr5   r3   r6   r7      )r   r   r.   r   r/   r'   r(   r0   r0   r1   test_collapse_MatrixBase   s    rV   c                  C   s   t ttj t tt tks&ttt } t | tj tt tt	t
 ksXtt | | j tt td t	t
 kstd S )Nr3   )r    r)   r@   r*   r   Z
orthogonalr.   r/   rB   r   r>   )ZkCr0   r0   r1   test_refine   s    &*rW   c                   C   s>   t ddkstt tttt ks&ttt ttt r:td S )Nr5   )r   r/   r>   r=   rR   r0   r0   r0   r1   test_matmul_no_matrices   s    rX   c                   C   sL   t tttj tgttjggks&tt ttj g ttjggksHtd S rE   )r   r>   r'   r@   args_cncr/   r0   r0   r0   r1   test_matmul_args_cnc   s    &rZ   c                  C   sp   t ddd\} }tt| |ttj tg| |ttjggks>ttt| t|tj tg| t|tjggksltd S )Nza bF)Zcommutative)r   r   r>   r'   r@   rY   r/   )abr0   r0   r1   test_matmul_args_cnc_symbols   s    .r]   c                  C   sL   t tdggtddd } tddd d td |  d ksHtd S )Nr&   r'   r5   r   )r   r!   r   Zas_explicitr/   )r8   r0   r0   r1   test_issue_12950   s    r^   c                   C   s4   t tttttkstt tttttks0td S rE   )r   r)   r*   r   r/   r0   r0   r0   r1   test_construction_with_Mul   s    r_   c                   C   sL   t tttttkstt tttttks0tt tttttksHtd S rE   )r   r)   r*   r   r/   r0   r0   r0   r1   test_construction_with_mul   s    r`   c                   C   s$   t jt kstt jtjks td S rE   )r   identityr   r/   r   ZOner0   r0   r0   r1   test_generic_identity   s    rb   c                  C   sf   t ddd} td| | }td| | }t| }|d||  |  | }||d| d|  ksbtd S )NNTr$   M1M2r3   )r!   r   r   Zcoeffr/   )rc   rd   re   r   zr0   r0   r1   test_issue_23519   s    rg   c                      s0   t ddd t dddtt fdd d S )Nr'   r3   r(   r6   c                      s
   t  S rE   )r   r0   rU   r0   r1   <lambda>       z"test_shape_error.<locals>.<lambda>)r   r#   r
   r0   r0   rU   r1   test_shape_error   s    rj   N)SZ
sympy.corer   r   r   r   r   Zsympy.core.mulr   Zsympy.functionsr   r	   Zsympy.matrices.commonr
   Zsympy.matricesr   r   r   r   r   r   r   Zsympy.matrices.expressionsr   r   r   r   Z"sympy.matrices.expressions.specialr   Z!sympy.matrices.expressions.matmulr   r   r   r   r   r   r   Zsympy.strategiesr   Zsympy.assumptions.askr   Zsympy.assumptions.refiner    Zsympy.core.symbolr!   Zsympy.testing.pytestr"   r#   r>   r=   lrB   r&   r'   r(   r)   r*   r+   r2   r9   r:   r;   r?   rA   rC   rD   rF   rG   rK   rO   rP   rQ   rS   rV   rW   rX   rZ   r]   r^   r_   r`   rb   rg   rj   r0   r0   r0   r1   <module>   s\   $$	
	