
    sgB                     p   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 Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHe7d        ZId ZJd ZKd ZLd ZMd ZNd  ZOd! ZPd" ZQd# ZRd$ ZSd% ZTd& ZUd' ZVd( ZWd) ZXd* ZYd+ ZZd, Z[d- Z\d. Z]d/ Z^d0 Z_d1 Z`d2 Zad3 Zbd4 Zcd5 Zdd6 Zed7 Zfd8 Zgd9 Zhd: Zid; Zjd< Zkd= Zld> Zmd? Znd@ ZodA ZpdB ZqyC)D    )!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                  x   t        d      \  } }}}t        t        d      \  }}}}t        } || |      j	                   ||        ||      z         ||        ||       z  k(  sJ  || |      j	                   || |             |||        k(  sJ  || |      j	                   ||              ||       k(  sJ  ||        ||      z   ||      z   ||      z   ||       ||       z   ||      z   ||      z  z
   ||        ||      z   ||      z   ||      z  z
   ||       ||       z   ||      z   ||      z  z   }	 || |       |||      g}
t        |	|
       || |       |||      z   ||       z   ||      z   ||      z   ||      z  k(  sJ t         || |            dk(  sJ y )Np,q,r,sfghizP(pq))r,   mapr%   r   get_permutedr   r2   )pqrsfghiPexprpermss              W/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/tests/test_secondquant.pytest_PermutationOperatorrD      s   #JAq!QXv&JAq!QAQ7!QqT	*qteAaDj888Q7!Q(Qq!WH444Q7!%1---aD1IadN1Q4
A$qt)AaD.1

A$qt)AaD.1
 A$qt)AaD.1
D q!Wa1gE'e4	!Q!Q!QqT!!A$&qt+, - ,1a>W$$$    c            	         t        d      \  } }}}t        dt              \  }}}}t        t        d      \  }}	t        }
 || |||       ||| ||      z
  }t        | |
| |      g       |
| |       || |||      z  k(  sJ  |
| |      t         || |||            z  } || |||       ||| ||      z
  }t        | |
| |      g      }|t        |      k(  sJ  || |||       ||| ||      z
  }t        | |
| |      g      }|t        |      k(  sJ  || |||       |	|| ||      z
  }t        | |
| |      g      }||k(  sJ y )Na b c dp q r sclsfg)r,   r*   r6   r%   r   r   r!   )abcdr8   r9   r:   r;   r<   r=   r@   rA   expectedresults                 rC   $test_index_permutations_with_dummiesrR   +   s   #JAq!Q.JAq!QxDAqA Q1a=1Q1a=(D&qAwiaGAaAqM12 2 2 Aw)!Aq!Q-88HQ1a=1Q1a=(D(!Qy9F)&1111Q1a=1Q1a=(D(!Qy9F)&1111 Q1a=1Q1a=(D(!Qy9F6>>rE   c                     t        d      \  } }}}t        d      dk(  sJ t        d      dk(  sJ t        dt        z        dt        z  k(  sJ t        t        j                  t        z  dz        t        t        dd      z  dz  k(  sJ 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      z         t        d      t        d      z   k(  sJ t        ||z        t        |      t        |      z  k(  sJ t        t        |      t        |      z        t        |      t        |      z  k(  sJ t        t        |      d	z        t        t        |            d	z  k(  sJ t        d
      t        t        d
            k(  sJ t        t        d
            t        d
      k(  sJ y )Ni,j,n,m   g      ?   g      @r   
   rL   )r,   r   r'   r)   Halfr(   r   r   r   r   r+   )r?   jnms       rC   test_daggerr^   G   s   #JAq!Q!9>>#;#!A#;"Q$!&&(3,1Xb!_#4S#8888$s)aS	)))!A$<2a5   "Q%=AaD   !A$<2a5   "Q%=AaD   !A$1+"Q%"Q%-///!A#;&)F1I----!A$qt)1be+++!A$(vad|R////#;&----&+&+---rE   c                      t        d      \  } }t        |       }|j                  | k(  sJ |j                  sJ t        d      }|j                  dk(  sJ |j                  rJ y )Ni,jrU   )r,   r   stateis_symbolic)r?   r[   os      rC   test_operatorrd   Z   s^    5>DAqA77a<<===A77a<<}}}rE   c                     t        d      \  } }}}t        |       }t        |      dk(  sJ t        |t              sJ |j                  | |      }|j                  t              |hk(  sJ t        d      }|j                  t        |g            t        |dz         t        |dz   g      z  k(  sJ t        |      }|j                  t        |g            |t        |g      z  k(  sJ y )NrT   z{b^\dagger_{i}}r   rU   )r,   r   r2   
isinstancer   subsatomsr+   apply_operatorr   r-   r?   r[   r\   r]   rc   s        rC   test_createrk   d   s    #JAq!Q
1A8))))a%%%	q!A776?qc!!!
1AD!I&$q1u+dAE7m*CCCC
1AD!I&!D!I+555rE   c                     t        d      \  } }}}t        |       }t        |      dk(  sJ t        |t              sJ |j                  | |      }|j                  t              |hk(  sJ t        d      }|j                  t        |g            t        |      t        |dz
  g      z  k(  sJ t        |      }|j                  t        |g            |t        |g      z  k(  sJ y )NrT   zb_{i}r   rU   )r,   r   r2   rf   r   rg   rh   r+   ri   r   r-   rj   s        rC   test_annihilaterm   q   s    #JAq!Q	!A8wa)))	q!A776?qc!!!	!AD!I&$q'$Aw-*????	!AD!I&!D!I+555rE   c                     t        d      \  } }}}t        g d      }t        |      dk(  sJ |j                  d   t	        t        d            k(  sJ |j                  d      t        g d      k(  sJ |j                  d      t        g d      k(  sJ t        d      D ]'  } |j                  |       j                  |       |k(  r'J  |j                  d      dk(  sJ t        d      D ]  } ||    | k(  rJ  t        ||g      }|j                  d      t        |dz
  |g      k(  sJ |j                  d      t        |dz   |g      k(  sJ y )	NrT   )r   rU   rV            r   )rU   rU   rV   ro   rp   rp   )r   rU   rV   ro   ro   rU   )r,   r   lenargstuplerangeupdown)r?   r[   r\   r]   r;   s        rC   test_basic_staterx   ~   s>   #JAq!Q?#Aq6Q;;66!9eAh'''447j111166!9
?33331X $ttAw||A!###$66!9>>1X tqyyAq6A66!9
AE1:....447j!a%,,,,rE   c                  $   t        d      } t        d      t        | g      z  }t        |      t	        |       t        | dz
  g      z  k(  sJ t        d      t        | g      z  }t        |      t	        | dz         t        | dz   g      z  k(  sJ y )Nr\   r   rU   )r,   r   r   r   r-   r   )r\   es     rC   test_basic_applyr{      s    A	!T1#YA1aq1ug!6666
1dA3iA1a!eT1q5']!::::rE   c                  J   t        d      \  } }t        d      t        d      z  t        d      z  t        d      z  }t        |t	        | |g      z        }t        |       t        |dz         z  d| z   z  t	        d| z   d|z   g      z  }t        |      t        |      k(  sJ y )Nn,mr   rU   rX   )r,   r   r   r   r   r-   r&   )r\   r]   rc   rz   answers        rC   test_complex_applyr      s    5>DAq
1ad
2a51A$1v,'A!WT!a%[ "q&)$QA*??F!9v&&&rE   c                      t        d      } t        d      t        d      z  }t        |t	        | g      z        }|| t	        | g      z  k(  sJ y )Nr\   r   )r,   r   r   r   r   )r\   rc   rz   s      rC   test_number_operatorr      sH    A
1ad
A$s)$A$s)rE   c                  2   t        d      \  } }}}t        dg      }t        dg      }t        |t	        |            dk(  sJ t        ||      dk(  sJ t        | |g      }t        ||g      }t        ||      }|t        | |      t        ||      z  k(  sJ y )Ni,j,k,lr   rU   )r,   r   r   r   r   r   )r?   r[   kls1s2r:   s          rC   test_inner_productr      s    #JAq!Q	qcB	qcBF2J'1,,,B1$$$	q!fB	q!fBRAq!$^Aq%99999rE   c                      t        d      \  } }t        | g      }t        |g      }t        d      }t	        ||z  |z        }|t        |      t        | |dz
        z  k(  sJ y )Nr}   r   rU   )r,   r   r   r   r   r-   r   )r\   r]   r   r   rc   rz   s         rC   test_symbolic_matrix_elementsr      sb    5>DAq	qcB	qcB	!A1R AQq!a%00000rE   c                  "   t        d      } t        d      }t        ||       }t        d      D ]  }|||dz   f   t	        |dz         k(  rJ  t        d      }t        ||       }t        d      D ]  }||dz   |f   t	        |dz         k(  rJ  y )Nrq   r   rp   rU   )r   r   r
   ru   r-   r   )rM   rc   r]   r?   s       rC   test_matrix_elementsr      s    A	!A1aA1X *AE{d1q5k)))*
1A1aA1X *Q{d1q5k)))*rE   c                  <   t        dd      } | j                  d      }|t        d      k(  sJ | j                  |      dk(  sJ | j                  d      | d   k(  sJ t	        |       dk(  sJ t        |       dk(  sJ t        |       dk(  sJ t        |       dk(  sJ y )NrV   rU   )rU   rU   ro   z9[FockState((2, 0)), FockState((1, 1)), FockState((0, 2))])r	   ra   r"   indexrr   strreprr.   )rM   ra   s     rC   test_fixed_bosonic_basisr      s    !QAGGAJE%f----775>Q771:1q6Q;;q6PPPP7QQQQ8RRRRrE   c                  @   t        d      \  } }t        |       t        |       z  | t        j                  z   z  }t        || ddf      }|j                  d      }t        dd      }t        ||      }g d}t        t        |            D ]  }||   |||f   k(  rJ  y )	Nr}   r   rq   F)deeprV      )rU   rV   ro   ro   rp   rq   rp   rq   r      rq   r   r      	   r   r   r   r   rY      )r,   r   r   r)   rZ   r$   doitr	   r
   ru   rr   )r\   r]   h_nHrc   rM   diagr?   s           rC   test_shor      s    5>DAq
Q%!*a!&&j
!CC!QA	EA!QA1aA MD3t9 "Aw!AqD'!!!"rE   c            	         t        dd      \  } }t        t        d      t        d            }|dk(  sJ t        t        d      t        d            }|dk(  sJ t        t        |       t        d            }|t	        | d      k(  sJ t        t        d      t        d            }|dk(  sJ t        t        d      t        d            }t        t        |t        | g      z              }|t        | g      k(  sJ t        t        d      t        d            }t        t        |t        | |g      z              }|dk(  sJ t        t        |      t        |            }|ddt        t        |      t        |      z        z  z
  k(  sJ t        t        |      t        |            }|j                         ddt        t        |      t        |      z        z  z   k(  sJ t        }t        dd	
      \  }}} | |||      |      dk7  sJ  | |||      |      dk7  sJ  || |||            dk7  sJ t        dd      \  }}	}
}t        dd      \  }}}}t        d      \  }}}}t        } |t        |      t        |            dt        t        |      t        |      z        z  k(  sJ  |t        |	      t        t        |      t        |      z              j                  d       ||	|       t        |      z  k(  sJ  |t        |      t        |      z  t        |      t        |	      z        j                  d      dk(  sJ t        t        |      t        |            }t        j                  ||      dk(  sJ t        t        |      t        |      z  t        |      t        |	      z        }t        |      dk(  sJ t        |      dk(  sJ t!        |      dk(  sJ y )Nr}   Tabove_fermir   rU   rX   rV   zX,Y,ZF)commutativer   below_fermia,b,c,dr4   rW   )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   evalr2   r   r   )r\   r]   rN   rz   CXYZr?   r[   r   r   rL   rM   rO   r8   r9   r:   r;   Dc1s                        rC   test_commutationr      sp   5d+DAq1Q4AA6M62a5!A$A7N71Q4AAq!$$$$1Q41A6M61Q4AA49-.AaS	>>1Q41A4A<01A6M61Q4AAQr"Q%!*~%%%%%2a5!A$A88:a2a51:.....Ag51GAq!Qq!Wa=AQq!Wa=AQ!Q=A5JAq!Q5JAq!Q#JAq!QARUAaD>R1Q41:....RUBr!uQqTzN#((t(41aAFFFRU1Q4ZAqt$)))5:::	AaD"Q%	 B??2r"a'''2a51:beAaDj)A8RRRR7ooooq6ddddrE   c                  l   t        d      \  } }}}t        |       }t        |t              sJ |j	                  | |      }|j                  t              |hk(  sJ t        d      }|j                  t        |g            t        d|g      k(  sJ |j                  t        |g            t        |dg       k(  sJ t        |      }|j                  t        g             t        |g      k(  sJ t        g d      }|t        g d      k(  sJ t        dd      \  } }}}t        dd	      \  }}	}
}t        d
      \  }}}}t        |       j                  t        | ||gd            t        ||gd      k(  sJ t        |      j                  t        | |	|gd            t        || |	|gd      k(  sJ t        t        |            j                  |      |t        |      z  k(  sJ t        t        |            dk(  sJ t        t        |            dk(  sJ t        t        |            dk(  sJ y )NrT   rU   rp   )fermi_levelr   Tr   r   r   r4   zCreateFermion(p)zCreateFermion(Symbol('p'))z{a^\dagger_{p}})r,   r   rf   r   rg   rh   r+   ri   r   r   r   r   r   r.   r2   )r?   r[   r\   r]   rc   vacuumr   r   rL   rM   rN   rO   r8   r9   r:   r;   s                   rC   test_create_fr     s   #JAq!Q
1Aa'''	q!A776?qc!!!
1AD!I&$1v,666D!I&4A<-777
1ADH%qc222"!$FT"!,,,,5JAq!Q5JAq!Q#JAq!Qa5aAY 23tQFAFFFa5aAY 23tQ1aL!7LLLL!A$<&&q)Q{1~-====1;,,,,A<7777A<----rE   c                     t        d      \  } }}}t        |       }t        |t              sJ |j	                  | |      }|j                  t              |hk(  sJ t        d      }|j                  t        d|g            t        |g      k(  sJ |j                  t        |dg            t        |g       k(  sJ t        |      }|j                  t        |g            t        g       k(  sJ t        dd      \  } }}}t        dd      \  }}}	}
t        d      \  }}}}t        |       j                  t        | ||gd	            d
k(  sJ t        |      j                  t        | ||gd	            d
k(  sJ t        |      j                  t        | ||gd            d
k(  sJ t        |      j                  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 y )NrT   rU   r   Tr   r   r   r4   rp   r   ro   zf(p)zAnnihilateFermion(p)zAnnihilateFermion(Symbol('p'))za_{p})r,   r   rf   r   rg   rh   r+   ri   r   r   r   r.   r2   )r?   r[   r\   r]   rc   r   r   rL   rM   rN   rO   r8   r9   r:   r;   s                  rC   test_annihilate_fr   ,  s%   #JAq!Q	!Aa*+++	q!A776?qc!!!	!AD!QL)T1#Y666D!QL)dA3iZ777	!AD!I&$r(2225JAq!Q5JAq!Q#JAq!QQ4tQ1Iq12a777Q4tQ1Iq12a777Q4tQ1Iq12a777Q4tQ1Iq12dAq!Q<6KKKKqt9!:////1;::::1;'!!!rE   c                     t        d      \  } }}}t        |       }t        |t              sJ |j	                  | |      }|j                  t              |hk(  sJ t        d      }|j                  t        |g            t        |dz         t        |dz   g      z  k(  sJ t        |      }|j                  t        |g            |t        |g      z  k(  sJ y )NrT   r   rU   )
r,   r   rf   r   rg   rh   r+   ri   r   r-   rj   s        rC   test_create_br   E  s    #JAq!Q
1Aa%%%	q!A776?qc!!!
1AD!I&$q1u+dAE7m*CCCC
1AD!I&!D!I+555rE   c                      t        d      \  } }}}t        |       }t        |t              sJ |j	                  | |      }|j                  t              |hk(  sJ t        d      }y )NrT   r   )r,   r   rf   r   rg   rh   r+   rj   s        rC   test_annihilate_br   Q  s]    #JAq!Q	!Aa)))	q!A776?qc!!!	!ArE   c            	         t        dd      \  } }}}t        |       t        |      z  }t        |      t	        t        |       t        |      z        t        | |      z   k(  sJ t        |       t        |      z  }t        |      t	        t        |       t        |      z        k(  sJ t        |       t        |      z  t        |      z  t        |      z  }t        |      }t	        t        | |      t        ||      z  t        | |      t        |      z  t        |      z  z   t        ||      t        |       z  t        |      z  z   t        | |      t        |      z  t        |      z  z
  t        |       t        |      z  t        |      z  t        |      z  z
        }||k(  sJ | |z  |z  j                         t        | |z  |z        k(  sJ || z  |z  dz  j                         t        || z  |z  dz        k(  sJ t        ddt              \  }}}	}
t        ddt              \  }}}}t        d	t        
      \  } }}}t        t        |      t	        t        |      t        |      z        z  t        |      z        t	        t        |      t        |      z  t        |      z  t        |      z        t        ||      t	        t        |      t        |      z        z  z   k(  sJ t        t        |      t	        t        |      t        |      z  t        |	      z        z  t        |      z        t	        t        |      t        |      z  t        |      z  t        |	      z  t        |      z        t        ||      t	        t        |      t        |      z  t        |	      z        z  z
  k(  sJ t        t        |      t	        t        |      t        |	      z        z  t        |
      z        }|t        ||	       t	        t        |      t        |
      z        z  t        ||
      t	        t        |      t        |	      z        z  z
  t        ||	      t        ||
      z  z
  t        ||
      t	        t        |      t        |	      z        z  z   t	        t        |      t        |      z  t        |	      z  t        |
      z        z   k(  sJ t        t        |      t	        t        |      t        |      z        z  t        |      z        }|t        ||       t	        t        |      t        |      z        z  t        ||      t	        t        |      t        |      z        z  z
  t        ||      t        ||      z  z
  t        ||      t	        t        |      t        |      z        z  z   t	        t        |      t        |      z  t        |      z  t        |      z        z   k(  sJ y )Nr4   Tr   rV   i j k lr   rJ   rG   r   rJ   rH   rI   )
r,   r   r   r   r   r   r   r   r&   r*   )r8   r9   r:   r;   r   nstrfasitr?   r[   r   r   rL   rM   rN   rO   rA   s                   rC   
test_wicksr   Z  s.   5JAq!Q A$r!u*C:AaDAJ.A*>>>>>
Q%!*C:BqE!A$J'''
A$r!u*QqT/"Q%
C:Dq!^Aq11
A
03
3M!4D
D	E
A
03
3M!4D
D	E A
03
3M!4D
D	E A
03
3M!4D
D]STEU
U		VWE 5==aCH%!C.000F1HQJ E#a%'!)$4444 %@JAq!Q%@JAq!Q.JAq!Q!A$r!A$qt)}$RU*+qtAaDy1~be#$1a AaD1I.// 0 / !A$r!A$qt)AaD.))"Q%/0qtAaDy1~ad"2a5()1a AaD1IadN!3344 5 4 Ar"Q%!*~%ad*+D1a  BqE!A$J/1a BqE!A$J/01a 1!556 1a BqE!A$J/0 r!uRU{1Q4!$%	&& ' & 1b1ben$RU*+D1a  AaDAJ/1a AaDAJ/01a 1!556 1a AaDAJ/0 qtAaDyAr!u$%	&& ' &rE   c            	      &
   t        dd      \  } }}}t        dd      \  }}}}t        dt              \  }}	t        t              t	              z  t        |      t	        |      z  z         t        t              t	              z        t        t        |      t	        |      z        z   k(  sJ t        t        |       t        t	        |      t        |      z        z        t        t        |       t	        |      z  t        |      z        k(  sJ t        d      dk(  sJ t        |       | k(  sJ t        t        |      t        |      z  t	        |      t	        |      z   z        t        t        |      t        |      z  t	        |      z        t        t        |      t        |      z  t	        |      z        z   k(  sJ t        t        |      t	        |      z        j                         t        |      t	        |      z  k(  sJ t        t	        |      t        |       z        j                         t	        |      t        |       z  k(  sJ t        t              t	              z        j                  t              t        |      t        |       z         t        t        |      t	              z        t        t        |       t	              z        z   k(  sJ t        t              t	              z        j                  t	              t	        |      t	        |       z         t        t              t	        |      z        t        t              t	        |       z        z   k(  sJ t        t              t	              z        j                         }
t        |
      t        |
      k(  sJ t        t        |      t	        |      z        t        t	        |      t        |      z         k(  sJ t        t        |      t	        |       z  t	        |      z  t        |      z        }t        |j                               }|d	dgk(  sJ t        |j                               }|d
dgk(  sJ t        t        |      t        |       z        }|j                  dk(  sJ |j                  dk(  sJ t        |      dk(  sJ t        |      dk(  sJ t        |      dk(  sJ t!        t"        fd       y )Nr   Tr   rG   r   rH   rI   rU   r   ro   rV   rX   z#:CreateFermion(a)*CreateFermion(i):z%NO(CreateFermion(a)*CreateFermion(i))z.\left\{{a^\dagger_{a}} {a^\dagger_{i}}\right\}c                  D    t        t               t              z        S N)r   r   r   )r8   r9   s   rC   <lambda>ztest_NO.<locals>.<lambda>  s    BqE!A$J rE   )r,   r*   r   r   r   _remove_bracketsrg   r   listiter_q_creatorsiter_q_annihilatorshas_q_creatorshas_q_annihilatorsr   r   r2   r1   NotImplementedError)r?   r[   r   r   rL   rM   rN   rO   r:   r;   rA   nol1l2r8   r9   s                 @@rC   test_NOr     s   5JAq!Q5JAq!Q.JAq!Qr!uQqTzBqE!A$J&'	"Q%!*~2a51:&' ( 'r!uR!RU
^#$	"Q%!*RU
  a5A::a5A::r!uRU{AaD1Q4K()r!uRU{1Q4 r!uRU{1Q4 !! " ! beAaDj>**,1ad
:::ad2a5j>**,!RU
:::r!uQqTzN1r!ur!u}5r!uQqTzNR1ad
^+, - ,r!uQqTzN!adQqTk2r!uQqTzNR1ad
^+, - , beAaDj>**,D;"T("""beAaDj>r!A$r!u*~----	BqE!A$JqtOBqE!	"B	b  "	#B!Q<<	b$$&	'B!Q<<	BqE"Q%KB!!!  B&&&r7;;;;8>>>>9IIII
 78rE   c                  @   t        dd      \  } }t        dd      \  }}t        d      \  }}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(  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(  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(  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(  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 y )	Nr`   Tr   za,br   zp,qr   rU   )r,   r   r   r   )r?   r[   rL   rM   r8   r9   s         rC   test_sortingr     s   5d+DAq5d+DAq5>DAq (A!6BqE1Q4=!:LLLL'1r!u6BqE1Q4=!:LLLL (1r!u6AaD"Q%=!:LLLL'A!6AaD"Q%=!:LLLL'A17RUBqENA;NNNN'A17RUBqENA;NNNN'1qt51Q41,9JJJJ'1qt51Q41,9JJJJ'A!6AaD"Q%=!:LLLL'1r!u6AaD"Q%=!:LLLL (1r!u6BqE1Q4=!:LLLL'A!6BqE1Q4=!:LLLL'A17RUBqENA;NNNN'A17RUBqENA;NNNN'1qt51Q41,9JJJJ'1qt51Q41,9JJJJ'A!6BqE1Q4=!:LLLL'1r!u6BqE1Q4=!:LLLL (1r!u6AaD"Q%=!:LLLL'A!6AaD"Q%=!:LLLL'A17RUBqENA;NNNN'A17RUBqENA;NNNN'1qt51Q41,9JJJJ'1qt51Q41,9JJJJrE   c                     t        dd      \  } }}}t        dd      \  }}t        d      \  }}}}	t        t        |       t        |            t	        | |      k(  sJ t        t              t                    t	              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                    dk(  sJ t        t        |       t        |            t	        | |      k(  sJ t        t        t        |      t        |                  }
|
j                  sJ t        t        t        |      t        |                  }
|
j                  sJ t        t        fd       y )	Nr   Tr   r   r   r4   r   c                  @    t        t               t                    S r   )r   r   r   )rL   rM   s   rC   r   z"test_contraction.<locals>.<lambda>  s    [1r!u5M rE   )
r,   r   r   r   r   r   is_only_below_fermiis_only_above_fermir1   r#   )r?   r[   r   r   rN   rO   r8   r9   r:   r;   restrrL   rM   s              @@rC   test_contractionr     sy   5JAq!Q5JAq!Q#JAq!Qr!uad#~a';;;;qtRU#~a';;;;qtRU#q(((r!uad#q(((qtRU#q(((r!uad#q(((r!uad#~a';;;;K1qt45E$$$$K!be45E$$$$
+-MNrE   c                     t        d      \  } }}t        | |      t        ||      z  }t        |      t        | |      k(  sJ t        | d      t        ||      z  }t        |      t        | d      t        ||      z  k(  sJ t        d|      t        ||      z  }t        |      t        d|      k(  sJ t        |d      t        ||      z  }t        |      t        d|      k(  sJ t        | d      t        | |      z  t        |d      z  }t        |      dk(  sJ t        d|       t        d|      z  t        d|      z  t        d|      z  }t        |      dk(  sJ y )Nzi,j,kr   rU   rV   )r,   r   r   )r?   r[   r   r:   s       rC   test_evaluate_deltasr     sf   gGAq!q!~a33A11!5555q!~a33A11!5q!8L!LLLLq!~a33A11!5555q!~a33A11!5555q!~a33nQ6JJA1"""	1	q! 4	4!Q
 "0A"6
7A1"""rE   c                     t        ddt              \  } }}}t        ddt              \  }}}}t        d      \  }}	}
}t        } |d||f| |f       |d||f| |f       k(  sJ  |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(  sJ  |d|||f| ||f       |d|||f| ||f      k(  sJ  |d||f| |f      }|j                  |      sJ |j                  |      sJ |j                  |       sJ |j                  |      sJ |j	                  ||       |d||f| |f      k(  sJ d	|z  j	                  | |      d	 |d||f||f      z  k(  sJ |j
                  t        d      k(  sJ t        |      d
k(  sJ t        |      dk(  sJ  |d||f| |f      j	                  ||       |d||f| |f      k(  sJ  |d|| f||f      j	                  ||       |d|| f||f      k(  sJ y )Nr   Tr   rG   r   rH   tr   rV   z{t^{ab}_{ij}}zt((_a, _b),(_i, _j)))	r,   r*   r   hasrg   symbolr+   r2   r   )r?   r[   r   r   rL   rM   rN   rO   r8   r9   r:   r;   ATtabijs                 rC   test_Tensorsr     s   %@JAq!Q%@JAq!Q#JAq!Q	BcAq6Aq6"r#1v1v'>&>>>>cAq6Aq6"bq!fq!f&====cAq6Aq6"r#1v1v'>&>>>>cAq6Aq6"a'''cAq6Aq6"a'''cAq!9q!f%"S1a)aV*D)DDDDcAq!9q!Qi(BsQ1I1ay,IIIIsQFQF#E99Q<<99Q<<99Q<<99Q<<::ar#1v1v6666eG>>!Q1RaVaV%<#<<<<<<6#;&&&<?***u:////cAq6Aq6"''1-C!Q!Q1HHHHcAq6Aq6"''1-C!Q!Q1HHHHrE   c                     t        dd      \  } }}}t        dd      \  }}}}t        dt              \  }}	}
}t        d|f|	f      t        t	        |      t        |	      z        z  }t        d	||	f|
|f      t        t	        |      t	        |	      z  t        |      z  t        |
      z        z  d
z  }t        t        t	        |       t        |      z        |z  dd      }|t        d|f| f      k(  sJ t        t        t	        |       t	        |      z  t        |      z  t        |      z        |z  dd      }|t        d	||f| |f      k(  sJ y )Nr   Tr   rG   r   rH   rI   r<   vrp   )keep_only_fully_contractedsimplify_kronecker_deltas)r,   r*   r   r   r   r   r   )r?   r[   r   r   rL   rM   rN   rO   r8   r9   r:   r;   FockVFaiVabijs                   rC   test_fully_contractedr   #  sT   5JAq!Q5JAq!Q.JAq!QaTA40r!uQqTzND	S1a&1a&	1	BqE"Q%K!QqT!	"
#$%	&A 2a51:t#'+&*,C %cA4!6666"RU2a5[1%ad*+A-'+&*,E 'aVaV<<<<rE   c                      t        d      \  } }t        t        | |      dz         t        | |      dz   k(  sJ t        t        | |      dz         t        | |      dz   k(  sJ y )Nr`   rV   rU   )r,   r!   attr?   r[   s     rC   'test_substitute_dummies_without_dummiesr   7  s]    5>DAqc!Qi!m,Aq	A===c!Qi!m,Aq	A===rE   c            
          t        dt              \  } }t        t        | |      t	        t        |       t        |      z        z  t        ||       t	        t        |      t        |       z        z  z
        dk(  sJ y Ni jrI   r   )r,   r*   r!   r   r   r   r   r   s     rC   #test_substitute_dummies_NO_operatorr   =  sl    5e$DAqc!Qi2a51:6a)Br!uQqTzN*+ ,/01 1 1rE   c                      t        dt              \  } }t        t        | |      t	        |       z  t        |      z  t        ||       t	        |      z  t        |       z  z
        dk(  sJ y r   )r,   r*   r!   r   r   r   r   s     rC   #test_substitute_dummies_SQ_operatorr   C  sd    5e$DAqc!Qi1oad2a)BqE/!A$&' (+,- - -rE   c                      t        ddt              \  } }t        ddt              \  }}t        dt              \  }}t        d      }t         || ||       ||||      z
  d	      d
k(  sJ y )Nr   Tr   a br   p qrI   r<   )new_indicesr   )r,   r*   r%   r!   )r?   r[   rL   rM   r8   r9   r<   s          rC   #test_substitute_dummies_new_indicesr   I  si    5d6DAq5d6DAq5e$DAqAa1aj1Q1:54HAMMMrE   c            
          t        ddt              \  } }}}t        d      }ddlm}  || |||gd      D ]!  }t         ||  || |||      z
        dk(  r!J  y )Nr   Tr   r<   r   
variationsrp   )r,   r*   r%   sympy.utilities.iterablesr   r!   )r?   r[   r   r   r<   r   permuts          rC   *test_substitute_dummies_substitution_orderr   Q  sj    %@JAq!QA4aAq\1- C!!V*qAq!}"<=BBBCrE   c            	         t        dd      } t        dd      }t        ddt              \  }}t        ddt        	      \  }}t        d
      }t        d      }t        } |||||       |||       z   |||      z   |||      z   |||||       |||       z   |||      z   |||      z   |||||       |||       z   |||      z   |||      z   |||||       |||       z   |||      z   |||      z  g}	|	dd  D ]4  }
 ||	d          ||
      k7  sJ t	        |	d         t	        |
      k(  r4J  y )Nr?   Tr   rL   r   k lr   c dr   r   r   rU   r   r,   r*   r%   r    r!   )iiaar   r   rN   rO   r   r   dumsexprsr   s              rC   *test_dummy_order_inner_outer_lines_VT1T1T1r  Y  sf   	$	'B	$	'B5d6DAq5d6DAqAAD 	
!Q1a2hqAw&qQx/	!Q1a2hqAw&qQx/	!Q1a2hqAw&qQx/	!Q1a2hqAw&qQx/E ) JE!H~f---!%(+/A&/IIIIJrE   c            	         t        dd      \  } }t        dd      \  }}t        ddt              \  }}t        ddt        	      \  }}t        d
      }t        d      }	t        }
 |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||      z   |	||       z   |	||      z   |	||      z   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||      z   |	||       z   |	||      z   |	||      z  g}|dd  D ]4  } |
|d          |
|      k7  sJ t	        |d         t	        |      k7  r4J   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||       z   |	||      z   |	||      z   |	||      z  g}|dd  D ]4  } |
|d          |
|      k(  sJ t	        |d         t	        |      k7  r4J   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||      z   |	||       z   |	||      z   |	||      z   |||||       |	||       z   |	||      z   |	||      z   |	||      z   |||||       |	||      z   |	||       z   |	||      z   |	||      z  g}|dd  D ]4  } |
|d          |
|      k7  sJ t	        |d         t	        |      k(  r4J  y Nr   Tr   r   r   r   r   r   r   r   r   rU   r   r   r   jjr  bbr   r   rN   rO   r   r   r  r  r   s                rC   ,test_dummy_order_inner_outer_lines_VT1T1T1T1r
  r  s   U-FBU-FB5d6DAq5d6DAqAAD 	
!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9E ) JE!H~f---!%(+/A&/IIIIJ 	
!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9E ) JE!H~f---!%(+/A&/IIIIJ 	
!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9	!Q1a2hqBx'"a02q9E ) JE!H~f---!%(+/A&/IIIIJrE   c                  V   t        d      \  } }}t        t        |       t        |      z  t        |      z        j                  d      t        t        |       t        |      z        k(  sJ t        t        |       t        |      z  t        |      z        j                  d      t        t        |      t        |      z        k(  sJ t        t        |       t        |      z  t        |      z        j                  d      t        t        |       t        |      z        k(  sJ y )Nzp,q,rrU   r   rV   )r,   r   r   	get_subNO)r8   r9   r:   s      rC   test_get_subNOr    s    gGAq!ad1Q4i!n''*b1adm;;;ad1Q4i!n''*b1adm;;;ad1Q4i!n''*b1adm;;;rE   c            	         t        ddt              \  } }}}t        ddt              \  }}}}t        d      }t        d      }	t        }
 || |||       |	||       z   |	||      z   ||| ||       |	||       z   |	||      z   || |||       |	||       z   |	||      z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k7  r4J   || |||       |	||       z   |	||      z   ||| ||       |	||       z   |	||      z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k(  r4J   || |||       |	||       z   |	||      z   || |||       |	||       z   |	||      z  g}|dd  D ]4  } |
|d	          |
|      k(  sJ t	        |d	         t	        |      k7  r4J   || |||       |	||       z   |	||      z   ||| ||       |	||      z   |	||       z   || |||       |	||       z   |	||      z   ||| ||       |	||      z   |	||       z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k(  r4J  y 
Nr   Tr   rG   r   r   r   rU   r   r   r?   r[   r   r   rL   rM   rN   rO   r   r   r  r  r   s                rC   $test_equivalent_internal_lines_VT1T1r    s*   %@JAq!Q%@JAq!QAAD 	
!Q1a1ga1g%	!Q1a1ga1g%	!Q1a1ga1g%E
 ) JE!H~f---!%(+/A&/IIIIJ
 	
!Q1a1ga1g%	!Q1a1ga1g%E ) JE!H~f---!%(+/A&/IIIIJ
 	
!Q1a1ga1g%	!Q1a1ga1g%E ) JE!H~f---!%(+/A&/IIIIJ
 	
!Q1a1ga1g%	!Q1a1ga1g%	!Q1a1ga1g%	!Q1a1ga1g%	E ) JE!H~f---!%(+/A&/IIIIJrE   c                  h   t        ddt              \  } }}}}}t        ddt              \  }}}}	}
}t        ddt              \  }}}}t        ddt              \  }}}}dd	lm} t	        d
      }t	        d      }t
        } |||||       |||| |      z   || |||      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ   |||||       |||||       z   ||| ||      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ   |||||       |||| |      z   ||| ||      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ   |||||       |||||       z   || |||      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ  y Ni j k l m nTr   a b c d e fr   p1 p2 p3 p4h1 h2 h3 h4r   r   r   r   rp   
r,   r*   r   r   r%   r    rg   zipnextr!   r?   r[   r   r   r]   r\   rL   rM   rN   rO   rz   r<   p1p2p3p4h1h2h3h4r   r   r   r  template
permutatorbaser   subslistrA   s                                 rC   (test_equivalent_internal_lines_VT2conjT2r(    s   }$EJAq!Q1}$EJAq!Q1]%HNBB]%HNBB4AAD RR 2r1a01aR@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	D
 RR 2r1a01aR@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	D RR 2r1a01aR@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	D
 RR 2r1a01aR@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	DrE   c                     t        ddt              \  } }}}}}t        ddt              \  }}}}	}
}t        ddt              \  }}}}t        ddt              \  }}}}dd	lm} t	        d
      }t	        d      }t
        } |||||       |||| |      z   |||| |      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ   |||||       |||||       z   |||| |      z  } |||||	gd      }|j                  t        ||||gt        |                  }|D ]O  }t        ||||g|      }|j                  |      } ||       ||      k7  sJ t        |      t        |      k(  rOJ  y r  r  r  s                                 rC   8test_equivalent_internal_lines_VT2conjT2_ambiguous_orderr*    s    }$EJAq!Q1}$EJAq!Q1]%HNBB]%HNBB4AAD RR 2r1a02r1a@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	D
 RR 2r1a02r1a@HQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&DzT$Z'''!$'+=d+CCCC	DrE   c            
         t        ddt              \  } }}}t        ddt              \  }}}}t        d      }t        d      }	t        }
 || |||       |	||| |      z   ||| ||       |	||| |      z   || |||       |	||| |      z   ||| ||       |	||| |      z  g}|dd  D ]4  } |
|d	          |
|      k(  sJ t	        |d	         t	        |      k7  r4J   || |||       |	||| |      z   || |||       |	||| |      z   || |||       |	||||       z   || |||       |	||||       z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k7  r4J   || |||       |	||| |      z   ||| ||       |	||||       z   || |||       |	||| |      z   ||| ||       |	||||       z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k(  r4J  y r  r   r  s                rC   "test_equivalent_internal_lines_VT2r,  -  s   %@JAq!Q%@JAq!QAAD 	
!Q1a1am#	!Q1a1am#	!Q1a1am#	!Q1a1am#E  ) JE!H~f---!%(+/A&/IIIIJ 	
!Q1a1am#	!Q1a1am#	!Q1a1am#	!Q1a1am#E ) JE!H~f---!%(+/A&/IIIIJ
 	
!Q1a1am#	!Q1a1am#	!Q1a1am#	!Q1a1am#	E ) JE!H~f---!%(+/A&/IIIIJrE   c            
      t   t        dd      \  } }t        dd      \  }}t        ddt              \  }}t        ddt        	      \  }}t        d
      }t        d      }	t        }
 |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z  g}|dd  D ]4  } |
|d          |
|      k7  sJ t	        |d         t	        |      k(  r4J   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z  g}|dd  D ]4  } |
|d          |
|      k7  sJ t	        |d         t	        |      k(  r4J   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z  g}|dd  D ]4  } |
|d          |
|      k7  sJ t	        |d         t	        |      k(  r4J  y r  r   r  s                rC   test_internal_external_VT2T2r.  ^  sl   U-FBU-FB5d6DAq5d6DAqAAD 	
!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	E ) JE!H~f---!%(+/A&/IIIIJ 	
!Q1aAr1o%a2r1o5	!Q1aAr1o%a2r1o5	!Q1aAr1o%a2r1o5	!Q1aAr1o%a2r1o5	E ) JE!H~f---!%(+/A&/IIIIJ 	
!Q1a2r1o%aAr1o5	!Q1a2r1o%aAr1o5	!Q1a2r1o%aAr1o5	!Q1a2r1o%aAr1o5	E ) JE!H~f---!%(+/A&/IIIIJrE   c            
      P   t        d      \  } }t        d      \  }}t        dt              \  }}t        dt              \  }}t        d      }t        d      }	t        }
 |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z   |||||       |	||| |      z   |	||||      z  g}|dd  D ]4  } |
|d	          |
|      k7  sJ t	        |d	         t	        |      k(  r4J  y )
Nr   r   r   rI   r   r   r   rU   r   r   r  s                rC   test_internal_external_pqrsr0    sX   U^FBU^FB5e$DAq5e$DAqAAD 	
!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	!Q1aAr1o%aAr1o5	E ) JE!H~f---!%(+/A&/IIIIJrE   c                  
   t        dd      \  } }t        ddt              \  }}}t        ddt              \  }}t        dt        	      \  }}t        d
      }	t        d      }
t        d      }t        } | |	||       |
||      z        ||gk(  sJ  | |	||       |
||      z        ||gk(  sJ  | |	||       |
||      z        ||gk(  sJ  | |	||       |
||      z        ||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	||       |
||      z   |||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|| |       |	|||      z   |	|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |	|||       |
|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ  | |
|||       |	|||      z        |||gk(  sJ y )Nr   Tr   zk l mr   r   r   r   rI   Ar   r   )r,   r*   r%   r    )r  r	  r   r   r]   rN   rO   r8   r9   r2  r   r   r  s                rC   test_dummy_order_well_definedr3    s   U-FBg4U;GAq!5d6DAq5e$DAqAAAD !Q!Q QF***!Q!Q QF***!Q!Q QF***!Q!Q QF*** !Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555!Q!Q!Q'(Q1I555 !RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA!RAaQK'"a34Aq	AAA !Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333!Q
1Q1:%&1a)333rE   c            	      x   t        dd      \  } }t        ddt              \  }}}}}t        ddt              \  }}}	}
}t        dt        	      \  }}t        d
dt              \  }}}}t        ddt              \  }}}}t        ddt              \  }}}}t        ddt              \  }}}}t        d      }t        d      }ddlm}   |||       |||      z   |||      z   |||      z   |||      z  }! | |||	|
|gd      }"|!j                  t        |||||gt        |"                  }#|"D ]=  }$t        |||||g|$      }%|!j                  |%      }&t        |&      t        |#      k(  r=J   |||       |||      z   |||      z   |||      z   |||      z  }! | |||	|
|gd      }"|!j                  t        |||||gt        |"                  }#|"D ]=  }$t        |||||g|$      }%|!j                  |%      }&t        |&      t        |#      k(  r=J   |||||       |||||      z   |||      z  }! | |||	|
|gd      }"|!j                  t        |||||gt        |"                  }#|"D ]=  }$t        |||||g|$      }%|!j                  |%      }&t        |&      t        |#      k(  r=J  y )Nr   Tr   z	i j k l mr   z	a b c d er   r   rI   r  zp5 p6 p7 p8r  zh5 h6 h7 h8r2  r   r   r   rq   )	r,   r*   r%   r   r   rg   r  r  r!   )'r  r	  r?   r[   r   r   r]   rL   rM   rN   rO   rz   r8   r9   r  r  r  r  p5p6p7p8r   r!  r"  r#  h5h6h7h8r2  r   r   r$  r%  r&  r   r'  rA   s'                                          rC   test_dummy_order_ambiguousr=    s   U-FBKTuEMAq!QKTuEMAq!Q5e$DAq]%HNBB]%HNBB]%HNBB]%HNBBAA4 Ry2r"1R9,Qr2Y6qRy@HQ1aOQ/J==b"b"b14
3CDED DBB+V4}}X&!$'+=d+CCCCD Ry2r"1R9,Qr2Y6qRy@HQ1aOQ/J==b"b"b14
3CDED DBB+V4}}X&!$'+=d+CCCCD RR 2r2r!221R9<HQ1aOQ/J==b"b"b14
3CDED DBB+V4}}X&!$'+=d+CCCCDrE   c                  (    t        d| d d | dd        S )Nr   rV   )r   rs   s    rC   atvr@    s    sD!Hd12h88rE   c                      t        |       dk(  rt        d| d d | dd        S t        |       dk(  rt        d| d   f| d   f      S y )Nrp   r   rV   r   rU   )rr   r   r?  s    rC   r   r     sS    
4yA~"3Ra$qr(<<	Ta"3a
T!WJ?? 
rE   c            	      |   t        dd      } t        dd      }t        ddt              \  }}t        ddt        	      \  }}t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||||      t        ||       z  t        ||      z  t        ||      z  g}|d
d  D ]  }t	        |d         t	        |      k(  rJ  y )Nr?   Tr   rL   r   r   r   r   r   rU   r   r,   r*   r@  r   r!   )r   r  r   r   rN   rO   r  r   s           rC   -test_dummy_order_inner_outer_lines_VT1T1T1_ATrD    s5   	$	'B	$	'B5d6DAq5d6DAq 	Aq!QAr
"3q!9,SQZ7Aq!QAr
"3q!9,SQZ7Aq!QAr
"3q!9,SQZ7Aq!QAr
"3q!9,SQZ7E ) J!%(+/A&/IIIIJrE   c                     t        dd      \  } }t        dd      \  }}t        ddt              \  }}t        ddt        	      \  }}t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||      z  t        ||||      t        ||      z  t        ||       z  t        ||      z  t        ||      z  t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||      z  g}|d
d  D ]  }	t	        |d         t	        |	       k(  rJ  t        ||||      t        ||       z  t        ||      z  t        ||      z  t        ||      z  t        ||||      t        ||      z  t        ||       z  t        ||      z  t        ||      z  g}|d
d  D ]  }	t	        |d         t	        |	      k(  rJ  y Nr   Tr   r   r   r   r   r   r   rU   r   rC  
r   r  r  r	  r   r   rN   rO   r  r   s
             rC   /test_dummy_order_inner_outer_lines_VT1T1T1T1_ATrH    s   U-FBU-FB5d6DAq5d6DAq 	Aq!QAr
"3q":-c"aj8RCAq!QAr
"3q":-c"aj8RCAq!QAr
"3q":-c"aj8RC	E ) K!%(+0B60J/JJJJK
 	Aq!QAr
"3q":-c"aj8RCAq!QAr
"3q":-c"aj8RCE
 ) J!%(+/A&/IIIIJrE   c            	         t        ddt              \  } }}}t        ddt              \  }}}}t        | |||      t        ||       z  t        ||      z  t        || ||      t        ||       z  t        ||      z  t        | |||      t        ||       z  t        ||      z  g}|dd  D ]  }	t	        |d         t	        |	      k7  rJ  t        | |||      t        ||       z  t        ||      z  t        || ||      t        ||       z  t        ||      z  g}|dd  D ]  }	t	        |d         t	        |	      k(  rJ  t        | |||      t        ||       z  t        ||      z  t        | |||      t        ||       z  t        ||      z  g}|dd  D ]  }	t	        |d         t	        |	      k7  rJ  t        | |||      t        ||       z  t        ||      z  t        || ||      t        ||      z  t        ||       z  t        | |||      t        ||       z  t        ||      z  t        || ||      t        ||      z  t        ||       z  g}|dd  D ]  }	t	        |d         t	        |	      k(  rJ  y Nr   Tr   rG   r   rU   r   rC  
r?   r[   r   r   rL   rM   rN   rO   r  r   s
             rC   'test_equivalent_internal_lines_VT1T1_ATrL  7  s   %@JAq!Q%@JAq!Q 	Aq!QAq	!#a)+Aq!QAq	!#a)+Aq!QAq	!#a)+E
 ) J!%(+/A&/IIIIJ 	Aq!QAq	!#a)+Aq!QAq	!#a)+E ) J!%(+/A&/IIIIJ 	Aq!QAq	!#a)+Aq!QAq	!#a)+E ) J!%(+/A&/IIIIJ 	Aq!QAq	!#a)+Aq!QAq	!#a)+Aq!QAq	!#a)+Aq!QAq	!#a)+	E ) J!%(+/A&/IIIIJrE   c                     t        ddt              \  } }}}}}t        ddt              \  }}}}	}
}t        ddt              \  }}}}t        ddt              \  }}}}dd	lm} t	        ||||      t        ||| |      z  t        | |||      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  t	        ||||      t        ||||       z  t        || ||      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  t	        ||||      t        ||| |      z  t        || ||      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  t	        ||||      t        ||||       z  t        | |||      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  y Nr  Tr   r  r   r  r  r   r   rp   
r,   r*   r   r   r@  r   rg   r  r  r!   r?   r[   r   r   r]   r\   rL   rM   rN   rO   rz   r<   r  r  r  r  r   r!  r"  r#  r   r$  r%  r&  r   r'  rA   s                              rC   +test_equivalent_internal_lines_VT2conjT2_ATrQ  [  s?   }$EJAq!Q1}$EJAq!Q1]%HNBB]%HNBB4 2r2r"3r2q!#44SAr25FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCD 2r2r"3r2q!#44SAr25FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCD 2r2r"3r2q!#44SAr25FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCD 2r2r"3r2q!#44SAr25FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCDrE   c                  X   t        ddt              \  } }}}}}t        ddt              \  }}}}	}
}t        ddt              \  }}}}t        ddt              \  }}}}dd	lm} t	        ||||      t        ||| |      z  t        ||| |      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  t	        ||||      t        ||||       z  t        ||| |      z  } |||||	gd
      }|j                  t        ||||gt        |                  }|D ]<  }t        ||||g|      }|j                  |      }t        |      t        |      k(  r<J  y rN  rO  rP  s                              rC   ;test_equivalent_internal_lines_VT2conjT2_ambiguous_order_ATrS    s    }$EJAq!Q1}$EJAq!Q1]%HNBB]%HNBB4 2r2r"3r2q!#44SRA5FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCD 2r2r"3r2q!#44SRA5FFHQ1aL!,J==b"b"-tJ/?@AD DBB'0}}X&!$'+=d+CCCCDrE   c            
         t        ddt              \  } }}}t        ddt              \  }}}}t        | |||      t        ||| |      z  t        || ||      t        ||| |      z  t        | |||      t        ||| |      z  g}|dd  D ]  }	t	        |d         t	        |	      k7  rJ  t        | |||      t        ||| |      z  t        | |||      t        ||| |      z  t        | |||      t        ||||       z  g}|dd  D ]  }	t	        |d         t	        |	      k7  rJ  t        | |||      t        ||| |      z  t        || ||      t        ||||       z  t        | |||      t        ||| |      z  t        || ||      t        ||||       z  g}|dd  D ]  }	t	        |d         t	        |	      k(  rJ  y rJ  rC  rK  s
             rC   %test_equivalent_internal_lines_VT2_ATrU    s   %@JAq!Q%@JAq!Q 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J!%(+/A&/IIIIJ
 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J!%(+/A&/IIIIJ 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J!%(+/A&/IIIIJrE   c            
         t        dd      \  } }t        dd      \  }}t        ddt              \  }}t        ddt        	      \  }}t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  g}|d
d  D ]  }	t	        |d         t	        |	      k(  rJ  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  g}|d
d  D ]  }	t	        |d         t	        |	      k(  rJ  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  g}|d
d  D ]  }	t	        |d         t	        |	      k(  rJ  y rF  rC  rG  s
             rC   test_internal_external_VT2T2_ATrW    s   U-FBU-FB5d6DAq5d6DAq 	Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;	E ) J!%(+/A&/IIIIJ 	Aq!QB2q))#aR*;;Aq!QB2q))#aR*;;Aq!QB2q))#aR*;;Aq!QB2q))#aR*;;	E ) J!%(+/A&/IIIIJ 	Aq!QAr2q))#b!R*;;Aq!QAr2q))#b!R*;;Aq!QAr2q))#b!R*;;Aq!QAr2q))#b!R*;;	E ) J!%(+/A&/IIIIJrE   c            
      4   t        d      \  } }t        d      \  }}t        dt              \  }}t        dt              \  }}t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  t        ||||      t        ||| |      z  t        ||||      z  g}|dd  D ]  }	t	        |d         t	        |	      k(  rJ  y )Nr   r   r   rI   r   rU   r   rC  rG  s
             rC   test_internal_external_pqrs_ATrY    s/   U^FBU^FB5e$DAq5e$DAq 	Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;Aq!QB2q))#b!R*;;	E ) J!%(+/A&/IIIIJrE   c                  x    t        d      } t        t        t        |       dz  t	        |                   dk(  sJ y )N0rV   z(- \left[b_{0},{b^\dagger_{0}}^{2}\right])r+   r2   r   r   r   )rL   s    rC   test_issue_19661r\    s=    sABqE1Had+ CD D DrE   c                      t        d      } t        ddt              \  }}t        ddt              \  }}t        | ||f||f      t        | ||f||f       k(  sJ y )Nr   )rN   rO   Tr   )r   r   r   )r,   r*   r   )r   rN   rO   r   r   s        rC   +test_canonical_ordering_AntiSymmetricTensorr^    ss    A9$',.DAq9$',.DAq q1a&1a& 
!!aVaV445 5 5rE   N)r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#   sympy.concrete.summationsr$   sympy.core.functionr%   r&   sympy.core.numbersr'   r(   sympy.core.singletonr)   sympy.core.symbolr*   r+   r,   (sympy.functions.elementary.miscellaneousr-   sympy.printing.reprr.   sympy.simplify.simplifyr/   sympy.testing.pytestr0   r1   sympy.printing.latexr2   rD   rR   r^   rd   rk   rm   rx   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.  r0  r3  r=  r@  r   rD  rH  rL  rQ  rS  rU  rW  rY  r\  r^   rE   rC   <module>rk     s  
 
 
 
 
 
 
 
 
 * 2 , " 6 6 9 % , - &%"8.&
6
6-";'	:1	*
S " "*eZ.8"2	60'f'9T#KLO$#.I:=(>1-NCJ22Jj<)JX/DdDB.Jb$JNJ*54p(DV9@J(J6!JH'DTD6J@J@J D
5rE   