a
    {þdBœ  ã                   @   sØ  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d d	l4m5Z5 d d
l6m7Z7m8Z8 d dl9m: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 d! ZEd"d# ZFd$d% ZGd&d' ZHe7d(d) ZId*d+ ZJd,d- ZKd.d/ ZLd0d1 ZMd2d3 ZNd4d5 ZOd6d7 ZPd8d9 ZQd:d; ZRd<d= ZSd>d? ZTd@dA ZUdBdC ZVdDdE ZWdFdG ZXdHdI ZYdJdK ZZdLdM Z[dNdO Z\dPdQ Z]dRdS Z^dTdU Z_dVdW Z`dXdY ZadZd[ Zbd\d] Zcd^d_ Zdd`da Zedbdc Zfddde Zgdfdg Zhdhdi Zidjdk Zjdldm Zkdndo Zldpdq Zmdrds Zndtdu Zodvdw Zpdxdy ZqdzS ){é    )!ÚDaggerÚBdÚVarBosonicBasisÚBBraÚBÚBKetÚFixedBosonicBasisÚ
matrix_repÚapply_operatorsÚInnerProductÚ
CommutatorÚKroneckerDeltaÚAnnihilateBosonÚCreateBosonÚBosonicOperatorÚFÚFdÚFKetÚ
BosonStateÚCreateFermionÚAnnihilateFermionÚevaluate_deltasÚAntiSymmetricTensorÚcontractionÚNOÚwicksÚPermutationOperatorÚsimplify_index_permutationsÚ_sort_anticommuting_fermionsÚ_get_ordered_dummiesÚsubstitute_dummiesÚFockStateBosonKetÚ ContractionAppliesOnlyToFermions)ÚSum)ÚFunctionÚexpand)ÚIÚRational)ÚS)ÚDummyÚSymbolÚsymbols)Úsqrt)Úsrepr)Úsimplify)ÚslowÚraises)Úlatexc                  C   s  t d\} }}}ttd\}}}}t}|| | || || ¡|| ||  ksXJ || | || |¡|||  ks~J || | || ¡|| ksJ || || || || ||||  || ||  || || || ||  ||||  || ||  }	|| ||||g}
t|	|
|| |||| ||  || || || ksvJ t|| |dksJ d S )Núp,q,r,sZfghizP(pq))r+   Úmapr$   r   Zget_permutedr   r1   )ÚpÚqÚrÚsÚfÚgÚhÚiÚPÚexprZperms© r>   úm/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/physics/tests/test_secondquant.pyÚtest_PermutationOperator   s$    2& ÿþý2ÿ
r@   c                  C   sZ  t d\} }}}t dtd\}}}}ttd\}}	t}
|| |||||| || }t||
| |g|
| ||| ||| ksJ |
| |t|| ||| }|| |||||| || }t||
| |g}|t|ksÚJ || |||||| || }t||
| |g}|t|ksJ || ||||	|| || }t||
| |g}||ksVJ d S )Núa b c dúp q r s©ÚclsZfg)r+   r)   r3   r$   r   r   r    )ÚaÚbÚcÚdr4   r5   r6   r7   r8   r9   r<   r=   ÚexpectedÚresultr>   r>   r?   Ú$test_index_permutations_with_dummies+   s(    ÿÿrK   c                  C   sÀ  t d\} }}}tddks J tddks0J tdt dt ksHJ ttjt d ttdd d kspJ tt|gt|gksJ ttdt	dks€J tt	dtdksŒJ tt|t	|ksÔJ tt	|t|ksìJ ttdtd t	dt	d ksJ t|| t|t| ks8J tt|t| t	|t	| ksbJ tt|d	 tt|d	 ksJ td
tt
d
ks¢J ttd
t
d
ksŒJ d S )Núi,j,n,mé   g      ð?é   éþÿÿÿg      @éÿÿÿÿr   é
   rE   )r+   r   r&   r(   ÚHalfr'   r   r   r   r   r*   )r;   ÚjÚnÚmr>   r>   r?   Útest_daggerG   s     (*"*&rV   c                  C   sP   t d\} }t| }|j| ks"J |js,J td}|jdksBJ |jrLJ d S )Núi,jrM   )r+   r   ÚstateZis_symbolic)r;   rS   Úor>   r>   r?   Útest_operatorZ   s    
rZ   c                  C   sº   t d\} }}}t| }t|dks(J t|ts6J | | |¡}| t¡|hksVJ td}| t	|g¡t
|d t	|d g ksJ t|}| t	|g¡|t	|g ks¶J d S )NrL   z{b^\dagger_{i}}r   rM   )r+   r   r1   Ú
isinstancer   ÚsubsÚatomsr*   Úapply_operatorr   r,   ©r;   rS   rT   rU   rY   r>   r>   r?   Útest_created   s    .r`   c                  C   s¶   t d\} }}}t| }t|dks(J t|ts6J | | |¡}| t¡|hksVJ td}| t	|g¡t
|t	|d g ksJ t|}| t	|g¡|t	|g ks²J d S )NrL   zb_{i}r   rM   )r+   r   r1   r[   r   r\   r]   r*   r^   r   r,   r_   r>   r>   r?   Útest_annihilateq   s    *ra   c                  C   s  t d\} }}}tg d¢}t|dks,J |jd ttdksFJ | d¡tg d¢ks`J | d¡tg d¢kszJ tdD ]} | | ¡ | ¡|ksJ q| d¡dks²J tdD ]} ||  | ksºJ qºt||g}| d¡t|d |gksúJ | d¡t|d |gksJ d S )	NrL   )r   rM   rN   é   é   é   r   )rM   rM   rN   rb   rc   rc   )r   rM   rN   rb   rb   rM   )r+   r   ÚlenÚargsÚtupleÚrangeZupZdown)r;   rS   rT   rU   r7   r>   r>   r?   Útest_basic_state~   s    ri   c                  C   sx   t d} tdt| g }t|t| t| d g ks<J tdt| g }t|t| d t| d g kstJ d S )NrT   r   rM   )r+   r   r   r
   r,   r   )rT   Úer>   r>   r?   Útest_basic_apply   s
    "rk   c                  C   s   t d\} }tdtd td td }t|t| |g }t| t|d  d|   td|  d| g }t|t|ksJ d S )Nún,mr   rM   rP   )r+   r   r   r
   r   r,   r%   )rT   rU   rY   rj   Zanswerr>   r>   r?   Útest_complex_apply   s
     0rm   c                  C   sD   t d} tdtd }t|t| g }|| t| g ks@J d S )NrT   r   )r+   r   r   r
   r   )rT   rY   rj   r>   r>   r?   Útest_number_operator   s    rn   c                  C   s   t d\} }}}tdg}tdg}t|t|dks:J t||dksLJ t| |g}t||g}t||}|t| |t|| ksJ d S )Núi,j,k,lr   rM   )r+   r   r   r   r   r   )r;   rS   ÚkÚlÚs1Ús2r6   r>   r>   r?   Útest_inner_productŠ   s    


rt   c                  C   sZ   t d\} }t| g}t|g}td}t|| | }|t|t| |d  ksVJ d S )Nrl   r   rM   )r+   r   r   r   r
   r,   r   )rT   rU   rr   rs   rY   rj   r>   r>   r?   Útest_symbolic_matrix_elements²   s    

ru   c                  C   s   t d} td}t|| }tdD ]$}|||d f t|d ks"J q"td}t|| }tdD ]$}||d |f t|d ksbJ qbd S )Nrd   r   rc   rM   )r   r   r	   rh   r,   r   )rF   rY   rU   r;   r>   r>   r?   Útest_matrix_elements»   s    
"
rv   c                  C   s   t dd} |  d¡}|tdks$J |  |¡dks6J |  d¡| d ksLJ t| dks\J t| dkslJ t| dks|J t| dksJ d S )NrN   rM   )rM   rM   rb   z9[FockState((2, 0)), FockState((1, 1)), FockState((0, 2))])r   rX   r!   Úindexre   ÚstrÚreprr-   )rF   rX   r>   r>   r?   Útest_fixed_bosonic_basisÇ   s    

rz   c                  C   s   t d\} }t| t|  | tj  }t|| ddf}|jdd}tdd}t||}g d¢}t	t
|D ]}|| |||f ksjJ qjd S )	Nrl   r   rd   F)ÚdeeprN   é   )rM   rN   rb   rb   rc   rd   rc   rd   r|   é   rd   r|   r}   é   é	   r|   r}   r~   r   rQ   é   )r+   r   r   r(   rR   r#   Údoitr   r	   rh   re   )rT   rU   Zh_nÚHrY   rF   Zdiagr;   r>   r>   r?   Útest_shoÔ   s    

r   c                  C   s:  t ddd\} }ttdtd}|dks.J ttdtd}|dksLJ tt| td}|t| dkspJ ttdtd}|dksJ ttdtd}tt|t| g }|t| gksÈJ ttdtd}tt|t| |g }|dksþJ tt|t	|}|ddt
t	|t|   ks6J tt	|t|}| ¡ ddt
t	|t|   ksrJ t}t dd	d
\}}}|||||dks¢J |||||dksŒJ |||||dksÖJ t ddd\}}	}
}t ddd\}}}}t d\}}}}t}|t	|t|dt
t|t	|  ksBJ |t	|	t
t	|t| jdd||	| t	| ksJ |t	|t| t	|t|	 jdddks¶J tt|t	|}t ||¡dksÞJ tt	|t| t	|t|	 }t|dksJ t|dks$J t|dks6J d S )Nrl   T©Úabove_fermir   rM   rP   rN   zX,Y,ZF)Zcommutativero   ©Úbelow_fermiúa,b,c,dr2   rO   )r   z8\left[{a^\dagger_{a}} a_{i},{a^\dagger_{b}} a_{j}\right]zWCommutator(CreateFermion(a)*AnnihilateFermion(i),CreateFermion(b)*AnnihilateFermion(j))zM[CreateFermion(a)*AnnihilateFermion(i),CreateFermion(b)*AnnihilateFermion(j)])r+   r   r   r   r   r.   r
   r   r   r   r   r%   r   Úevalr1   ry   rx   )rT   rU   rG   rj   ÚCÚXÚYÚZr;   rS   rp   rq   rE   rF   rH   r4   r5   r6   r7   ÚDZc1r>   r>   r?   Útest_commutationã   sJ    &*0@4"r   c                  C   sÖ  t d\} }}}t| }t|ts&J | | |¡}| t¡|hksFJ td}| t|g¡td|gksnJ | t|g¡t|dg ksJ t|}| tg ¡t|gksŽJ tg dd}|tg ddksÔJ t ddd\} }}}t ddd	\}}	}
}t d
\}}}}t|  t| ||gd¡t||gdks:J t| t| |	|gd¡t|| |	|gdkslJ t	t
| |¡|t| ksJ tt|dksŠJ tt|dksŒJ tt|dksÒJ d S )NrL   rM   rc   )Zfermi_levelro   Tr   r   r   r2   zCreateFermion(p)zCreateFermion(Symbol('p'))z{a^\dagger_{p}})r+   r   r[   r   r\   r]   r*   r^   r   r   r   r   ry   r-   r1   )r;   rS   rT   rU   rY   Zvacuumrp   rq   rE   rF   rG   rH   r4   r5   r6   r7   r>   r>   r?   Útest_create_f  s*     ".2$r   c                  C   sæ  t d\} }}}t| }t|ts&J | | |¡}| t¡|hksFJ td}| td|g¡t|gksnJ | t|dg¡t|g ksJ t|}| t|g¡tg ksŽJ t ddd\} }}}t ddd\}}}	}
t d\}}}}t|  t| ||gd	¡d
ksJ t| t| ||gd	¡d
ks4J t| t| ||gd¡d
ksXJ t| t| ||gd	¡t|| ||gd	ksJ t	t|dks J t
t|dks¶J tt|dksÌJ tt|dksâJ d S )NrL   rM   ro   Tr   r   r   r2   rc   r   rb   zf(p)zAnnihilateFermion(p)zAnnihilateFermion(Symbol('p'))za_{p})r+   r   r[   r   r\   r]   r*   r^   r   rx   ry   r-   r1   )r;   rS   rT   rU   rY   rp   rq   rE   rF   rG   rH   r4   r5   r6   r7   r>   r>   r?   Útest_annihilate_f,  s*     "$$$2r   c                  C   sª   t d\} }}}t| }t|ts&J | | |¡}| t¡|hksFJ td}| t|g¡t	|d t|d g ks|J t|}| t|g¡|t|g ksŠJ d S )NrL   r   rM   )
r+   r   r[   r   r\   r]   r*   r^   r   r,   r_   r>   r>   r?   Útest_create_bE  s    .r   c                  C   sR   t d\} }}}t| }t|ts&J | | |¡}| t¡|hksFJ td}d S )NrL   r   )r+   r   r[   r   r\   r]   r*   r_   r>   r>   r?   Útest_annihilate_bQ  s    r   c                  C   sV  t ddd\} }}}t| t| }t|tt| t| t| | ksNJ t| t| }t|tt| t| ks~J t| t| t| t| }t|}tt| |t|| t| |t| t|  t||t|  t|  t| |t| t|  t| t| t| t|  }||ks:J | | |  ¡ t| | | ks`J ||  | d  ¡ t||  | d ksJ t ddt	d\}}}	}
t ddt	d\}}}}t d	t	d
\} }}}tt|tt|t|  t| tt|t| t| t| t||tt|t|   ks>J tt|tt|t| t|	  t| tt|t| t| t|	 t| t||tt|t| t|	   ksÆJ tt|tt|t|	  t|
 }|t||	 tt|t|
  t||
tt|t|	   t||	t||
  t||
tt|t|	   tt|t| t|	 t|
  ksJ tt|tt|t|  t| }|t|| tt|t|  t||tt|t|   t||t||  t||tt|t|   tt|t| t| t|  ksRJ d S )Nr2   Tr   rN   úi j k l©r   rD   rA   ©r   rD   rB   rC   )
r+   r   r   r   r   r   r   r   r%   r)   )r4   r5   r6   r7   rx   ZnstrZfasitr;   rS   rp   rq   rE   rF   rG   rH   r=   r>   r>   r?   Ú
test_wicksZ  st    *  ÿþýüÿ&.&"ÿÿ
.*$ÿÿ
(ÿþý"üÿ
(ÿþý"üÿr   c                     s  t ddd\} }}}t ddd\}}}}t dtd\ }}	tt t t|t|  tt t tt|t|  ksJ tt| tt|t|  tt| t| t| ksÌJ tddksÜJ t| | ksìJ tt|t| t|t|  tt|t| t| tt|t| t|  ksNJ tt|t|  ¡ t|t| ks|J tt|t|   ¡ t|t|  ksªJ tt t  t t|t|  ¡tt|t tt| t  ksJ tt t  tt|t|  ¡tt t| tt t|   ks^J tt t  ¡ }
t|
t|
ksJ tt|t| tt|t|  ksŒJ tt|t|  t| t| }t| 	¡ }|d	dgksþJ t| 
¡ }|d
dgksJ tt|t|  }|jdks@J |jdksPJ t|dksbJ t|dkstJ t|dksJ tt fdd d S )Nr   Tr   rA   r   rB   rC   rM   r   rb   rN   rP   z#:CreateFermion(a)*CreateFermion(i):z%NO(CreateFermion(a)*CreateFermion(i))z.\left\{{a^\dagger_{a}} {a^\dagger_{i}}\right\}c                      s   t t t S ©N)r   r   r   r>   ©r4   r5   r>   r?   Ú<lambda>Ž  ó    ztest_NO.<locals>.<lambda>)r+   r)   r   r   r   Z_remove_bracketsr\   r   ÚlistZiter_q_creatorsZiter_q_annihilatorsZhas_q_creatorsZhas_q_annihilatorsrx   ry   r1   r0   ÚNotImplementedError)r;   rS   rp   rq   rE   rF   rG   rH   r6   r7   r=   ÚnoÚl1Úl2r>   r   r?   Útest_NO  sN    "&ÿÿ"ÿÿ
..*&ÿ
*&ÿ
0$r¡   c                  C   sx  t ddd\} }t ddd\}}t d\}}tt|t|gt|t|gdfksXJ tt|t|gt|t|gdfksJ tt|t| gt|t| gdfks°J tt| t|gt|t| gdfksÜJ tt|t| gt|t| gdfks
J tt| t|gt|t| gdfks8J tt|t| gt| t|gdfksfJ tt| t|gt| t|gdfksJ tt|t| gt| t|gdfksÂJ tt| t|gt| t|gdfksðJ tt|t|gt|t|gdfksJ tt|t|gt|t|gdfksLJ tt|t|gt|t|gdfkszJ tt|t|gt|t|gdfksšJ tt|t|gt|t|gdfksÖJ tt|t|gt|t|gdfksJ tt|t|gt|t|gdfks2J tt|t|gt|t|gdfks`J tt| t|gt| t|gdfksJ tt|t| gt| t|gdfksŒJ tt|t| gt|t| gdfksêJ tt| t|gt|t| gdfksJ tt|t| gt| t|gdfksFJ tt| t|gt| t|gdfkstJ d S )	NrW   Tr   za,br   zp,qr   rM   )r+   r   r   r   )r;   rS   rE   rF   r4   r5   r>   r>   r?   Útest_sorting·  s6    ,,,,...................r¢   c                     s^  t ddd\} }}}t ddd\ }}t d\}}}}	tt| t|t| |ksXJ tt tt ksxJ tt t| dksJ tt t| dks¬J tt| t dksÆJ tt| t dksàJ tt| t|t| |ksJ ttt|t|}
|
js$J ttt|t|}
|
jsFJ tt	 fdd	 d S )
Nro   Tr   r   r   r2   r   c                      s   t t tS r   )r   r   r   r>   ©rE   rF   r>   r?   r   ì  r   z"test_contraction.<locals>.<lambda>)
r+   r   r   r   r   r   Zis_only_below_fermiZis_only_above_fermir0   r"   )r;   rS   rp   rq   rG   rH   r4   r5   r6   r7   Úrestrr>   r£   r?   Útest_contractionÝ  s      "r¥   c                  C   s,  t d\} }}t| |t|| }t|t| |ks8J t| dt|| }t|t| dt|| kslJ td|t|| }t|td|ksJ t|dt|| }t|td|ksÀJ t| dt| | t|d }t|dksîJ td| td| td| td| }t|dks(J d S )Nzi,j,kr   rM   rN   )r+   r   r   )r;   rS   rp   r6   r>   r>   r?   Útest_evaluate_deltasï  s"     ÿÿrŠ   c                  C   sŒ  t ddtd\} }}}t ddtd\}}}}t d\}}	}
}t}|d||f| |f|d||f| |f ksnJ |d||f| |f|d||f|| fksJ |d||f| |f|d||f|| f ksÈJ |d||f| |fdksäJ |d||f| | fdksJ |d|||f| |f|d|||f| |f ks6J |d|||f| ||f|d|||f| ||fkslJ |d||f| |f}| |¡sJ | |¡s J | | ¡s°J | |¡sÀJ | ||¡|d||f| |fksæJ d	|  | |¡d	|d||f||f ksJ |jtdks(J t|d
ks:J t|dksLJ |d||f| |f ||¡|d||f| |fksJ |d|| f||f ||¡|d|| f||fksžJ d S )Nr   Tr   rA   r   rB   Útr   rN   z{t^{ab}_{ij}}zt((_a, _b),(_i, _j)))	r+   r)   r   Zhasr\   Úsymbolr*   r1   rx   )r;   rS   rp   rq   rE   rF   rG   rH   r4   r5   r6   r7   ÚATZtabijr>   r>   r?   Útest_Tensors  s.    .,.46&.6rª   c                  C   s*  t ddd\} }}}t ddd\}}}}t dtd\}}	}
}td|f|	ftt|t|	  }td	||	f|
|ftt|t|	 t| t|
  d
 }ttt| t| | ddd}|td|f| fksÖJ ttt| t| t| t| | ddd}|td	||f| |fks&J d S )Nr   Tr   rA   r   rB   rC   r8   Úvrc   )Zkeep_only_fully_contractedZsimplify_kronecker_deltas)r+   r)   r   r   r   r   r   )r;   rS   rp   rq   rE   rF   rG   rH   r4   r5   r6   r7   ZFockÚVZFaiZVabijr>   r>   r?   Útest_fully_contracted#  s*    ÿ"ÿÿþ(þr­   c                  C   sX   t d\} }tt| |d t| |d ks0J tt| |d t| |d ksTJ d S )NrW   rN   rM   )r+   r    Úatt©r;   rS   r>   r>   r?   Ú'test_substitute_dummies_without_dummies7  s    $r°   c                  C   s\   t dtd\} }tt| |tt| t|  t|| tt|t|    dksXJ d S ©Núi jrC   r   )r+   r)   r    r®   r   r   r   r¯   r>   r>   r?   Ú#test_substitute_dummies_NO_operator=  s    ÿÿr³   c                  C   sT   t dtd\} }tt| |t|  t| t|| t| t|   dksPJ d S r±   )r+   r)   r    r®   r   r   r¯   r>   r>   r?   Ú#test_substitute_dummies_SQ_operatorC  s    ÿÿrŽ   c                  C   sh   t ddtd\} }t ddtd\}}t dtd\}}td}t|| |||||| dd	d
ksdJ d S )Nr²   Tr   úa br   úp qrC   r8   )Znew_indicesr   )r+   r)   r$   r    )r;   rS   rE   rF   r4   r5   r8   r>   r>   r?   Ú#test_substitute_dummies_new_indicesI  s
    r·   c                  C   sh   t ddtd\} }}}td}ddlm} || |||gdD ]&}t|| || ||| dks<J q<d S )Nr   Tr   r8   r   ©Ú
variationsrc   )r+   r)   r$   Úsympy.utilities.iterablesr¹   r    )r;   rS   rp   rq   r8   r¹   Úpermutr>   r>   r?   Ú*test_substitute_dummies_substitution_orderQ  s
    rŒ   c                  C   sH  t ddd} t ddd}t ddtd\}}t ddtd	\}}td
}td}t}||||||||  ||| ||| ||||||||  ||| ||| ||||||||  ||| ||| ||||||||  ||| ||| g}	|	dd  D ]:}
||	d ||
ks&J t|	d t|
ksJ qd S )Nr;   Tr   rE   r   úk lr   úc dr   r«   r§   rM   r   ©r+   r)   r$   r   r    )ÚiiÚaarp   rq   rG   rH   r«   r§   ÚdumsÚexprsr»   r>   r>   r?   Ú*test_dummy_order_inner_outer_lines_VT1T1T1Y  s    ****úrÄ   c                  C   s°  t ddd\} }t ddd\}}t ddtd\}}t ddtd	\}}td
}td}	t}
||||||	||  |	|| |	|| |	|| ||||||	|| |	||  |	|| |	|| ||||||	||  |	|| |	|| |	|| ||||||	|| |	||  |	|| |	|| g}|dd  D ]:}|
|d |
|ksVJ t|d t|ks8J q8||||||	||  |	|| |	|| |	|| ||||||	||  |	|| |	|| |	|| ||||||	||  |	|| |	|| |	|| ||||||	||  |	|| |	|| |	|| g}|dd  D ]:}|
|d |
|ksrJ t|d t|ksTJ qT||||||	||  |	|| |	|| |	|| ||||||	|| |	||  |	|| |	|| ||||||	||  |	|| |	|| |	|| ||||||	|| |	||  |	|| |	|| g}|dd  D ]:}|
|d |
|ksJ t|d t|kspJ qpd S ©Nr²   Tr   rµ   r   rœ   r   rŸ   r   r«   r§   rM   r   r¿   ©rÀ   ÚjjrÁ   Úbbrp   rq   rG   rH   r«   r§   rÂ   rÃ   r»   r>   r>   r?   Ú,test_dummy_order_inner_outer_lines_VT1T1T1T1r  s>    4444ú
4444ô4444ù	rÉ   c                  C   sÀ   t d\} }}tt| t| t|  d¡tt| t| ksHJ tt| t| t|  d¡tt|t| ksJ tt| t| t|  d¡tt| t| ksŒJ d S )Nzp,q,rrM   r   rN   )r+   r   r   Z	get_subNO)r4   r5   r6   r>   r>   r?   Útest_get_subNO§  s    ::rÊ   c                  C   sÎ  t ddtd\} }}}t ddtd\}}}}td}td}	t}
|| ||||	||  |	|| ||| |||	||  |	|| || ||||	||  |	|| g}|dd  D ]4}|
|d	 |
|ksÌJ t|d	 t|ks°J q°|| ||||	||  |	|| ||| |||	||  |	|| g}|dd  D ]:}|
|d	 |
|ksTJ t|d	 t|ks6J q6|| ||||	||  |	|| || ||||	||  |	|| g}|dd  D ]:}|
|d	 |
|ksàJ t|d	 t|ksÂJ qÂ|| ||||	||  |	|| ||| |||	|| |	||  || ||||	||  |	|| ||| |||	|| |	||  g}|dd  D ]:}|
|d	 |
|ks¬J t|d	 t|ksJ qd S ©
Nr   Tr   rA   r   r«   r§   rM   r   r¿   ©r;   rS   rp   rq   rE   rF   rG   rH   r«   r§   rÂ   rÃ   r»   r>   r>   r?   Ú$test_equivalent_internal_lines_VT1T1®  s@       ý  þ  þ    ürÍ   c                  C   s0  t ddtd\} }}}}}t ddtd\}}}}	}
}t ddtd\}}}}t ddtd\}}}}dd	lm} td
}td}t}||||||||| | || ||| }|||||	gd}| t||||gt|¡}|D ]J}t||||g|}| |¡}||||ksJ t	|t	|ksÜJ qÜ||||||||||  ||| || }|||||	gd}| t||||gt|¡}|D ]N}t||||g|}| |¡}||||ksºJ t	|t	|ksJ q||||||||| | ||| || }|||||	gd}| t||||gt|¡}|D ]N}t||||g|}| |¡}||||ksfJ t	|t	|ks0J q0||||||||||  || ||| }|||||	gd}| t||||gt|¡}|D ]N}t||||g|}| |¡}||||ksJ t	|t	|ksÜJ qÜd S ©Núi j k l m nTr   úa b c d e fr   úp1 p2 p3 p4úh1 h2 h3 h4r   rž   r«   r§   rc   ©
r+   r)   rº   r¹   r$   r   r\   ÚzipÚnextr    ©r;   rS   rp   rq   rU   rT   rE   rF   rG   rH   rj   r8   Úp1Úp2Úp3Úp4Úh1Úh2Úh3Úh4r¹   r«   r§   rÂ   ÚtemplateÚ
permutatorÚbaser»   Úsubslistr=   r>   r>   r?   Ú(test_equivalent_internal_lines_VT2conjT2Ú  sP    *
*
*
*
rã   c                  C   sØ  t ddtd\} }}}}}t ddtd\}}}}	}
}t ddtd\}}}}t ddtd\}}}}dd	lm} td
}td}t}||||||||| | |||| | }|||||	gd}| t||||gt|¡}|D ]J}t||||g|}| |¡}||||ksJ t	|t	|ksÜJ qÜ||||||||||  |||| | }|||||	gd}| t||||gt|¡}|D ]N}t||||g|}| |¡}||||ksºJ t	|t	|ksJ qd S rÎ   rÓ   rÖ   r>   r>   r?   Ú8test_equivalent_internal_lines_VT2conjT2_ambiguous_order  s0    *
*
rä   c               	   C   sZ  t ddtd\} }}}t ddtd\}}}}td}td}	t}
|| ||||	||| | ||| |||	||| | || ||||	||| | ||| |||	||| | g}|dd  D ]4}|
|d	 |
|ksÔJ t|d	 t|ksžJ qž|| ||||	||| | || ||||	||| | || ||||	||||  || ||||	||||  g}|dd  D ]:}|
|d	 |
|ksJ t|d	 t|ksfJ qf|| ||||	||| | ||| |||	||||  || ||||	||| | ||| |||	||||  g}|dd  D ]:}|
|d	 |
|ks8J t|d	 t|ksJ qd S rË   r¿   rÌ   r>   r>   r?   Ú"test_equivalent_internal_lines_VT2-  s:    òûürå   c               	   C   s   t ddd\} }t ddd\}}t ddtd\}}t ddtd	\}}td
}td}	t}
||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| g}|dd  D ]:}|
|d |
|ks&J t|d t|ksJ q||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| g}|dd  D ]:}|
|d |
|ksJ t|d t|ksôJ qô||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| g}|dd  D ]:}|
|d |
|ksþJ t|d t|ksàJ qàd S rÅ   r¿   rÆ   r>   r>   r?   Útest_internal_external_VT2T2^  s>    ((((ü((((ü((((üræ   c               	   C   s8  t d\} }t d\}}t dtd\}}t dtd\}}td}td}	t}
||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| ||||||	||| | |	|||| g}|dd  D ]6}|
|d	 |
|ksJ t|d	 t|ksüJ qüd S )
Nr²   rµ   rœ   rC   rŸ   r«   r§   rM   r   r¿   rÆ   r>   r>   r?   Útest_internal_external_pqrs  s    ((((ürç   c                  C   sV  t ddd\} }t ddtd\}}}t ddtd\}}t dtd	\}}td
}	td}
td}t}||	|||
|| ||gksJ ||	|||
|| ||gksªJ ||	|||
|| ||gksÎJ ||	|||
|| ||gksòJ ||	|||
|| ||| |||gks$J ||	|||
|| ||| |||gksVJ ||	|||
|| ||| |||gksJ ||	|||
|| ||| |||gksºJ ||	|||
|| ||| |||gksìJ ||	|||
|| ||| |||gksJ ||	|||
|| ||| |||gksPJ ||	|||
|| ||| |||gksJ ||	|| ||	||| |	||| |||gksºJ ||	|| ||	||| |	||| |||gksòJ ||	|| ||	||| |	||| |||gks*J ||	|| ||	||| |	||| |||gksbJ ||	|| ||	||| |	||| |||gksJ ||	|| ||	||| |	||| |||gksÒJ ||	|| ||	||| |	||| |||gks
J ||	|| ||	||| |	||| |||gksBJ ||	||||
||| |||gksnJ ||	||||
||| |||gksJ ||	||||
||| |||gksÆJ ||	||||
||| |||gksòJ ||	||||
||| |||gksJ ||	||||
||| |||gksJJ ||
||||	||| |||gksvJ ||
||||	||| |||gks¢J ||
||||	||| |||gksÎJ ||
||||	||| |||gksúJ ||
||||	||| |||gks&J ||
||||	||| |||gksRJ d S )Nrµ   Tr   zk l mr   rŸ   r   r¶   rC   ÚAr   r   )r+   r)   r$   r   )rÁ   rÈ   rp   rq   rU   rG   rH   r4   r5   rè   r   r   rÂ   r>   r>   r?   Útest_dummy_order_well_defined  sP    $$$$2222222288888888,,,,,,,,,,,ré   c            '      C   sš  t ddd\} }t ddtd\}}}}}t ddtd\}}}	}
}t dtd	\}}t d
dtd\}}}}t ddtd\}}}}t ddtd\}}}}t ddtd\}}}}td}td}ddlm}  |||||| ||| ||| ||| }!| |||	|
|gd}"|! t|||||gt|"¡}#|"D ]:}$t|||||g|$}%|! |%¡}&t|&t|#ks,J q,|||||| ||| ||| ||| }!| |||	|
|gd}"|! t|||||gt|"¡}#|"D ]:}$t|||||g|$}%|! |%¡}&t|&t|#ksÐJ qÐ|||||||||| ||| }!| |||	|
|gd}"|! t|||||gt|"¡}#|"D ]:}$t|||||g|$}%|! |%¡}&t|&t|#kshJ qhd S )Nrµ   Tr   z	i j k l mr   z	a b c d er   r¶   rC   rÑ   zp5 p6 p7 p8rÒ   zh5 h6 h7 h8rè   r   r   rž   rd   )	r+   r)   r$   rº   r¹   r\   rÔ   rÕ   r    )'rÁ   rÈ   r;   rS   rp   rq   rU   rE   rF   rG   rH   rj   r4   r5   r×   rØ   rÙ   rÚ   Zp5Zp6Zp7Zp8rÛ   rÜ   rÝ   rÞ   Úh5Úh6Zh7Zh8rè   r   r¹   rß   rà   rá   r»   râ   r=   r>   r>   r?   Útest_dummy_order_ambiguousÒ  s@    2
2
&
rì   c                  G   s   t d| d d | dd  S )Nr«   rN   )r   ©rf   r>   r>   r?   Úatvý  s    rî   c                  G   sP   t | dkr(td| d d | dd  S t | dkrLtd| d f| d fS d S )Nrc   r§   rN   r   rM   )re   r   rí   r>   r>   r?   r®     s    r®   c                  C   s  t ddd} t ddd}t ddtd\}}t ddtd	\}}t||||t||  t|| t|| t||||t||  t|| t|| t||||t||  t|| t|| t||||t||  t|| t|| g}|d
d  D ]}t|d t|ksôJ qôd S )Nr;   Tr   rE   r   rœ   r   rŸ   r   rM   r   ©r+   r)   rî   r®   r    )rÀ   rÁ   rp   rq   rG   rH   rÃ   r»   r>   r>   r?   Ú-test_dummy_order_inner_outer_lines_VT1T1T1_AT  s    ****úrð   c            
      C   s®  t ddd\} }t ddd\}}t ddtd\}}t ddtd	\}}t||||t||  t|| t|| t|| t||||t|| t||  t|| t|| t||||t||  t|| t|| t|| g}|d
d  D ]}	t|d t|	 ksðJ qðt||||t||  t|| t|| t|| t||||t|| t||  t|| t|| g}|d
d  D ] }	t|d t|	ksJ qd S ©Nr²   Tr   rµ   r   rœ   r   rŸ   r   rM   r   rï   ©
rÀ   rÇ   rÁ   rÈ   rp   rq   rG   rH   rÃ   r»   r>   r>   r?   Ú/test_dummy_order_inner_outer_lines_VT1T1T1T1_AT  s    444ü44ýró   c            
      C   sT  t ddtd\} }}}t ddtd\}}}}t| |||t||  t|| t|| ||t||  t|| t| |||t||  t|| g}|dd  D ]}	t|d t|	ksJ qt| |||t||  t|| t|| ||t||  t|| g}|dd  D ] }	t|d t|	ks
J q
t| |||t||  t|| t| |||t||  t|| g}|dd  D ] }	t|d t|	ks|J q|t| |||t||  t|| t|| ||t|| t||  t| |||t||  t|| t|| ||t|| t||  g}|dd  D ] }	t|d t|	ks.J q.d S ©Nr   Tr   rA   r   rM   r   rï   ©
r;   rS   rp   rq   rE   rF   rG   rH   rÃ   r»   r>   r>   r?   Ú'test_equivalent_internal_lines_VT1T1_AT7  s2       ý  þ  þ    ürö   c                  C   sÄ  t ddtd\} }}}}}t ddtd\}}}}	}
}t ddtd\}}}}t ddtd\}}}}dd	lm} t||||t||| | t| ||| }|||||	gd
}| t||||gt|¡}|D ]4}t||||g|}| |¡}t	|t	|ksÈJ qÈt||||t||||  t|| || }|||||	gd
}| t||||gt|¡}|D ]8}t||||g|}| |¡}t	|t	|ksZJ qZt||||t||| | t|| || }|||||	gd
}| t||||gt|¡}|D ]8}t||||g|}| |¡}t	|t	|ksðJ qðt||||t||||  t| ||| }|||||	gd
}| t||||gt|¡}|D ]8}t||||g|}| |¡}t	|t	|ksJ qd S ©NrÏ   Tr   rÐ   r   rÑ   rÒ   r   rž   rc   ©
r+   r)   rº   r¹   rî   r®   r\   rÔ   rÕ   r    ©r;   rS   rp   rq   rU   rT   rE   rF   rG   rH   rj   r8   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   r¹   rß   rà   rá   r»   râ   r=   r>   r>   r?   Ú+test_equivalent_internal_lines_VT2conjT2_AT[  sB    *
*
*
*
rú   c                  C   s  t ddtd\} }}}}}t ddtd\}}}}	}
}t ddtd\}}}}t ddtd\}}}}dd	lm} t||||t||| | t||| | }|||||	gd
}| t||||gt|¡}|D ]4}t||||g|}| |¡}t	|t	|ksÈJ qÈt||||t||||  t||| | }|||||	gd
}| t||||gt|¡}|D ]8}t||||g|}| |¡}t	|t	|ksZJ qZd S r÷   rø   rù   r>   r>   r?   Ú;test_equivalent_internal_lines_VT2conjT2_ambiguous_order_AT  s&    *
*
rû   c            
   	   C   sÆ  t ddtd\} }}}t ddtd\}}}}t| |||t||| | t|| ||t||| | t| |||t||| | g}|dd  D ]}	t|d t|	ksJ qt| |||t||| | t| |||t||| | t| |||t||||  g}|dd  D ] }	t|d t|	ksJ qt| |||t||| | t|| ||t||||  t| |||t||| | t|| ||t||||  g}|dd  D ] }	t|d t|	ks J q d S rô   rï   rõ   r>   r>   r?   Ú%test_equivalent_internal_lines_VT2_AT   s*    üüürü   c            
   	   C   sº  t ddd\} }t ddd\}}t ddtd\}}t ddtd	\}}t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| g}|d
d  D ]}	t|d t|	ksôJ qôt||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| g}|d
d  D ] }	t|d t|	ksÂJ qÂt||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| g}|d
d  D ] }	t|d t|	ksJ qd S rñ   rï   rò   r>   r>   r?   Útest_internal_external_VT2T2_ATÀ  s2    ((((ü((((ü((((ürý   c            
   	   C   s
  t d\} }t d\}}t dtd\}}t dtd\}}t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| t||||t||| | t|||| g}|dd  D ]}	t|d t|	ksèJ qèd S )Nr²   rµ   rœ   rC   rŸ   rM   r   rï   rò   r>   r>   r?   Útest_internal_external_pqrs_ATà  s    ((((ürþ   c                  C   s.   t d} ttt| d t| dks*J d S )NÚ0rN   z(- \left[b_{0},{b^\dagger_{0}}^{2}\right])r*   r1   r   r   r   )rE   r>   r>   r?   Útest_issue_19661ð  s    ÿr   c                  C   s^   t d} t ddtd\}}t ddtd\}}t| ||f||ft| ||f||f ksZJ d S )Nr«   )rG   rH   Tr   )rp   rq   r   )r+   r)   r   )r«   rG   rH   rp   rq   r>   r>   r?   Ú+test_canonical_ordering_AntiSymmetricTensorö  s    ÿ
ÿ
ÿr  N)rZsympy.physics.secondquantr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   Zsympy.concrete.summationsr#   Zsympy.core.functionr$   r%   Zsympy.core.numbersr&   r'   Zsympy.core.singletonr(   Zsympy.core.symbolr)   r*   r+   Z(sympy.functions.elementary.miscellaneousr,   Zsympy.printing.reprr-   Zsympy.simplify.simplifyr.   Zsympy.testing.pytestr/   r0   Zsympy.printing.latexr1   r@   rK   rV   rZ   r`   ra   ri   rk   rm   rn   rt   ru   rv   rz   r   r   r   r   r   r   r   r¡   r¢   r¥   rŠ   rª   r­   r°   r³   rŽ   r·   rŒ   rÄ   rÉ   rÊ   rÍ   rã   rä   rå   ræ   rç   ré   rì   rî   r®   rð   ró   rö   rú   rû   rü   rý   rþ   r   r  r>   r>   r>   r?   Ú<module>   s   
	
-	3*&5,2!1'8+$*  