
    gB                     x   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 ZqdCS )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                     t          d          \  } }}}t          t          d          \  }}}}t          } || |                               ||            ||          z             ||            ||           z  k    sJ  || |                               || |                     |||            k    s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 d S )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              `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/physics/tests/test_secondquant.pytest_PermutationOperatorrD      s   ##JAq!QXv&&JAq!QA1Q77!QQqTT	**qqtteAAaDDj88881Q77!Q((QQq!WWH44441Q77!%%1----AaDD1IaaddN11Q44
!A$$qqtt)AAaDD.1

!A$$qqtt)AAaDD.1
 !A$$qqtt)AAaDD.1
D Qq!WWaa1ggE'e44	!Q!Q!QQqTT!!!A$$&qqtt+, , , ,1a>>W$$$$$$    c            	      T   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 d S )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 1Q1a==11Q1a==(D&qqAwwi AaGGAAaAqMM12 2 2 2 qAww)!!Aq!Q--888H1Q1a==11Q1a==(D(!Qy99F)&1111111Q1a==11Q1a==(D(!Qy99F)&111111 1Q1a==11Q1a==(D(!Qy9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 d S )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   sl   ##JAq!Q!99>>>>#;;#!A#;;"Q$!&(3,1Xb!__#4S#88888$s))aS		))))!A$$<<2a55    "Q%%==AaDD    !A$$<<2a55    "Q%%==AaDD    !A$$1+"Q%%"Q%%-////!A#;;&))F1II-----!A$$qtt)1bee++++!A$$(vadd||R/////#;;&------&++&++------rE   c                      t          d          \  } }t          |           }|j        | k    sJ |j        sJ t          d          }|j        dk    sJ |j        rJ d S )Ni,jrU   )r,   r   stateis_symbolic)r?   r[   os      rC   test_operatorrd   Z   sk    5>>DAqA7a<<<<=A7a<<<<}rE   c                  \   t          d          \  } }}}t          |           }t          |          dk    sJ t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }|                    t          |g                    t          |dz             t          |dz   g          z  k    sJ t          |          }|                    t          |g                    |t          |g          z  k    sJ d S )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88)))))a%%%%%	q!A776??qc!!!!
1AD!II&&$q1u++dAE7mm*CCCCC
1AD!II&&!D!II+555555rE   c                  V   t          d          \  } }}}t          |           }t          |          dk    sJ t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }|                    t          |g                    t          |          t          |dz
  g          z  k    sJ t          |          }|                    t          |g                    |t          |g          z  k    sJ d S )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88wa)))))	q!A776??qc!!!!	!AD!II&&$q''$Aw--*?????	!AD!II&&!D!II+555555rE   c                  H   t          d          \  } }}}t          g d          }t          |          dk    sJ |j        d         t	          t          d                    k    sJ |                    d          t          g d          k    sJ |                    d          t          g d          k    sJ t          d          D ]0} |                    |                               |           |k    sJ 1|                    d          dk    sJ t          d          D ]} ||          | k    sJ t          ||g          }|                    d          t          |dz
  |g          k    sJ |                    d          t          |dz   |g          k    sJ d S )	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q66Q;;;;6!9eAhh''''4477j11111166!99
???3333331XX $ $ttAww||A!#####66!99>>>>1XX  tqyyyyyAq6A66!99
AE1:......4477j!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 d S )Nr\   r   rU   )r,   r   r   r   r-   r   )r\   es     rC   test_basic_applyr{      s    A	!T1#YYA1aq1ug!66666
1dA3iiA1a!eT1q5']]!:::::::rE   c                     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 d S )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dd
2a551A$1v,,''A!WWT!a%[[ "q&)$QA*?*??F!99v&&&&&&rE   c                      t          d          } t          d          t          d          z  }t          |t	          | g          z            }|| t	          | g          z  k    sJ d S )Nr\   r   )r,   r   r   r   r   )r\   rc   rz   s      rC   test_number_operatorr      s^    A
1add
A$s))$$A$s))rE   c                     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 d S )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F2JJ''1,,,,B1$$$$	q!fB	q!fBRAq!$$^Aq%9%999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 d S )Nr}   r   rU   )r,   r   r   r   r   r-   r   )r\   r]   r   r   rc   rz   s         rC   test_symbolic_matrix_elementsr      s{    5>>DAq	qcB	qcB	!A1R  AQq!a%000000000rE   c                  t   t          d          } t          d          }t          ||           }t          d          D ]%}|||dz   f         t	          |dz             k    sJ &t          d          }t          ||           }t          d          D ]%}||dz   |f         t	          |dz             k    sJ &d S )Nrq   r   rp   rU   )r   r   r
   ru   r-   r   )rM   rc   r]   r?   s       rC   test_matrix_elementsr      s    A	!A1aA1XX * *AE{d1q5kk)))))
1A1aA1XX * *Q{d1q5kk)))))* *rE   c                     t          dd          } |                     d          }|t          d          k    sJ |                     |          dk    s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 d S )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GGAJJE%f------775>>Q771::1q66Q;;;;q66PPPPP77QQQQQ88RRRRRRRrE   c                     t          d          \  } }t          |           t          |           z  | t          j        z   z  }t          || ddf          }|                    d          }t          dd          }t          ||          }g d}t          t          |                    D ]}||         |||f         k    sJ d S )	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LLD3t99 " "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          |                    }|                                ddt          t          |          t          |          z            z  z   k    sJ t          }t          dd	
          \  }}} | |||          |          dk    sJ  | |||          |          dk    sJ  || |||                    dk    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                                          d           ||	|           t          |          z  k    sJ  |t          |          t          |          z  t          |          t          |	          z                                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 d S )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      s   5d+++DAq1Q44AA66662a55!A$$A77771Q44AAq!$$$$$$1Q441A66661Q44AA499--..AaS		>>>>1Q441A4A<<0011A66661Q44AAQr"Q%%!*~~%%%%%%2a55!A$$A88::a2a551:......Ag5111GAq!1QQq!WWa==A1QQq!WWa==A1Q!Q==A555JAq!Q555JAq!Q##JAq!QA1RUUAaDD>>R1Q441:.....1RUUBr!uuQqTTzNN##((t(441aAFFFF1RUU1Q44ZAqtt$$)))55::::	AaDD"Q%%	 	 B?2r""a''''2a551:beeAaDDj))A88RRRRR77oooooq66dddddddrE   c                     t          d          \  } }}}t          |           }t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }|                    t          |g                    t          d|g          k    sJ |                    t          |g                    t          |dg           k    sJ t          |          }|                    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          |                               t          | ||gd                    t          ||gd          k    sJ t          |                              t          | |	|gd                    t          || |	|gd          k    sJ t          t          |                                        |          |t          |          z  k    sJ t          t          |                    dk    sJ t          t          |                    dk    sJ t          t          |                    dk    sJ d S )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!II&&$1v,,6666D!II&&4A<<-7777
1ADHH%%qc2222"!$$$FT"!,,,,,,,555JAq!Q555JAq!Q##JAq!Qa55aAY 2 233tQFAFFFFa55aAY 2 233tQ1aL!7L7LLLLL!A$$<<&&q))Q{1~~-=====1;;,,,,,A<<77777A<<-------rE   c                     t          d          \  } }}}t          |           }t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }|                    t          d|g                    t          |g          k    sJ |                    t          |dg                    t          |g           k    sJ t          |          }|                    t          |g                    t          g           k    sJ t          dd          \  } }}}t          dd          \  }}}	}
t          d          \  }}}}t          |                               t          | ||gd	                    d
k    sJ t          |                              t          | ||gd	                    d
k    sJ t          |                              t          | ||gd                    d
k    sJ 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 )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LL))T1#YY6666D!QLL))dA3iiZ7777	!AD!II&&$r((2222555JAq!Q555JAq!Q##JAq!QQ44tQ1Iq1122a7777Q44tQ1Iq1122a7777Q44tQ1Iq1122a7777Q44tQ1Iq1122dAq!Q<6K6KKKKKqtt99!:://///1;;:::::1;;'!!!!!!rE   c                  2   t          d          \  } }}}t          |           }t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }|                    t          |g                    t          |dz             t          |dz   g          z  k    sJ t          |          }|                    t          |g                    |t          |g          z  k    sJ d S )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!II&&$q1u++dAE7mm*CCCCC
1AD!II&&!D!II+555555rE   c                     t          d          \  } }}}t          |           }t          |t                    sJ |                    | |          }|                    t                    |hk    sJ t          d          }d S )NrT   r   )r,   r   rf   r   rg   rh   r+   rj   s        rC   test_annihilate_br   Q  su    ##JAq!Q	!Aa)))))	q!A776??qc!!!!	!AAArE   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                                  t          | |z  |z            k    sJ || z  |z  dz                                  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 d S )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   555JAq!Q A$$r!uu*C::AaDDAJ.A*>*>>>>>>
Q%%!*C::BqEE!A$$J''''
A$$r!uu*QqTT/"Q%%
C::Dq!^Aq111
A

033
3M!4D4D
D	E
A

033
3M!4D4D
D	E A

033
3M!4D4D
D	E A

033
3M!4D4D
D]STEUEU
U		VW WE 5====aCH%!C..0000F1HQJ  E#a%'!)$4$44444 %@@@JAq!Q%@@@JAq!Q...JAq!Q!A$$r!A$$qtt)}}$RUU*++qttAaDDy1~bee#$$1a  AaDD1I.// / / / !A$$r!A$$qtt)AaDD.)))"Q%%/00qttAaDDy1~add"2a55())1a  AaDD1IaddN!3!3344 4 4 4 Ar"Q%%!*~~%add*++D1a   BqEE!A$$J/1a  BqEE!A$$J/01a  1!5!556 1a  BqEE!A$$J/0 r!uuRUU{1Q44!$%%	&& & & & 1b1beenn$RUU*++D1a   AaDDAJ/1a  AaDDAJ/01a  1!5!556 1a  AaDDAJ/0 qttAaDDyAr!uu$%%	&& & & & & &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                                            t          |          t	          |          z  k    sJ t          t	          |          t          |           z                                            t	          |          t          |           z  k    sJ t          t                    t	                    z                                t                    t          |          t          |           z             t          t          |          t	                    z            t          t          |           t	                    z            z   k    sJ t          t                    t	                    z                                t	                    t	          |          t	          |           z             t          t                    t	          |          z            t          t                    t	          |           z            z   k    sJ t          t                    t	                    z                                            }
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          |	                                          }|d	dgk    sJ t          |
                                          }|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           d S )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                  \    t          t                     t                    z            S N)r   r   r   )r8   r9   s   rC   <lambda>ztest_NO.<locals>.<lambda>  s    BqEE!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<   555JAq!Q555JAq!Q...JAq!Qr!uuQqTTzBqEE!A$$J&''	"Q%%!*~~2a551:&' ' ' 'r!uuR!RUU
^^#$$	"Q%%!*RUU
   a55A::::a55A::::r!uuRUU{AaDD1Q44K())r!uuRUU{1Q44  r!uuRUU{1Q44  !! ! ! ! beeAaDDj>>**,,1add
::::add2a55j>>**,,!RUU
::::r!uuQqTTzNN1r!uur!uu}55r!uuQqTTzNNR1add
^^+, , , ,r!uuQqTTzNN!addQqTTk22r!uuQqTTzNNR1add
^^+, , , , beeAaDDj>>**,,D;;"T((""""beeAaDDj>>r!A$$r!uu*~~-----	BqEE!A$$JqttOBqEE!	"	"B	b  ""	#	#B!Q<<<<	b$$&&	'	'B!Q<<<<	BqEE"Q%%KB!!!! B&&&&r77;;;;;88>>>>>99IIIII
 7 7 7 7 788888rE   c                  J   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 d S )	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!66BqEE1Q44=!:LLLLL'1r!uu66BqEE1Q44=!:LLLLL (1r!uu66AaDD"Q%%=!:LLLLL'A!66AaDD"Q%%=!:LLLLL'A177RUUBqEENA;NNNNN'A177RUUBqEENA;NNNNN'1qtt551Q441,9JJJJJ'1qtt551Q441,9JJJJJ'A!66AaDD"Q%%=!:LLLLL'1r!uu66AaDD"Q%%=!:LLLLL (1r!uu66BqEE1Q44=!:LLLLL'A!66BqEE1Q44=!:LLLLL'A177RUUBqEENA;NNNNN'A177RUUBqEENA;NNNNN'1qtt551Q441,9JJJJJ'1qtt551Q441,9JJJJJ'A!66BqEE1Q44=!:LLLLL'1r!uu66BqEE1Q44=!:LLLLL (1r!uu66AaDD"Q%%=!:LLLLL'A!66AaDD"Q%%=!:LLLLL'A177RUUBqEENA;NNNNN'A177RUUBqEENA;NNNNN'1qtt551Q441,9JJJJJ'1qtt551Q441,9JJJJ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           d S )	Nr   Tr   r   r   r4   r   c                  X    t          t                     t                              S r   )r   r   r   )rL   rM   s   rC   r   z"test_contraction.<locals>.<lambda>  s    [1r!uu5M5M 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     s   555JAq!Q555JAq!Q##JAq!Qr!uuadd##~a';';;;;;qttRUU##~a';';;;;;qttRUU##q((((r!uuadd##q((((qttRUU##q((((r!uuadd##q((((r!uuadd##~a';';;;;;K1qtt4455E$$$$K!bee4455E$$$$
+-M-M-M-M-MNNNN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 d S )Nzi,j,kr   rU   rV   )r,   r   r   )r?   r[   r   r:   s       rC   test_evaluate_deltasr     s   gGAq!q!~a333A11!5!55555q!~a333A11!5!5q!8L8L!LLLLLq!~a333A11!5!55555q!~a333A11!5!55555q!~a333nQ6J6JJA1""""	1		q! 4 4	4!Q
 "0A"6"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          }|                    |          sJ |                    |          sJ |                    |           sJ |                    |          sJ |                    ||           |d||f| |f          k    sJ d	|z                      | |          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                              ||           |d||f| |f          k    sJ  |d|| f||f                              ||           |d|| f||f          k    sJ d S )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2cAq6Aq6""rr#1v1v'>'>&>>>>>2cAq6Aq6""bbq!fq!f&=&=====2cAq6Aq6""rr#1v1v'>'>&>>>>>2cAq6Aq6""a''''2cAq6Aq6""a''''2cAq!9q!f%%""S1a)aV*D*D)DDDDD2cAq!9q!Qi((BBsQ1I1ay,I,IIIIIBsQFQF##E99Q<<99Q<<99Q<<99Q<<::arr#1v1v666666eG>>!Q1RRaVaV%<%<#<<<<<<6#;;&&&&<<?****u:://///2cAq6Aq6""''1--C!Q!Q1H1HHHHH2cAq6Aq6""''1--C!Q!Q1H1HHHH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 d S )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   #  s   555JAq!Q555JAq!Q...JAq!QaTA400r!uuQqTTzNND	S1a&1a&	1	1	BqEE"Q%%K!QqTT!	"	"
#$%	&A 2a551:t#'+&*, , ,C %cA4!666666"RUU2a55[1%add*++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 d S )Nr`   rV   rU   )r,   r!   attr?   r[   s     rC   'test_substitute_dummies_without_dummiesr   7  sy    5>>DAqc!Qii!m,,Aq		A====c!Qii!m,,Aq		A======rE   c            
      T   t          dt                    \  } }t          t          | |          t	          t          |           t          |          z            z  t          ||           t	          t          |          t          |           z            z  z
            dk    sJ d S Ni jrI   r   )r,   r*   r!   r   r   r   r   r   s     rC   #test_substitute_dummies_NO_operatorr   =  s    5e$$$DAqc!Qii2a551:6a))Br!uuQqTTzNN*+ , ,/01 1 1 1 1 1rE   c                      t          dt                    \  } }t          t          | |          t	          |           z  t          |          z  t          ||           t	          |          z  t          |           z  z
            dk    sJ d S r   )r,   r*   r!   r   r   r   r   s     rC   #test_substitute_dummies_SQ_operatorr   C  s    5e$$$DAqc!Qii1oadd2a))BqEE/!A$$&' ( (+,- - - - - -rE   c                     t          ddt                    \  } }t          ddt                    \  }}t          dt                    \  }}t          d          }t           || ||           ||||          z
  d	          d
k    sJ d S )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  s    5d666DAq5d666DAq5e$$$DAqAaa1ajj11Q1::54HHHAMMMMMMrE   c            
          t          ddt                    \  } }}}t          d          }ddlm}  || |||gd          D ])}t           ||  || |||          z
            dk    sJ *d S )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  s    %@@@JAq!QA444444*aAq\1-- C C!!!V*qqAq!}}"<==BBBBBC CrE   c            	      J   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 ]J}
 ||	d                    ||
          k    sJ t	          |	d                   t	          |
          k    sJ Kd S )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  s   	$	'	'	'B	$	'	'	'B5d666DAq5d666DAqAAD 	
!Q1aa2hhqqAww&qqQxx/	!Q1aa2hhqqAww&qqQxx/	!Q1aa2hhqqAww&qqQxx/	!Q1aa2hhqqAww&qqQxx/E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ 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 ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ K |||||           |	||           z   |	||          z   |	||          z   |	||          z   |||||           |	||           z   |	||          z   |	||          z   |	||          z   |||||           |	||           z   |	||          z   |	||          z   |	||          z   |||||           |	||           z   |	||          z   |	||          z   |	||          z  g}|dd          D ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ K |||||           |	||           z   |	||          z   |	||          z   |	||          z   |||||           |	||          z   |	||           z   |	||          z   |	||          z   |||||           |	||           z   |	||          z   |	||          z   |	||          z   |||||           |	||          z   |	||           z   |	||          z   |	||          z  g}|dd          D ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ Kd S 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  sw   U---FBU---FB5d666DAq5d666DAqAAD 	
!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9E ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9E ) J JtE!H~~f----!%(++/A&/I/IIIIII
 	
!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9	!Q1aa2hhqqBxx'"a02q9E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ JrE   c                  &   t          d          \  } }}t          t          |           t          |          z  t          |          z                                d          t          t          |           t          |          z            k    sJ t          t          |           t          |          z  t          |          z                                d          t          t          |          t          |          z            k    sJ t          t          |           t          |          z  t          |          z                                d          t          t          |           t          |          z            k    sJ d S )Nzp,q,rrU   r   rV   )r,   r   r   	get_subNO)r8   r9   r:   s      rC   test_get_subNOr    s    gGAq!add1Q44i!n''**b1addmm;;;;add1Q44i!n''**b1addmm;;;;add1Q44i!n''**b1addmm;;;;;;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 ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ K || |||           |	||           z   |	||          z   ||| ||           |	||           z   |	||          z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ K || |||           |	||           z   |	||          z   || |||           |	||           z   |	||          z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ K || |||           |	||           z   |	||          z   ||| ||           |	||          z   |	||           z   || |||           |	||           z   |	||          z   ||| ||           |	||          z   |	||           z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ Kd S 
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aa1ggaa1gg%	!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%E
 ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%E ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%E ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%	!Q1aa1ggaa1gg%	E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ J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          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ h |||||           |||||           z   ||| ||          z  } |||||	gd          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ h |||||           |||| |          z   ||| ||          z  } |||||	gd          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ h |||||           |||||           z   || |||          z  } |||||	gd          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ hd 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   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JJAq!Q1}$EJJJAq!Q1]%HHHNBB]%HHHNBB444444AAD qRR  2r1a01aR@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCCqRR  2r1a01aR@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCC qRR  2r1a01aR@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCCqRR  2r1a01aR@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCC	D 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          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ h |||||           |||||           z   |||| |          z  } |||||	gd          }|                    t          ||||gt          |                              }|D ]g}t          ||||g|          }|                    |          } ||           ||          k    sJ t          |          t          |          k    sJ hd S r  r  r  s                                 rC   8test_equivalent_internal_lines_VT2conjT2_ambiguous_orderr*    s    }$EJJJAq!Q1}$EJJJAq!Q1]%HHHNBB]%HHHNBB444444AAD qRR  2r1a02r1a@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCCqRR  2r1a02r1a@HQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&tDzzTT$ZZ''''!$''+=d+C+CCCCCC	D DrE   c            
      j   t          ddt                    \  } }}}t          ddt                    \  }}}}t          d          }t          d          }	t          }
 || |||           |	||| |          z   ||| ||           |	||| |          z   || |||           |	||| |          z   ||| ||           |	||| |          z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ K || |||           |	||| |          z   || |||           |	||| |          z   || |||           |	||||           z   || |||           |	||||           z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ K || |||           |	||| |          z   ||| ||           |	||||           z   || |||           |	||| |          z   ||| ||           |	||||           z  g}|dd          D ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ Kd S r  r   r  s                rC   "test_equivalent_internal_lines_VT2r,  -  sg   %@@@JAq!Q%@@@JAq!QAAD 	
!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#E  ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#E ) J JtE!H~~f----!%(++/A&/I/IIIIII 	
!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#	!Q1aa1amm#	E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ 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  g}|dd          D ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ K |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z  g}|dd          D ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ K |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z   |||||           |	||| |          z   |	||||          z  g}|dd          D ]J} |
|d                    |
|          k    sJ t	          |d                   t	          |          k    sJ Kd S r  r   r  s                rC   test_internal_external_VT2T2r.  ^  sk   U---FBU---FB5d666DAq5d666DAqAAD 	
!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	E ) J JtE!H~~f----!%(++/A&/I/IIIIII	!Q1aaAr1oo%aa2r1oo5	!Q1aaAr1oo%aa2r1oo5	!Q1aaAr1oo%aa2r1oo5	!Q1aaAr1oo%aa2r1oo5	E ) J JtE!H~~f----!%(++/A&/I/IIIIII	!Q1aa2r1oo%aaAr1oo5	!Q1aa2r1oo%aaAr1oo5	!Q1aa2r1oo%aaAr1oo5	!Q1aa2r1oo%aaAr1oo5	E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ JrE   c            
         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 ]J} |
|d	                    |
|          k    sJ t	          |d	                   t	          |          k    sJ Kd S )
Nr   r   r   rI   r   r   r   rU   r   r   r  s                rC   test_internal_external_pqrsr0    s   U^^FBU^^FB5e$$$DAq5e$$$DAqAAD 	
!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	!Q1aaAr1oo%aaAr1oo5	E ) J JtE!H~~f----!%(++/A&/I/IIIIIIJ 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 d S )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666DAq5e$$$DAqAAAD 4!Q!Q  QF****4!Q!Q  QF****4!Q!Q  QF****4!Q!Q  QF**** 4!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I55554!Q!Q!Q'((Q1I5555 4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA4!RAAaQKK'"a344Aq	AAAA 4!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)33334!Q

11Q1::%&&1a)333333rE   c            	         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          }"|!                    t          |||||gt          |"                              }#|"D ]N}$t          |||||g|$          }%|!                    |%          }&t          |&          t          |#          k    sJ O |||           |||          z   |||          z   |||          z   |||          z  }! | |||	|
|gd          }"|!                    t          |||||gt          |"                              }#|"D ]N}$t          |||||g|$          }%|!                    |%          }&t          |&          t          |#          k    sJ O |||||           |||||          z   |||          z  }! | |||	|
|gd          }"|!                    t          |||||gt          |"                              }#|"D ]N}$t          |||||g|$          }%|!                    |%          }&t          |&          t          |#          k    sJ Od S )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EEEMAq!QKTuEEEMAq!Q5e$$$DAq]%HHHNBB]%HHHNBB]%HHHNBB]%HHHNBBAA444444 qRyy2r"11R99,QQr2YY6qqRyy@HQ1aOQ//J==b"b"b14
3C3CDDEED D DBB+V44}}X&&!$''+=d+C+CCCCCC qRyy2r"11R99,QQr2YY6qqRyy@HQ1aOQ//J==b"b"b14
3C3CDDEED D DBB+V44}}X&&!$''+=d+C+CCCCCC qRR  2r2r!2!2211R99<HQ1aOQ//J==b"b"b14
3C3CDDEED D DBB+V44}}X&&!$''+=d+C+CCCCCCD DrE   c                  D    t          d| d d         | dd                    S )Nr   rV   )r   rs   s    rC   atvr@    s$    sD!Hd122h8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 d S )Nrp   r   rV   r   rU   )rr   r   r?  s    rC   r   r     sg    
4yyA~~"3RaR$qrr(<<<	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    sJ +d S )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    s   	$	'	'	'B	$	'	'	'B5d666DAq5d666DAq 	Aq!QAr

"3q!99,SQZZ7Aq!QAr

"3q!99,SQZZ7Aq!QAr

"3q!99,SQZZ7Aq!QAr

"3q!99,SQZZ7E ) J J!%(++/A&/I/IIIIIIJ 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    s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    sJ +d S 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    sV   U---FBU---FB5d666DAq5d666DAq 	Aq!QAr

"3q"::-c"ajj8RCAq!QAr

"3q"::-c"ajj8RCAq!QAr

"3q"::-c"ajj8RC	E ) K K!%(++0B60J0J/JJJJJJ 	Aq!QAr

"3q"::-c"ajj8RCAq!QAr

"3q"::-c"ajj8RCE
 ) J J!%(++/A&/I/IIIIIIJ 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	          |	          k    sJ +t          | |||          t          ||           z  t          ||          z  t          || ||          t          ||           z  t          ||          z  g}|dd          D ]*}	t	          |d                   t	          |	          k    sJ +t          | |||          t          ||           z  t          ||          z  t          | |||          t          ||           z  t          ||          z  g}|dd          D ]*}	t	          |d                   t	          |	          k    s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    sJ +d S 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 J!%(++/A&/I/IIIIII 	Aq!QAq		!#a))+Aq!QAq		!#a))+E ) J J!%(++/A&/I/IIIIII 	Aq!QAq		!#a))+Aq!QAq		!#a))+E ) J J!%(++/A&/I/IIIIII 	Aq!QAq		!#a))+Aq!QAq		!#a))+Aq!QAq		!#a))+Aq!QAq		!#a))+	E ) J J!%(++/A&/I/IIIIIIJ JrE   c                  Z   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
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nt	          ||||          t          ||||           z  t          || ||          z  } |||||	gd
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nt	          ||||          t          ||| |          z  t          || ||          z  } |||||	gd
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nt	          ||||          t          ||||           z  t          | |||          z  } |||||	gd
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nd S 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JJAq!Q1}$EJJJAq!Q1]%HHHNBB]%HHHNBB444444 2r2r""3r2q!#4#44SAr25F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCC2r2r""3r2q!#4#44SAr25F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCC 2r2r""3r2q!#4#44SAr25F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCC2r2r""3r2q!#4#44SAr25F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCCD D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
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nt	          ||||          t          ||||           z  t          ||| |          z  } |||||	gd
          }|                    t          ||||gt          |                              }|D ]M}t          ||||g|          }|                    |          }t          |          t          |          k    sJ Nd S rN  rO  rP  s                              rC   ;test_equivalent_internal_lines_VT2conjT2_ambiguous_order_ATrS    sX    }$EJJJAq!Q1}$EJJJAq!Q1]%HHHNBB]%HHHNBB444444 2r2r""3r2q!#4#44SRA5F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCC2r2r""3r2q!#4#44SRA5F5FFHQ1aL!,,J==b"b"-tJ/?/?@@AAD D DBB'00}}X&&!$''+=d+C+CCCCCCD 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	          |	          k    sJ +t          | |||          t          ||| |          z  t          | |||          t          ||| |          z  t          | |||          t          ||||           z  g}|dd          D ]*}	t	          |d                   t	          |	          k    sJ +t          | |||          t          ||| |          z  t          || ||          t          ||||           z  t          | |||          t          ||| |          z  t          || ||          t          ||||           z  g}|dd          D ]*}	t	          |d                   t	          |	          k    sJ +d S rJ  rC  rK  s
             rC   %test_equivalent_internal_lines_VT2_ATrU    sm   %@@@JAq!Q%@@@JAq!Q 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J J!%(++/A&/I/IIIIII 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J J!%(++/A&/I/IIIIII 	Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'Aq!QAq!Q'	E ) J J!%(++/A&/I/IIIIIIJ JrE   c            
      0   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    s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    s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    sJ +d S rF  rC  rG  s
             rC   test_internal_external_VT2T2_ATrW    s   U---FBU---FB5d666DAq5d66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 J!%(++/A&/I/IIIIII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 J!%(++/A&/I/IIIIIIAq!QAr2q)))#b!R*;*;;Aq!QAr2q)))#b!R*;*;;Aq!QAr2q)))#b!R*;*;;Aq!QAr2q)))#b!R*;*;;	E ) J J!%(++/A&/I/IIIIIIJ JrE   c            
         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    sJ +d S )Nr   r   r   rI   r   rU   r   rC  rG  s
             rC   test_internal_external_pqrs_ATrY    sy   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 J!%(++/A&/I/IIIIIIJ JrE   c                      t          d          } t          t          t          |           dz  t	          |                               dk    sJ d S )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BqEE1Hadd++  CD D D D D DrE   c                      t          d          } t          ddt                    \  }}t          ddt                    \  }}t          | ||f||f          t          | ||f||f           k    sJ d S )Nr   )rN   rO   Tr   )r   r   r   )r,   r*   r   )r   rN   rO   r   r   s        rC   +test_canonical_ordering_AntiSymmetricTensorr^    s    A9$',. . .DAq9$',. . .DAq q1a&1a& 
 
!!aVaV4445 5 5 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 2 2 2 2 2 2 2 , , , , , , , , " " " " " " 6 6 6 6 6 6 6 6 6 6 9 9 9 9 9 9 % % % % % % , , , , , , - - - - - - - - & & & & & &% % %"  8. . .&  
6 
6 
6
6 
6 
6- - -"; ; ;' ' '  	: 	: 	:1 1 1	* 	* 	*
S 
S 
S " " "*e *e *eZ. . .8" " "2	6 	6 	6  0' 0' 0'f'9 '9 '9T#K #K #KLO O O$# # #.I I I:= = =(> > >1 1 1- - -N N NC C CJ J J22J 2J 2Jj< < <)J )J )JX/D /D /DdD D DB.J .J .Jb$J $J $JNJ J J*54 54 54p(D (D (DV9 9 9@ @ @J J J(J J J6!J !J !JH'D 'D 'DTD D D6J J J@J J J@J J J D D D
5 
5 
5 
5 
5rE   