o
    *Î®c¦  ã                   @   sŒ   d dl mZ d dlmZmZmZ d dl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mZ edƒ\ZZdd	„ Zd
d„ Zdd„ ZdS )é    )ÚNe)ÚDummyÚSymbolÚsymbols)ÚadjointÚ	conjugateÚ	transpose)Ú	Piecewise)ÚEijkÚKroneckerDeltaÚ
LeviCivita)Úevaluate_deltasÚFzx yc                  C   s¾  t dddƒtdddƒksJ ‚tdddƒdksJ ‚ttdƒtdƒtdƒƒdks(J ‚tdddƒdks2J ‚tdddƒdks<J ‚tdƒ\} }}t| ||ƒt| ||ddksSJ ‚t| || ƒdks]J ‚td| | ƒdksgJ ‚t| ||ƒ ¡ ||  ||   ||  d ksJ ‚tddddƒdksŠJ ‚td	d
dddƒdks–J ‚td	d
dddƒdks¢J ‚t| ||ƒjdu s­J ‚tt| ||ƒƒt| ||ƒks½J ‚tt| ||ƒƒt| ||ƒksÍJ ‚tt| ||ƒƒt| ||ƒksÝJ ‚d S )Né   é   é   éÿÿÿÿr   zi j kF)Úevaluateé   é   T)	r
   r   Úintr   ÚdoitÚ
is_integerr   r   r   )ÚiÚjÚk© r   úZ/tmp/pip-target-vg8gfxp4/lib/python/sympy/functions/special/tests/test_tensor_functions.pyÚtest_levicivita   s"     0  $r   c                  C   sB  t dƒ\} }tddd}tddƒdksJ ‚tddƒdksJ ‚t|dƒdks'J ‚tttƒdks0J ‚ttd td  td td  ƒdksEJ ‚t| | ƒdksNJ ‚t| | d ƒdksYJ ‚tddƒdksbJ ‚tddƒdkskJ ‚t| | | ƒdksvJ ‚t| | | | ƒdksƒJ ‚t| | | d | ƒdks’J ‚t| |ƒ tddd¡dks¢J ‚t| |ƒ td	d	d¡dks²J ‚t| |ƒd dks½J ‚tdd
ƒD ]!}t| |ƒ| t| |ƒksÒJ ‚t| |ƒ|  dt| |ƒ ksãJ ‚qÂt| |ƒjdu sîJ ‚t	t| |ƒƒt| |ƒksüJ ‚t
t| |ƒƒt| |ƒksJ ‚tt| |ƒƒt| |ƒksJ ‚t| |ƒt|| ƒkdks)J ‚t| |ƒ t¡tdt| |ƒfdƒks>J ‚t| |d| fƒj| |d| ffksQJ ‚t| || | fƒj| | fkscJ ‚t| |d| d fƒdksrJ ‚td|d| d fƒdksJ ‚t|dd| d fƒdksJ ‚t|| d| d fƒdksŸJ ‚d S )Nzi jr   T)Únonzeror   r   r   )r   r   r   é
   )r   Tr   )r   r   r   ÚxÚyÚsubsÚdictÚranger   r   r   r   Úrewriter	   r   ÚargsÚdelta_range)r   r   r   Únr   r   r   Útest_kronecker_delta"   s@   *  $*&$"r*   c                  C   sˆ  t } tddtd\}}}}tddtd\}}}}tdtd\}	}
}}| ||ƒdks+J ‚| ||ƒdks4J ‚| ||ƒjd	u s>J ‚| ||ƒjdu sHJ ‚| |	|
ƒjdu sRJ ‚| ||
ƒjd	u s\J ‚| |
|ƒjd	u sfJ ‚| |
|ƒjd	u spJ ‚| ||
ƒjdu szJ ‚| ||ƒjdu s„J ‚| ||ƒjd	u sŽJ ‚| |	|
ƒjdu s˜J ‚| |	|ƒjdu s¢J ‚| |
|ƒjd	u s¬J ‚| ||ƒjd	u s¶J ‚| ||ƒjdu sÀJ ‚| |	|
ƒjd	u sÊJ ‚| ||
ƒjd	u sÔJ ‚| |
|ƒjd	u sÞJ ‚| ||
ƒjdu sèJ ‚| ||ƒjdu sòJ ‚| ||ƒjd	u süJ ‚| |	|
ƒjd	u sJ ‚| |	|ƒjdu sJ ‚| |
|ƒjd	u sJ ‚| ||
ƒjr&J ‚| ||
ƒjr/J ‚| |	|
ƒjs8J ‚| ||ƒjsAJ ‚| ||ƒjsJJ ‚| |
|ƒj|ksUJ ‚| |
|ƒj	|
ks`J ‚| |
|ƒj|kskJ ‚| |
|ƒj	|
ksvJ ‚| |
|ƒj|ksJ ‚| |
|ƒj	|
ksŒJ ‚| |
|ƒj|ks—J ‚| |
|ƒj	|
ks¢J ‚| |
|	ƒj|	ks­J ‚| |
|	ƒj	|
ks¸J ‚t
}|| ||
ƒt|
ƒ ƒt|ƒksÌJ ‚|| ||
ƒt|
ƒ ƒt|ƒksÞJ ‚|| ||
ƒt|ƒ ƒ| ||
ƒt|ƒ ksõJ ‚|| ||
ƒt|ƒ ƒ| ||
ƒt|ƒ ksJ ‚|| ||ƒt|ƒ ƒt|ƒksJ ‚|| ||ƒt|ƒ ƒt|ƒks0J ‚|| ||ƒt|ƒ ƒt|ƒksBJ ‚|| ||ƒt|ƒ ƒt|ƒksTJ ‚|| |	|
ƒt|
ƒ ƒt|	ƒksfJ ‚|| |	|
ƒt|	ƒ ƒt|
ƒksxJ ‚|| |	|ƒ| |	|ƒ t|ƒ ƒt|ƒksJ ‚|| |	|ƒ| |	|ƒ t|ƒ ƒt|ƒks¦J ‚|| |	|
ƒ| |	|ƒ ƒt|ƒ | |
|ƒt|ƒ ksÂJ ‚d
S )zsecondquant-specific methodszi j v wT)Úbelow_fermiÚclsza b t u)Úabove_fermir,   zp q r s)r,   r   FN)r   r   r   Úis_above_fermiÚis_below_fermiÚis_only_above_fermiÚis_only_below_fermiÚ!indices_contain_equal_informationÚpreferred_indexÚkillable_indexr   r   )ÚDr   r   ÚvÚwÚaÚbÚtÚuÚpÚqÚrÚsÚEVr   r   r   Ú test_kronecker_delta_secondquantN   st   $$..$$$$$$..<rA   N)Úsympy.core.relationalr   Úsympy.core.symbolr   r   r   Ú$sympy.functions.elementary.complexesr   r   r   Ú$sympy.functions.elementary.piecewiser	   Ú(sympy.functions.special.tensor_functionsr
   r   r   Úsympy.physics.secondquantr   r   r!   r"   r   r*   rA   r   r   r   r   Ú<module>   s    ,