U
    L?h‚9  ã                   @   s”   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mZ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S )é    )ÚeyeÚMatrix)Útensor_indicesÚ
TensorHeadÚtensor_headsÚTensExprÚcanon_bp)ÚGammaMatrixÚLorentzIndexÚkahane_simplifyÚgamma_traceÚ_simplify_single_lineÚsimplify_gamma_expression)ÚSymbolc                 C   s@   t | ƒ} t |ƒ}t| tƒr$|  |¡S t|tƒr8| | ¡S | |kS ©N)r   Ú
isinstancer   Úequals)Zarg1Zarg2© r   ú]/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/hep/tests/test_gamma_matrices.pyÚ_is_tensor_eq	   s    



r   c           %      C   sÂ  t dtƒ\}}}}t dtƒ\}}}}	}
}t dtƒ\}}}}}}}}t dtƒ\}}}t dtƒ\}}}}}}}dd„ }|dkrt|ƒt|ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }t| |ƒd	t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ  ƒsþt‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|	ƒ t|ƒ t| ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ t|ƒ t|ƒ t|	 ƒ }t| |ƒd
t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ d
t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ  d
t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ  d
t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t|ƒ  ƒst‚dd„ } t|ƒt| ƒ }| |ƒ}!t| |ƒ|!ƒsTt‚t|ƒt|ƒ t| ƒ t| ƒ }| d| |d  ƒ}!t| |ƒ|!ƒs t‚t|ƒt|ƒ t| ƒ t| ƒ }| |d ƒ}!t| |ƒ|!ƒsät‚t|ƒt|ƒ t| ƒ t| ƒ t| ƒ t|ƒ }| d| d|d   |d  ƒ}!t| |ƒ|!ƒsNt‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ t| ƒ }| |d ƒ}!t| |ƒ|!ƒs¤t‚t|ƒt|ƒ t|ƒ t|	ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ }| d| d
|d   d|d   |d  ƒ}!t| |ƒ|!ƒs,t‚t| ƒt| ƒ t| ƒ t| ƒ t|ƒ t|ƒ t|ƒ t|ƒ }| d| d|d   d|d   |d  ƒ}!t| |ƒ|!ƒs´t‚t| ƒt|ƒ t| ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }| d| d|d   d|d   |d  ƒ}!t| |ƒ|!ƒs<t‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t| ƒ t| ƒ t| ƒ t|
 ƒ t|	 ƒ }| d| d|d   d|d   d|d   |d  ƒ}!t| |ƒ|!ƒsât‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ t|
 ƒ }| d| d|d   d|d   d
|d   |d  ƒ}!t| |ƒ|!ƒsˆt‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t|
 ƒ t|	 ƒ }| d| d|d   d|d   d|d   d|d   |d  ƒ}!t| |ƒ|!ƒsLt‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ t|
 ƒ }| d| d |d   d!|d   d"|d   d#|d   |d  ƒ}!t| |ƒ|!ƒ	st‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }t| |ƒd$t|ƒ t|ƒ t|ƒ d| t|ƒ t|ƒ t|ƒ  ƒ	s†t‚t|ƒt|ƒ t| ƒ }t| |ƒd| t|ƒ ƒ	sÀt‚t|ƒt|ƒ t|ƒ t| ƒ }t| |ƒdt|ƒ t|ƒ dt|ƒ t|ƒ  d| t|ƒ t|ƒ  ƒ
s2t‚dt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"|d$| d  t|ƒ ƒ
sŽt‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"| d d t|ƒ ƒ
sät‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }| |ƒ}"t|"|d t|ƒ t|ƒ t|ƒ dt|ƒ |||ƒ  ƒsXt‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"|d d t|ƒ t|ƒ d| d
 |||ƒ  ƒsÒt‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"| d |d  d t|ƒ ƒs0t‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ t| ƒ }| |ƒ}"t|"d	| | d d |d   d t|ƒ ƒs¬t‚dt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ }| |ƒ}"t|"d$| d t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ  ƒs.t‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }| |ƒ}"t|"| d | d  t|ƒ t|ƒ t|ƒ t|ƒ d| d t|ƒ t|ƒ t|ƒ t|ƒ  ƒsæt‚t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ }| |ƒ}"t|"|d t|ƒ t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ t|ƒ  ƒszt‚t| ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ }| |ƒ}"| d d d t|ƒ t|ƒ t|ƒ t|ƒ d| d
 t|ƒ t|ƒ t|ƒ t|ƒ  d| d
 t|ƒ t|ƒ t|ƒ t|ƒ  dt|ƒ t|ƒ t|ƒ t|ƒ  dt|ƒ t|ƒ t|ƒ t|ƒ  dt|ƒ t|ƒ t|ƒ t|ƒ  }#dt|ƒ t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ t|ƒ  }$|dkr,t|"|#ƒs*t|"|$ƒs*t‚nt|"|#ƒs<t‚t|ƒ}| |ƒ}"t|"|ƒs\t‚d%t|ƒ }| |ƒ}"t|"|ƒs€t‚d&t|ƒ t|ƒ t| ƒ t|ƒ }| |ƒ}"t|"|ƒs¾t‚d'S )(a  
    Perform tests to check if sfunc is able to simplify gamma matrix expressions.

    Parameters
    ==========

    `sfunc`     a function to simplify a `TIDS`, shall return the simplified `TIDS`.
    `D`         the number of dimension (in most cases `D=4`).

    úmu, nu, rho, sigmaza1:7z.mu11, mu12, mu21, mu31, mu32, mu41, mu51, mu52zmu61, mu71, mu72úm0:7c                 S   s$   t | ƒt |ƒ t |ƒt | ƒ  d S )Né   )ÚG)ZxxÚyyr   r   r   Úg$   s    z4execute_gamma_simplify_tests_for_function.<locals>.gé   éüÿÿÿé   c                 S   s   | t dƒ S )Nr   )r   )Úner   r   r   Ú	add_delta9   s    z<execute_gamma_simplify_tests_for_function.<locals>.add_deltar   é   éøÿÿÿé   éðÿÿÿé   é   é   é@   ép   é<   é   éx   éH   i   i0  i  é   é   iP  iH  é¬   é   éþÿÿÿiùÿÿÿéà   N)r   r
   r   r   ÚAssertionError)%ÚtfuncÚDÚmuÚnuÚrhoÚsigmaZa1Za2Úa3Za4Za5Za6Zmu11Zmu12Zmu21Zmu31Zmu32Zmu41Zmu51Zmu52Zmu61Zmu71Zmu72Úm0Úm1Úm2Úm3Úm4Úm5Úm6r   Útr    ÚtsÚstZresult1Zresult2r   r   r   Ú)execute_gamma_simplify_tests_for_function   s   
<Fÿÿþþþýýüüüûûúúúùÿ oÿ
$$6 6H,H,H,Z8Z8lDlD*L "P0$,"*B4>,*>6.LDl4XD0*ÿ*ÿ"þ"þ"ýH
&rF   c                  C   s   dd„ } t | dd d S )Nc                 S   s   t | ƒS r   )r   )Úer   r   r   r5   ¾   s    z$test_kahane_algorithm.<locals>.tfuncr   ©r6   )rF   )r5   r   r   r   Útest_kahane_algorithm»   s    rI   c                  C   s(  t dtƒ\} }}}}}}}}}	}
}}}}}t dtƒ\}}}}d}t| ƒt|ƒ }t|ƒ}| |¡sft‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡sžt‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡sÖt‚t| ƒt|ƒ }t|ƒ}| |¡süt‚t| ƒt|ƒ }t|ƒ}| |¡s$t‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡sVt‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡sˆt‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡sºt‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡sôt‚t| ƒt|ƒ t|  ƒ t| ƒ }t|ƒ}| d| |d  tdƒ ¡sDt‚t| ƒt|ƒ t|  ƒ t| ƒ }t|ƒ}| d| |d  tdƒ ¡s”t‚t| ƒt|  ƒ t|ƒ t| ƒ }t|ƒ}| dtdƒ ¡sØt‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡s t‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡sht‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡s°t‚t|ƒt|ƒ t| ƒ t| ƒ t| ƒ t|ƒ }t|ƒ}| d| d|d   |d  tdƒ ¡st‚t| ƒt| ƒ t| ƒ t| ƒ t|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}| d| d	|d   d
|d   |d  tdƒ ¡sªt‚t| ƒt|ƒ t| ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }t|ƒ}| d
| d|d   d|d   |d  tdƒ ¡s6t‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }t|ƒ}| dt|ƒ t|ƒ t|ƒ ¡st‚t|ƒt| ƒ t|ƒ t|ƒ }t|ƒ}| dt|ƒ t|ƒ ¡sÚt‚t|ƒt|ƒ t|ƒ t| ƒ }t|ƒ}| dt|ƒ t|ƒ ¡s$t‚d S )Nzi0:16r   r   r2   r   r   r!   r$   r%   r#   r&   r'   )r   r
   r   r   r   r4   r   )Úi0Úi1Úi2Úi3Úi4Zi5Úi6Úi7Úi8Zi9Zi10Zi11Zi12Zi13Zi14Zi15r7   r8   r9   r:   r6   rC   Úrr   r   r   Útest_kahane_simplify1Ä   s„    *$$$$$$$$60H<H<*(" "rS   c               
   C   sÒ   t dtƒ\} }}tdtgƒ}||ƒt| ƒ t|  ƒ }t|ƒ}t|tddddgddddgddddgddddggƒ||ƒ ƒs€t‚t| ƒ||ƒ t|ƒ }t|ƒ}t|||ƒt| ƒ t|ƒ ƒsÂt‚ttdd d S )Nzi,j,kÚAr   r   rH   )	r   r
   r   r   r   r   r   r4   rF   )ÚiÚjÚkrT   rC   rD   r   r   r   Útest_gamma_matrix_class  s     



üü
"rX   c                  C   s<	  t j} tdt ƒ\}}}}}}}tdt ƒ\}}	}
}}}d}t|ƒ}t|ƒ}| d¡sVt‚t|ƒt|ƒ t|ƒ }t|ƒ}| d¡s„t‚t|ƒt|ƒ t| ƒ }t|ƒ}| d¡s´t‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}| d¡sòt‚t|ƒt|ƒ }t|ƒ}t|d| ||ƒ ƒs$t‚t|ƒt|ƒ t|ƒ t|ƒ }t|ƒ}d| ||ƒ | ||ƒ d| ||ƒ | ||ƒ  d| ||ƒ | ||ƒ  }t||ƒs¤t‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}|| | | ƒ }| | ¡}t||tt|ƒt|ƒ t|ƒ t|ƒ ƒ ƒs,t‚t|ƒt| ƒ }t|ƒ}| d| ¡sZt‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| d| d|d   ¡s¦t‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ }t|ƒ}d| | ||ƒ | ||ƒ d| | ||ƒ | ||ƒ  d| | ||ƒ | ||ƒ  }t||ƒsDt‚t| ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ }t|ƒ}d| d| d d   d	 | ||ƒ| ||ƒ | ||ƒ| ||ƒ  | ||ƒ| ||ƒ   }t||ƒsút‚t|ƒt|ƒ t| ƒ t|ƒ }t|ƒ}| d| d | ||ƒ ¡sFt‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t| ƒ t| ƒ }t|ƒ}| d|d
  d|d   d|d   d|d   d|d   d|  ¡s
t‚t|ƒt|ƒ t|	ƒ t|ƒ t|
ƒ t|ƒ t|ƒ t|
 ƒ t|	 ƒ t| ƒ t| ƒ t| ƒ t| ƒ t| ƒ }t|ƒ}d| d|d   d|d   d|d   d|d   d|d
   d|d   }| |¡sðt‚t|ƒt|ƒ t|	ƒ t|ƒ t|
ƒ t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t| ƒ }t|ƒ}d|d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|d   d|  d  }t||| |	|ƒ | |
|ƒ || |	|
ƒ | ||ƒ  | | |	|ƒ | |
|ƒ  ƒs@t‚t	d!t gƒ\}}||ƒt| ƒ }||ƒt| ƒ }||ƒ|| ƒ }||ƒ|| ƒ }||ƒ|| ƒ }|| | | }t|ƒ}t|d| | d| |  ƒsæt‚|| | | | | }t|ƒ}t|d"| | | d#| | |  ƒs2t‚|| | | | | | | }t|ƒ}t|d$| | | | d| | | |  d| | | |  ƒs¢t‚d||ƒ ||ƒ || ƒ || ƒ ||ƒ || ƒ }tt|ƒ|ƒsðt‚|| | | | | | | }t|ƒ}| d| | | | ¡	s8t‚d S )%Nr   zn0:6r   r   r   r#   r   é    r(   r'   r,   r+   i  i   r!   i€  i   i äÿÿi€A  i@8  i   iÐ  é   i°  i   i@)  i€  éX   i0  i   i@  i€  zp,qiôÿÿÿr   iàÿÿÿ)
r
   Zmetricr   r   r   r   r4   r   Zcontract_metricr   )r   r<   r=   r>   r?   r@   rA   rB   Zn0Zn1Zn2Zn3Zn4Zn5r6   rC   Út1Út2ZtresuÚc1Úc2ÚpÚqZpsÚqsZp2Úq2ZpqrR   r   r   r   Útest_gamma_matrix_trace!  sª    ( H0
4$ 26ÿD.ÿÿ""	lP~Pz<<2ÿ$, H: rd   c                  C   s’  t dtgƒ\} }}tdtƒ\}}}}}tdƒ}| |ƒt| ƒ }	||ƒt| ƒ }
||ƒt| ƒ }|t|ƒ |
 t|ƒ |	 t| ƒ |
 t| ƒ }|t|ƒ |
 t|ƒ |	 | t| ƒ | | ƒ }t|ƒ}t|ƒ}t|| ƒ}|dd||ƒ || ƒ ||ƒ | | ƒ d||ƒ ||ƒ || ƒ | | ƒ   ksFt‚|d| ||ƒ || ƒ | |ƒ | | ƒ ks|t‚||| ksŽt‚dS )	zkTest issue 13636 regarding handling traces of sums of products
    of GammaMatrix mixed with other factors.z
pi, ki, pfzi0:5Úxr   r   r#   r"   N)r   r
   r   r   r   r   r4   )ÚpiZkiÚpfrJ   rK   rL   rM   rN   re   ZpisZkisZpfsÚaÚbÚtaÚtbZ
t_a_plus_br   r   r   Útest_bug_13636—  s$    44&&ÿÿ6rl   N)Zsympy.matrices.denser   r   Zsympy.tensor.tensorr   r   r   r   r   Z sympy.physics.hep.gamma_matricesr	   r   r
   r   r   r   r   Zsympyr   r   rF   rI   rS   rX   rd   rl   r   r   r   r   Ú<module>   s    	 *	Hv