o
    GZŽ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ƒr| | ¡S | |kS ©N)r   Ú
isinstancer   Úequals)Zarg1Zarg2© r   úZ/var/www/auris/lib/python3.10/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rt|ƒt|ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }t| |ƒd	t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ  ƒsJ ‚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|ƒ  ƒsJ ‚dd„ } t|ƒt| ƒ }| |ƒ}!t| |ƒ|!ƒsªJ ‚t|ƒt|ƒ t| ƒ t| ƒ }| d| |d  ƒ}!t| |ƒ|!ƒsÐJ ‚t|ƒt|ƒ t| ƒ t| ƒ }| |d ƒ}!t| |ƒ|!ƒsòJ ‚t|ƒt|ƒ t| ƒ t| ƒ t| ƒ t|ƒ }| d| d|d   |d  ƒ}!t| |ƒ|!ƒs'J ‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ t| ƒ }| |d ƒ}!t| |ƒ|!ƒsRJ ‚t|ƒt|ƒ t|ƒ t|	ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ }| d| d
|d   d|d   |d  ƒ}!t| |ƒ|!ƒs–J ‚t| ƒt| ƒ t| ƒ t| ƒ t|ƒ t|ƒ t|ƒ t|ƒ }| d| d|d   d|d   |d  ƒ}!t| |ƒ|!ƒsÚJ ‚t| ƒt|ƒ t| ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }| d| d|d   d|d   |d  ƒ}!t| |ƒ|!ƒsJ ‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t| ƒ t| ƒ t| ƒ t|
 ƒ t|	 ƒ }| d| d|d   d|d   d|d   |d  ƒ}!t| |ƒ|!ƒsqJ ‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ t|
 ƒ }| d| d|d   d|d   d
|d   |d  ƒ}!t| |ƒ|!ƒsÄJ ‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t|
 ƒ t|	 ƒ }| d| d|d   d|d   d|d   d|d   |d  ƒ}!t| |ƒ|!ƒs&J ‚t|ƒt|ƒ t|ƒ t|	ƒ t|
ƒ t|ƒ t| ƒ t| ƒ t| ƒ t| ƒ t|	 ƒ t|
 ƒ }| d| d |d   d!|d   d"|d   d#|d   |d  ƒ}!t| |ƒ|!ƒsˆJ ‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }t| |ƒd$t|ƒ t|ƒ t|ƒ d| t|ƒ t|ƒ t|ƒ  ƒsÃJ ‚t|ƒt|ƒ t| ƒ }t| |ƒd| t|ƒ ƒsàJ ‚t|ƒt|ƒ t|ƒ t| ƒ }t| |ƒdt|ƒ t|ƒ dt|ƒ t|ƒ  d| t|ƒ t|ƒ  ƒsJ ‚dt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"|d$| d  t|ƒ ƒsGJ ‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"| d d t|ƒ ƒsrJ ‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }| |ƒ}"t|"|d t|ƒ t|ƒ t|ƒ dt|ƒ |||ƒ  ƒs¬J ‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"|d d t|ƒ t|ƒ d| d
 |||ƒ  ƒséJ ‚t|ƒt|ƒ t|ƒ t| ƒ t| ƒ }| |ƒ}"t|"| d |d  d t|ƒ ƒsJ ‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ t| ƒ t| ƒ }| |ƒ}"t|"d	| | d d |d   d t|ƒ ƒsVJ ‚dt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ }| |ƒ}"t|"d$| d t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ  ƒs—J ‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }| |ƒ}"t|"| d | d  t|ƒ t|ƒ t|ƒ t|ƒ d| d t|ƒ t|ƒ t|ƒ t|ƒ  ƒsóJ ‚t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ }| |ƒ}"t|"|d t|ƒ t|ƒ t|ƒ t|ƒ dt|ƒ t|ƒ t|ƒ t|ƒ  ƒs=J ‚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J ‚nt|"|#ƒsJ ‚t|ƒ}| |ƒ}"t|"|ƒs.J ‚d%t|ƒ }| |ƒ}"t|"|ƒs@J ‚d&t|ƒ t|ƒ t| ƒ t|ƒ }| |ƒ}"t|"|ƒs_J ‚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)Ú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   )%Ú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ÿÿþþþýýüüüûûúúúùþp 
ÿ$$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|ƒ}| |¡s3J ‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡sOJ ‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡skJ ‚t| ƒt|ƒ }t|ƒ}| |¡s~J ‚t| ƒt|ƒ }t|ƒ}| |¡s‘J ‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡s©J ‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡sÁJ ‚t| ƒt|  ƒ }t|ƒ}| dtdƒ ¡sÙJ ‚t| ƒt|ƒ t|  ƒ }t|ƒ}| dt|ƒ ¡sõJ ‚t| ƒt|ƒ t|  ƒ t| ƒ }t|ƒ}| d| |d  tdƒ ¡sJ ‚t| ƒt|ƒ t|  ƒ t| ƒ }t|ƒ}| d| |d  tdƒ ¡sEJ ‚t| ƒt|  ƒ t|ƒ t| ƒ }t|ƒ}| dtdƒ ¡sgJ ‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡s‹J ‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡s¯J ‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| |d tdƒ ¡sÓJ ‚t|ƒt|ƒ t| ƒ t| ƒ t| ƒ t|ƒ }t|ƒ}| d| d|d   |d  tdƒ ¡s
J ‚t| ƒt| ƒ t| ƒ t| ƒ t|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}| d| d	|d   d
|d   |d  tdƒ ¡sPJ ‚t| ƒt|ƒ t| ƒ t|ƒ t|ƒ t| ƒ t|ƒ t| ƒ }t|ƒ}| d
| d|d   d|d   |d  tdƒ ¡s–J ‚t|ƒt|ƒ t|ƒ t|ƒ t| ƒ }t|ƒ}| dt|ƒ t|ƒ t|ƒ ¡sÃJ ‚t|ƒt| ƒ t|ƒ t|ƒ }t|ƒ}| dt|ƒ t|ƒ ¡sèJ ‚t|ƒt|ƒ t|ƒ t| ƒ }t|ƒ}| dt|ƒ t|ƒ ¡sJ ‚d S )Nzi0:16r   r   r3   r   r   r"   r%   r&   r$   r'   r(   )r   r
   r   r   r   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g d¢g d¢g d¢g d¢gƒ||ƒ ƒs8J ‚t| ƒ||ƒ t|ƒ }t|ƒ}t|||ƒt| ƒ t|ƒ ƒsYJ ‚ttdd d S )	Nzi,j,kÚA)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   rH   )r   r
   r   r   r   r   r   rF   )ÚiÚjÚkrT   rC   rD   r   r   r   Útest_gamma_matrix_class  s    ü
ü"rX   c                  C   s8	  t j} tdt ƒ\}}}}}}}tdt ƒ\}}	}
}}}d}t|ƒ}t|ƒ}| d¡s+J ‚t|ƒt|ƒ t|ƒ }t|ƒ}| d¡sBJ ‚t|ƒt|ƒ t| ƒ }t|ƒ}| d¡sZJ ‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}| d¡syJ ‚t|ƒt|ƒ }t|ƒ}t|d| ||ƒ ƒs‘J ‚t|ƒt|ƒ t|ƒ t|ƒ }t|ƒ}d| ||ƒ | ||ƒ d| ||ƒ | ||ƒ  d| ||ƒ | ||ƒ  }t||ƒsÐJ ‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ }t|ƒ}|| | | ƒ }| | ¡}t||tt|ƒt|ƒ t|ƒ t|ƒ ƒ ƒsJ ‚t|ƒt| ƒ }t|ƒ}| d| ¡s+J ‚t|ƒt|ƒ t| ƒ t| ƒ }t|ƒ}| d| d|d   ¡sQJ ‚t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t| ƒ }t|ƒ}d| | ||ƒ | ||ƒ d| | ||ƒ | ||ƒ  d| | ||ƒ | ||ƒ  }t||ƒs J ‚t| ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ t| ƒ t|ƒ }t|ƒ}d| d| d d   d	 | ||ƒ| ||ƒ | ||ƒ| ||ƒ  | ||ƒ| ||ƒ   }t||ƒsûJ ‚t|ƒt|ƒ t| ƒ t|ƒ }t|ƒ}| d| d | ||ƒ ¡s!J ‚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ƒJ ‚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öJ ‚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žJ ‚td!t gƒ\}}||ƒt| ƒ }||ƒt| ƒ }||ƒ|| ƒ }||ƒ|| ƒ }||ƒ|| ƒ }|| | | }t|ƒ}t|d| | d| |  ƒsñJ ‚|| | | | | }t|ƒ}t|d"| | | d#| | |  ƒsJ ‚|| | | | | | | }t|ƒ}t|d$| | | | d| | | |  d| | | |  ƒsOJ ‚d||ƒ ||ƒ || ƒ || ƒ ||ƒ || ƒ }tt|ƒ|ƒsvJ ‚|| | | | | | | }t|ƒ}| d| | | | ¡sšJ ‚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   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ÚqsÚp2Úq2ZpqrR   r   r   r   Útest_gamma_matrix_trace!  sª   ( H0
4$ 26ÿD.ÿÿ""l	P~Pz<<2ÿ$, H: $re   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s¢J ‚|d| ||ƒ || ƒ | |ƒ | | ƒ ks¼J ‚||| ksÄJ ‚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   )ÚpiZkiÚpfrJ   rK   rL   rM   rN   rf   ZpisZkisZpfsÚaÚbÚtaÚtbZ
t_a_plus_br   r   r   Útest_bug_13636—  s$   44&&ÿ
ÿ4rm   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   re   rm   r   r   r   r   Ú<module>   s     	 *	Hv