ó
~9­\c           @   s<  d  d l  m Z m Z m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l  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 l0 m1 Z1 d „  Z2 d „  Z3 d „  Z4 d	 „  Z5 d
 „  Z6 d „  Z7 d „  Z8 e. d „  ƒ Z9 e. d „  ƒ Z: d „  Z; d „  Z< d „  Z= d „  Z> d „  Z? d „  Z@ e/ d „  ƒ ZA d „  ZB d „  ZC d „  ZD d „  ZE d „  ZF d „  ZG d „  ZH d „  ZI d „  ZJ d „  ZK d  „  ZL d! „  ZM d" „  ZN d# „  ZO d$ „  ZP d% „  ZQ d& „  ZR d' „  ZS d( „  ZT d) „  ZU d* „  ZV d+ „  ZW d, „  ZX d- „  ZY d. „  ZZ d/ „  Z[ d0 „  Z\ d1 „  Z] d2 „  Z^ d3 „  Z_ d4 „  Z` d5 „  Za d6 „  Zb d7 „  Zc d8 „  Zd d9 „  Ze d: „  Zf d; „  Zg d< S(=   iÿÿÿÿ(   t   Daggert   Bdt   VarBosonicBasist   BBrat   Bt   BKett   FixedBosonicBasist
   matrix_rept   apply_operatorst   InnerProductt
   Commutatort   KroneckerDeltat   AnnihilateBosont   CreateBosont   BosonicOperatort   Ft   Fdt   FKett
   BosonStatet   CreateFermiont   AnnihilateFermiont   evaluate_deltast   AntiSymmetricTensort   contractiont   NOt   wickst   PermutationOperatort   simplify_index_permutationst   _sort_anticommuting_fermionst   _get_ordered_dummiest   substitute_dummies(
   t   Dummyt   expandt   Functiont   It   Rationalt   simplifyt   sqrtt   Sumt   Symbolt   symbols(   t   range(   t   XFAILt   slow(   t   latexc          C   s  t  d ƒ \ }  } } } t t d ƒ \ } } } } t } | |  | ƒ j | |  ƒ | | ƒ ƒ | | ƒ | |  ƒ k s~ t ‚ | |  | ƒ j | |  | ƒ ƒ | | |  ƒ k sµ t ‚ | |  | ƒ j | |  ƒ ƒ | |  ƒ k så t ‚ | |  ƒ | | ƒ | | ƒ | | ƒ | | ƒ | |  ƒ | | ƒ | | ƒ | |  ƒ | | ƒ | | ƒ | | ƒ | | ƒ | |  ƒ | | ƒ | | ƒ }	 | |  | ƒ | | | ƒ g }
 t |	 |
 ƒ | |  | ƒ | | | ƒ | |  ƒ | | ƒ | | ƒ | | ƒ k sþt ‚ d  S(   Ns   p,q,r,st   fghi(   R(   t   mapR!   R   t   get_permutedt   AssertionErrorR   (   t   pt   qt   rt   st   ft   gt   ht   it   Pt   exprt   perms(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_PermutationOperator   s    E70¢c          C   só  t  d ƒ \ }  } } } t  d d t ƒ\ } } } } t t d ƒ \ } }	 t }
 | |  | | | ƒ | | |  | | ƒ } t | |
 |  | ƒ g ƒ |
 |  | ƒ | |  | | | ƒ k s¼ t ‚ |
 |  | ƒ t | |  | | | ƒ ƒ } | |  | | | ƒ | | |  | | ƒ } t | |
 |  | ƒ g ƒ } | t | ƒ k s?t ‚ | |  | | | ƒ | | |  | | ƒ } t | |
 |  | ƒ g ƒ } | t | ƒ k sšt ‚ | |  | | | ƒ |	 | |  | | ƒ } t | |
 |  | ƒ g ƒ } | | k sït ‚ d  S(   Ns   a b c ds   p q r st   clst   fg(   R(   R   R.   R!   R   R   R0   R   (   t   at   bt   ct   dR1   R2   R3   R4   R5   R6   R9   R:   t   expectedt   result(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt$   test_index_permutations_with_dummies$   s"    (@((((c          C   s/  t  d ƒ \ }  } } } t d ƒ d k s0 t ‚ t d ƒ d k sH t ‚ t d t ƒ d t k sh t ‚ t t d d ƒ t d ƒ t d d ƒ t d k s£ t ‚ t t | g ƒ ƒ t | g ƒ k sÍ t ‚ t t d ƒ ƒ t d ƒ k sñ t ‚ t t d ƒ ƒ t d ƒ k st ‚ t t | ƒ ƒ t | ƒ k s9t ‚ t t | ƒ ƒ t | ƒ k s]t ‚ t t d ƒ t d ƒ ƒ t d ƒ t d ƒ k s•t ‚ t | | ƒ t | ƒ t | ƒ k sÁt ‚ t t | ƒ t | ƒ ƒ t | ƒ t | ƒ k sùt ‚ t t | ƒ d ƒ t t | ƒ ƒ d k s+t ‚ d  S(	   Ns   i,j,n,mi   g      ð?i   iþÿÿÿg      @i    i
   (	   R(   R    R0   R"   R#   R   R   R   R   (   R8   t   jt   nt   m(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_dagger@   s     ;*$$$$8,8c          C   sw   t  d ƒ \ }  } t |  ƒ } | j |  k s3 t ‚ | j sB t ‚ t d ƒ } | j d k sc t ‚ | j ss t ‚ d  S(   Ns   i,ji   (   R(   R   t   stateR0   t   is_symbolic(   R8   RF   t   o(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_operatorQ   s    c          C   s  t  d ƒ \ }  } } } t |  ƒ } t | ƒ d k s< t ‚ t | t ƒ sQ t ‚ | j |  | ƒ } | j t ƒ | h k s t ‚ t d ƒ } | j	 t
 | g ƒ ƒ t | d ƒ t
 | d g ƒ k sÌ t ‚ t | ƒ } | j	 t
 | g ƒ ƒ | t
 | g ƒ k s	t ‚ d  S(   Ns   i,j,n,ms   b^\dagger_{i}i    i   (   R(   R   R,   R0   t
   isinstanceR   t   subst   atomsR'   t   apply_operatorR   R%   (   R8   RF   RG   RH   RL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_create[   s    ?c          C   s	  t  d ƒ \ }  } } } t |  ƒ } t | ƒ d k s< t ‚ t | t ƒ sQ t ‚ | j |  | ƒ } | j t ƒ | h k s t ‚ t d ƒ } | j	 t
 | g ƒ ƒ t | ƒ t
 | d g ƒ k sÈ t ‚ t | ƒ } | j	 t
 | g ƒ ƒ | t
 | g ƒ k st ‚ d  S(   Ns   i,j,n,ms   b_{i}i    i   (   R(   R   R,   R0   RN   R   RO   RP   R'   RQ   R   R%   (   R8   RF   RG   RH   RL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_annihilateh   s    ;c          C   s¿  t  d ƒ \ }  } } } t d d d d d g ƒ } t | ƒ d k sK t ‚ | j d t t d ƒ ƒ k sp t ‚ | j d ƒ t d d d d d g ƒ k s  t ‚ | j d ƒ t d d d d d g ƒ k sÐ t ‚ x8 t d ƒ D]* }  | j |  ƒ j |  ƒ | k sÝ t ‚ qÝ W| j d ƒ d k s&t ‚ x* t d ƒ D] }  | |  |  k s3t ‚ q3Wt | | g ƒ } | j d ƒ t | d | g ƒ k st ‚ | j d ƒ t | d | g ƒ k s»t ‚ d  S(   Ns   i,j,n,mi    i   i   i   i   i   (	   R(   R   t   lenR0   t   argst   tupleR)   t   upt   down(   R8   RF   RG   RH   R4   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_basic_stateu   s    %00(+c          C   s   t  d ƒ \ }  } t  d d t ƒ\ } } | |  ƒ | | ƒ } t | d d ƒ t |  | ƒ | | ƒ | |  ƒ k s{ t ‚ d  S(   Ns   i,js   A,CR=   i    i   (   R(   R!   t   moveR   R0   (   R8   RF   t   At   CRL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt
   test_move1†   s    c          C   s€   t  d ƒ \ }  } t  d d t ƒ\ } } | | ƒ | |  ƒ } t | d d ƒ t |  | ƒ | |  ƒ | | ƒ k s| t ‚ d  S(   Ns   i,js   A,CR=   i    i   (   R(   R!   RZ   R   R0   (   R8   RF   R[   R\   RL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt
   test_move2   s    c          C   s¤   t  d ƒ }  t d ƒ t |  g ƒ } t | ƒ t |  ƒ t |  d g ƒ k sT t ‚ t d ƒ t |  g ƒ } t | ƒ t |  d ƒ t |  d g ƒ k s  t ‚ d  S(   NRG   i    i   (   R(   R   R   R   R%   R0   R   (   RG   t   e(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_basic_apply˜   s
    /c          C   s´   t  d ƒ \ }  } t d ƒ t d ƒ t d ƒ t d ƒ } t | t |  | g ƒ ƒ } t |  ƒ t | d ƒ d |  t d |  d | g ƒ } t | ƒ t | ƒ k s° t ‚ d  S(   Ns   n,mi    i   iÿÿÿÿ(   R(   R   R   R   R   R%   R    R0   (   RG   RH   RL   R_   t   answer(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_complex_apply    s
    *:c          C   s^   t  d ƒ }  t d ƒ t d ƒ } t | t |  g ƒ ƒ } | |  t |  g ƒ k sZ t ‚ d  S(   NRG   i    (   R(   R   R   R   R   R0   (   RG   RL   R_   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_number_operator¨   s    c          C   sÑ   t  d ƒ \ }  } } } t d g ƒ } t d g ƒ } t | t | ƒ ƒ d k sW t ‚ t | | ƒ d k sr t ‚ t |  | g ƒ } t | | g ƒ } t | | ƒ } | t |  | ƒ t | | ƒ k sÍ t ‚ d  S(   Ns   i,j,k,li    i   (   R(   R   R   R	   R    R0   R   (   R8   RF   t   kt   lt   s1t   s2R3   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_inner_product¯   s    !c          C   s}   t  d ƒ \ }  } t |  g ƒ } t | g ƒ } t d ƒ } t | | | ƒ } | t | ƒ t |  | d ƒ k sy t ‚ d  S(   Ns   n,mi    i   (   R(   R   R   R   R   R%   R   R0   (   RG   RH   Rf   Rg   RL   R_   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_symbolic_matrix_elements»   s    c          C   sÈ   t  d ƒ }  t d ƒ } t | |  ƒ } x> t d ƒ D]0 } | | | d f t | d ƒ k s4 t ‚ q4 Wt d ƒ } t | |  ƒ } x> t d ƒ D]0 } | | d | f t | d ƒ k s t ‚ q Wd  S(   Ni   i    i   i   (   R   R   R   R)   R%   R0   R   (   R@   RL   RH   R8   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_matrix_elementsÄ   s    .c          C   s  t  d ƒ \ }  } t |  ƒ t |  ƒ |  t d d ƒ } t | |  d d f ƒ } | j d t ƒ } t d d ƒ } t | | ƒ } d d d d d	 d d	 d d d
 d d d
 d d d d
 d d d d g } x: t	 t
 | ƒ ƒ D]& } | | | | | f k sÙ t ‚ qÙ Wd  S(   Ns   n,mi   i   i    i   t   deepi   i   i   i   i   i	   i
   i   (   R(   R   R   R#   R&   t   doitt   FalseR   R   R)   RT   R0   (   RG   RH   t   h_nt   HRL   R@   t   diagR8   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_shoÐ   s    'Ec          C   s³  t  d d t ƒ\ }  } t t d ƒ t d ƒ ƒ } | d k sE t ‚ t t d ƒ t d ƒ ƒ } | d k sr t ‚ t t |  ƒ t d ƒ ƒ } | t |  d ƒ k s¨ t ‚ t t d ƒ t d ƒ ƒ } t t | t	 |  g ƒ ƒ ƒ } | t	 |  g ƒ k sý t ‚ t t d ƒ t d ƒ ƒ } t t | t	 |  | g ƒ ƒ ƒ } | d k sLt ‚ t t
 | ƒ t | ƒ ƒ } | d 
d t t | ƒ t
 | ƒ ƒ k s˜t ‚ t t | ƒ t
 | ƒ ƒ } | j ƒ  d d t t | ƒ t
 | ƒ ƒ k sét ‚ t } t  d d t ƒ\ } } } | | | | ƒ | ƒ d k s.t ‚ | | | | ƒ | ƒ d k sRt ‚ | | | | | ƒ ƒ d k svt ‚ t  d	 d
 t ƒ\ } }	 }
 } t  d d t ƒ\ } } } } t  d ƒ \ } } } } t } | t | ƒ t
 | ƒ ƒ d t t
 | ƒ t | ƒ ƒ k st ‚ | t |	 ƒ t t | ƒ t
 | ƒ ƒ ƒ j d t ƒ | |	 | ƒ t | ƒ k sht ‚ | t | ƒ t
 | ƒ t | ƒ t
 |	 ƒ ƒ j d t ƒ d k s¯t ‚ d  S(   Ns   n,mt   above_fermii    i   iÿÿÿÿi   s   X,Y,Zt   commutatives   i,j,k,lt   below_fermis   a,b,c,ds   p,q,r,siþÿÿÿR   (   R(   t   TrueR
   R   R   R0   R   R$   R   R   R   R   R   R    Rm   Rl   (   RG   RH   RA   R_   R\   t   Xt   Yt   ZR8   RF   Rd   Re   R?   R@   RB   R1   R2   R3   R4   t   D(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_commutationß   s:    "16$$$AWc          C   s  t  d ƒ \ }  } } } t |  ƒ } t | t ƒ s9 t ‚ | j |  | ƒ } | j t ƒ | h k si t ‚ t d ƒ } | j t	 | g ƒ ƒ t	 d | g ƒ k s¥ t ‚ | j t	 | g ƒ ƒ t	 | d g ƒ k sÖ t ‚ t | ƒ } | j t	 g  ƒ ƒ t	 | g ƒ k st ‚ t	 g  d d ƒ} | t	 g  d d ƒk s<t ‚ t  d d t
 ƒ\ }  } } } t  d d t
 ƒ\ } }	 }
 } t  d	 ƒ \ } } } } t |  ƒ j t	 |  | | g d ƒ ƒ t	 | | g d ƒ k sÒt ‚ t | ƒ j t	 |  |	 | g d ƒ ƒ t	 | |  |	 | g d ƒ k st ‚ d  S(
   Ns   i,j,n,mi   t   fermi_leveli   s   i,j,k,lRt   s   a,b,c,dRr   s   p,q,r,s(   R(   R   RN   R   R0   RO   RP   R'   RQ   R   Ru   (   R8   RF   RG   RH   RL   t   vacuumRd   Re   R?   R@   RA   RB   R1   R2   R3   R4   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_create_f  s"    01*Bc          C   sE  t  d ƒ \ }  } } } t |  ƒ } t | t ƒ s9 t ‚ | j |  | ƒ } | j t ƒ | h k si t ‚ t d ƒ } | j t	 d | g ƒ ƒ t	 | g ƒ k s¥ t ‚ | j t	 | d g ƒ ƒ t	 | g ƒ k sÖ t ‚ t | ƒ } | j t	 | g ƒ ƒ t	 g  ƒ k st ‚ t  d d t
 ƒ\ }  } } } t  d d t
 ƒ\ } } }	 }
 t  d ƒ \ } } } } t |  ƒ j t	 |  | | g d ƒ ƒ d	 k s“t ‚ t | ƒ j t	 |  | | g d ƒ ƒ d	 k sÆt ‚ t | ƒ j t	 |  | | g d
 ƒ ƒ d	 k sùt ‚ t | ƒ j t	 |  | | g d ƒ ƒ t	 | |  | | g d ƒ k sAt ‚ d  S(   Ns   i,j,n,mi   s   i,j,k,lRt   s   a,b,c,dRr   s   p,q,r,si   i    i   (   R(   R   RN   R   R0   RO   RP   R'   RQ   R   Ru   (   R8   RF   RG   RH   RL   Rd   Re   R?   R@   RA   RB   R1   R2   R3   R4   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_annihilate_f  s"    01*333c          C   sõ   t  d ƒ \ }  } } } t |  ƒ } t | t ƒ s9 t ‚ | j |  | ƒ } | j t ƒ | h k si t ‚ t d ƒ } | j t	 | g ƒ ƒ t
 | d ƒ t	 | d g ƒ k s´ t ‚ t | ƒ } | j t	 | g ƒ ƒ | t	 | g ƒ k sñ t ‚ d  S(   Ns   i,j,n,mi    i   (   R(   R   RN   R   R0   RO   RP   R'   RQ   R   R%   (   R8   RF   RG   RH   RL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_create_b/  s    ?c          C   sy   t  d ƒ \ }  } } } t |  ƒ } t | t ƒ s9 t ‚ | j |  | ƒ } | j t ƒ | h k si t ‚ t d ƒ } d  S(   Ns   i,j,n,mi    (   R(   R   RN   R   R0   RO   RP   R'   (   R8   RF   RG   RH   RL   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_annihilate_b;  s    c          C   s¾  t  d d t ƒ\ }  } } } t |  ƒ t | ƒ } t | ƒ t t |  ƒ t | ƒ ƒ t |  | ƒ k so t ‚ t |  ƒ t | ƒ } t | ƒ t t |  ƒ t | ƒ ƒ k s³ t ‚ t |  ƒ t | ƒ t | ƒ t | ƒ } t | ƒ } t t |  | ƒ t | | ƒ t |  | ƒ t | ƒ t	 | ƒ t | | ƒ t |  ƒ t	 | ƒ t |  | ƒ t | ƒ t	 | ƒ t |  ƒ t | ƒ t	 | ƒ t	 | ƒ ƒ } | | k s¨t ‚ |  | | j
 ƒ  t |  | | ƒ k sÖt ‚ | |  | d j
 ƒ  t | |  | d ƒ k st ‚ t  d d t d t ƒ\ } } }	 }
 t  d d t d t ƒ\ } } } } t  d d t ƒ\ }  } } } t t | ƒ t t | ƒ t | ƒ ƒ t | ƒ ƒ t t | ƒ t | ƒ t | ƒ t | ƒ ƒ t | | ƒ t t | ƒ t | ƒ ƒ k st ‚ t t | ƒ t t | ƒ t | ƒ t |	 ƒ ƒ t | ƒ ƒ t t | ƒ t | ƒ t | ƒ t |	 ƒ t | ƒ ƒ t | | ƒ t t | ƒ t | ƒ t |	 ƒ ƒ k s¶t ‚ t t | ƒ t t | ƒ t |	 ƒ ƒ t |
 ƒ ƒ } | t | |	 ƒ t t | ƒ t |
 ƒ ƒ t | |
 ƒ t t | ƒ t |	 ƒ ƒ t | |	 ƒ t | |
 ƒ t | |
 ƒ t t | ƒ t |	 ƒ ƒ t t | ƒ t | ƒ t |	 ƒ t |
 ƒ ƒ k s¸t ‚ t t | ƒ t t | ƒ t | ƒ ƒ t | ƒ ƒ } | t | | ƒ t t | ƒ t | ƒ ƒ t | | ƒ t t | ƒ t | ƒ ƒ t | | ƒ t | | ƒ t | | ƒ t t | ƒ t | ƒ ƒ t t | ƒ t | ƒ t | ƒ t | ƒ ƒ k sºt ‚ d  S(	   Ns   p,q,r,sRr   i   s   i j k lRt   R=   s   a b c ds   p q r s(   R(   Ru   R   R   R   R   R   R0   R   R   R    R   (   R1   R2   R3   R4   t   strt   nstrt   fasitR8   RF   Rd   Re   R?   R@   RA   RB   R:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt
   test_wicksD  s:    ;.*ª.6$$3-3=7=6:6c          C   s_  t  d d t ƒ\ }  } } } t  d d t ƒ\ } } } } t  d d t ƒ\ } }	 }
 } t t | ƒ t |	 ƒ t | ƒ t | ƒ ƒ t t | ƒ t |	 ƒ ƒ t t | ƒ t | ƒ ƒ k sÆ t ‚ t t |  ƒ t t | ƒ t | ƒ ƒ ƒ t t |  ƒ t | ƒ t | ƒ ƒ k st ‚ t d ƒ d k s6t ‚ t |  ƒ |  k sNt ‚ t t | ƒ t | ƒ t | ƒ t | ƒ ƒ t t | ƒ t | ƒ t | ƒ ƒ t t | ƒ t | ƒ t | ƒ ƒ k sÎt ‚ t t | ƒ t | ƒ ƒ j ƒ  t | ƒ t | ƒ k st ‚ t t | ƒ t |  ƒ ƒ j ƒ  t | ƒ t |  ƒ k sJt ‚ t t | ƒ t |	 ƒ ƒ j t | ƒ t | ƒ t |  ƒ ƒ t t | ƒ t |	 ƒ ƒ t t |  ƒ t |	 ƒ ƒ k sÄt ‚ t t | ƒ t |	 ƒ ƒ j t |	 ƒ t | ƒ t |  ƒ ƒ t t | ƒ t | ƒ ƒ t t | ƒ t |  ƒ ƒ k s>t ‚ t t | ƒ t |	 ƒ ƒ j ƒ  } t	 | ƒ t | ƒ k s~t ‚ t t | ƒ t | ƒ ƒ t t | ƒ t | ƒ ƒ k s½t ‚ t t | ƒ t |  ƒ t | ƒ t | ƒ ƒ } g  | j
 ƒ  D] } | ^ qú} | d d g k s$t ‚ g  | j ƒ  D] } | ^ q1} | d	 d
 g k s[t ‚ d  S(   Ns   i j k lRt   s   a b c dRr   s   p q r sR=   i   i    i   i   (   R(   Ru   R   R   R   R   R0   t   _remove_bracketsRO   R   t   iter_q_creatorst   iter_q_annihilators(   R8   RF   Rd   Re   R?   R@   RA   RB   R1   R2   R3   R4   R:   t   not   indt   l1t   l2(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_NOw  s4    -?)/-#0>>;?;?"?0c          C   sv  t  d d t ƒ\ }  } t  d d t ƒ\ } } t  d ƒ \ } } t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k s„ t ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sÆ t ‚ t t | ƒ t |  ƒ g ƒ t | ƒ t |  ƒ g d f k st ‚ t t |  ƒ t | ƒ g ƒ t | ƒ t |  ƒ g d f k sJt ‚ t t | ƒ t |  ƒ g ƒ t | ƒ t |  ƒ g d f k sŒt ‚ t t |  ƒ t | ƒ g ƒ t | ƒ t |  ƒ g d f k sÎt ‚ t t | ƒ t |  ƒ g ƒ t |  ƒ t | ƒ g d f k st ‚ t t |  ƒ t | ƒ g ƒ t |  ƒ t | ƒ g d f k sRt ‚ t t | ƒ t |  ƒ g ƒ t |  ƒ t | ƒ g d f k s”t ‚ t t |  ƒ t | ƒ g ƒ t |  ƒ t | ƒ g d f k sÖt ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k st ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sZt ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sœt ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sÞt ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k s t ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sbt ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k s¤t ‚ t t | ƒ t | ƒ g ƒ t | ƒ t | ƒ g d f k sæt ‚ t t |  ƒ t | ƒ g ƒ t |  ƒ t | ƒ g d f k s(t ‚ t t | ƒ t |  ƒ g ƒ t |  ƒ t | ƒ g d f k sjt ‚ t t | ƒ t |  ƒ g ƒ t | ƒ t |  ƒ g d f k s¬t ‚ t t |  ƒ t | ƒ g ƒ t | ƒ t |  ƒ g d f k sît ‚ t t | ƒ t |  ƒ g ƒ t |  ƒ t | ƒ g d f k s0t ‚ t t |  ƒ t | ƒ g ƒ t |  ƒ t | ƒ g d f k srt ‚ d  S(   Ns   i,jRt   s   a,bRr   s   p,qi    i   (   R(   Ru   R   R   R   R0   (   R8   RF   R?   R@   R1   R2   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_sortingš  s6    BBBBBBBBBBBBBBBBBBBBBBBc          C   sä  t  d d t ƒ\ }  } } } t  d d t ƒ\ } } } } t  d ƒ \ } }	 }
 } t t |  ƒ t | ƒ ƒ t |  | ƒ k s„ t ‚ t t | ƒ t | ƒ ƒ t | | ƒ k s´ t ‚ t t | ƒ t |  ƒ ƒ d k sÛ t ‚ t t | ƒ t |  ƒ ƒ d k st ‚ t t |  ƒ t | ƒ ƒ d k s)t ‚ t t |  ƒ t | ƒ ƒ d k sPt ‚ t t |  ƒ t | ƒ ƒ t |  | ƒ k s€t ‚ t t t | ƒ t |	 ƒ ƒ ƒ } | j s°t ‚ t t t | ƒ t |	 ƒ ƒ ƒ } | j	 sàt ‚ d  S(   Ns   i,j,k,lRt   s   a,b,c,dRr   s   p,q,r,si    (
   R(   Ru   R   R   R   R   R0   R   t   is_only_below_fermit   is_only_above_fermi(   R8   RF   Rd   Re   R?   R@   RA   RB   R1   R2   R3   R4   t   restr(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_contractionÀ  s    00''''0!!c          C   s©  t  d ƒ \ }  } } t |  | ƒ t | | ƒ } t | ƒ t |  | ƒ k sR t ‚ t |  d ƒ t | | ƒ } t | ƒ t |  d ƒ t | | ƒ k sœ t ‚ t d | ƒ t | | ƒ } t | ƒ t d | ƒ k sÙ t ‚ t | d ƒ t | | ƒ } t | ƒ t d | ƒ k st ‚ t |  d ƒ t |  | ƒ t | d ƒ } t | ƒ d k sWt ‚ t d |  ƒ t d | ƒ t d | ƒ t d | ƒ } t | ƒ d k s¥t ‚ d  S(   Ns   i,j,ki    i   i   (   R(   R   R   R0   (   R8   RF   Rd   R3   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_evaluate_deltasÑ  s    !.!!)6c          C   sŸ  t  d d t d t ƒ\ }  } } } t  d d t d t ƒ\ } } } } t  d ƒ \ } }	 }
 } t } | d | | f |  | f ƒ | d | | f |  | f ƒ k s© t ‚ | d | | f |  | f ƒ | d | | f | |  f ƒ k së t ‚ | d | | f |  | f ƒ | d | | f | |  f ƒ k s.t ‚ | d | | f |  | f ƒ d k sXt ‚ | d | | f |  |  f ƒ d k s‚t ‚ | d | | | f |  | f ƒ | d | | | f |  | f ƒ k sËt ‚ | d | | | f |  | | f ƒ | d | | | f |  | | f ƒ k st ‚ | d | | f |  | f ƒ } | j | ƒ sLt ‚ | j | ƒ sat ‚ | j |  ƒ svt ‚ | j | ƒ s‹t ‚ | j | | ƒ | d | | f |  | f ƒ k sÁt ‚ d	 | j |  | ƒ d	 | d | | f | | f ƒ k sÿt ‚ | d | | f |  | f ƒ j | | ƒ | d | | f |  | f ƒ k sMt ‚ | d | |  f | | f ƒ j | | ƒ | d | |  f | | f ƒ k s›t ‚ d  S(
   Ns   i j k lRt   R=   s   a b c dRr   s   p q r st   ti    i   (   R(   Ru   R   R   R0   t   hasRO   (   R8   RF   Rd   Re   R?   R@   RA   RB   R1   R2   R3   R4   t   ATt   tabij(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_Tensorsè  s(    $$CBC**IN6>Nc          C   s¦  t  d d t ƒ\ }  } } } t  d d t ƒ\ } } } } t  d d t ƒ\ } }	 }
 } t d | f |	 f ƒ t t | ƒ t |	 ƒ ƒ } t d | |	 f |
 | f ƒ t t | ƒ t |	 ƒ t | ƒ t |
 ƒ ƒ d	 } t t t |  ƒ t | ƒ ƒ | d
 t d t ƒ} | t d | f |  f ƒ k s2t ‚ t t t |  ƒ t | ƒ t | ƒ t | ƒ ƒ | d
 t d t ƒ} | t d | | f |  | f ƒ k s¢t ‚ d  S(   Ns   i j k lRt   s   a b c dRr   s   p q r sR=   R5   t   vi   t   keep_only_fully_contractedt   simplify_kronecker_deltas(	   R(   Ru   R   R   R   R   R   R   R0   (   R8   RF   Rd   Re   R?   R@   RA   RB   R1   R2   R3   R4   t   Fockt   Vt   Fait   Vabij(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_fully_contracted  s    5#	$7	c          C   sz   t  d ƒ \ }  } t t |  | ƒ d ƒ t |  | ƒ d k sD t ‚ t t |  | ƒ d ƒ t |  | ƒ d k sv t ‚ d  S(   Ns   i,ji   i   (   R(   R   t   attR0   (   R8   RF   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt'   test_substitute_dummies_without_dummies  s    2c          C   s~   t  d d t ƒ\ }  } t t |  | ƒ t t |  ƒ t | ƒ ƒ t | |  ƒ t t | ƒ t |  ƒ ƒ ƒ d k sz t ‚ d  S(   Ns   i jR=   i    (   R(   R   R   R    R   R   R   R0   (   R8   RF   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt#   test_substitute_dummies_NO_operator  s    )c          C   sr   t  d d t ƒ\ }  } t t |  | ƒ t |  ƒ t | ƒ t | |  ƒ t | ƒ t |  ƒ ƒ d k sn t ‚ d  S(   Ns   i jR=   i    (   R(   R   R   R    R   R   R0   (   R8   RF   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt#   test_substitute_dummies_SQ_operator"  s    #c          C   sž   t  d d t d t ƒ\ }  } t  d d t d t ƒ\ } } t  d d t ƒ\ } } t d ƒ } t | |  | | ƒ | | | | ƒ d t ƒd	 k sš t ‚ d  S(
   Ns   i jRt   R=   s   a bRr   s   p qR5   t   new_indicesi    (   R(   Ru   R   R!   R   R0   (   R8   RF   R?   R@   R1   R2   R5   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt#   test_substitute_dummies_new_indices(  s
    c          C   s›   t  d d t d t ƒ\ }  } } } t d ƒ } d d l m } xT | |  | | | g d ƒ D]7 } t | | Œ  | |  | | | ƒ ƒ d k s\ t ‚ q\ Wd  S(	   Ns   i j k lRt   R=   R5   iÿÿÿÿ(   t
   variationsi   i    (   R(   Ru   R   R!   t   sympy.utilities.iterablesR¦   R   R0   (   R8   RF   Rd   Re   R5   R¦   t   permut(    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt*   test_substitute_dummies_substitution_order0  s
    $"c          C   sÅ  t  d d t ƒ}  t  d d t ƒ} t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t d ƒ } t d	 ƒ } t } | | | | | ƒ | | |  ƒ | | | ƒ | | | ƒ | | | | | ƒ | | |  ƒ | | | ƒ | | | ƒ | | | | | ƒ | | |  ƒ | | | ƒ | | | ƒ | | | | | ƒ | | |  ƒ | | | ƒ | | | ƒ g }	 xV |	 d
 D]J }
 | |	 d ƒ | |
 ƒ k s›t ‚ t |	 d ƒ t |
 ƒ k sst ‚ qsWd  S(   NR8   Rt   R?   Rr   s   k lR=   s   c dR˜   R“   i   i    (   R(   Ru   R   R!   R   R0   R   (   t   iit   aaRd   Re   RA   RB   R˜   R“   t   dumst   exprsR¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt*   test_dummy_order_inner_outer_lines_VT1T1T18  s    999?"c          C   só  t  d d t ƒ\ }  } t  d d t ƒ\ } } t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t d ƒ } t d	 ƒ }	 t }
 | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k sÛt ‚ t | d ƒ t | ƒ k s³t ‚ q³W| | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k sRt ‚ t | d ƒ t | ƒ k s*t ‚ q*W| | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ |	 | | ƒ | | | | | ƒ |	 | | ƒ |	 | |  ƒ |	 | | ƒ |	 | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k sÉt ‚ t | d ƒ t | ƒ k s¡t ‚ q¡Wd  S(   Ns   i jRt   s   a bRr   s   k lR=   s   c dR˜   R“   i   i    (   R(   Ru   R   R!   R   R0   R   (   Rª   t   jjR«   t   bbRd   Re   RA   RB   R˜   R“   R¬   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt,   test_dummy_order_inner_outer_lines_VT1T1T1T1Q  s8    FFFL"&
FFFL"&FFFL"c          C   sÊ  t  d d t d t ƒ\ }  } } } t  d d t d t ƒ\ } } } } t d ƒ } t d ƒ }	 t }
 | |  | | | ƒ |	 | |  ƒ |	 | | ƒ | | |  | | ƒ |	 | |  ƒ |	 | | ƒ | |  | | | ƒ |	 | |  ƒ |	 | | ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s#t ‚ t | d	 ƒ t | ƒ k sû t ‚ qû W| |  | | | ƒ |	 | |  ƒ |	 | | ƒ | | |  | | ƒ |	 | |  ƒ |	 | | ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k sÚt ‚ t | d	 ƒ t | ƒ k s²t ‚ q²W| |  | | | ƒ |	 | |  ƒ |	 | | ƒ | |  | | | ƒ |	 | |  ƒ |	 | | ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s‘t ‚ t | d	 ƒ t | ƒ k sit ‚ qiW| |  | | | ƒ |	 | |  ƒ |	 | | ƒ | | |  | | ƒ |	 | | ƒ |	 | |  ƒ | |  | | | ƒ |	 | |  ƒ |	 | | ƒ | | |  | | ƒ |	 | | ƒ |	 | |  ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s t ‚ t | d	 ƒ t | ƒ k sxt ‚ qxWd  S(
   Ns   i j k lRt   R=   s   a b c dRr   R˜   R“   i   i    (   R(   Ru   R   R!   R   R0   R   (   R8   RF   Rd   Re   R?   R@   RA   RB   R˜   R“   R¬   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt$   test_equivalent_internal_lines_VT1T1†  s8    $$,,2"&,2"&,2"&,,,2"c          C   sª  t  d d t d t ƒ\ }  } } } } } t  d d t d t ƒ\ } } } }	 }
 } t  d d t d t ƒ\ } } } } t  d d t d t ƒ\ } } } } d d	 l m } t d
 ƒ } t d ƒ } t } | | | | | ƒ | | | |  | ƒ | |  | | | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k sŸt
 ‚ t | ƒ t | ƒ k sQt
 ‚ qQW| | | | | ƒ | | | | |  ƒ | | |  | | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k s–t
 ‚ t | ƒ t | ƒ k sHt
 ‚ qHW| | | | | ƒ | | | |  | ƒ | | |  | | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k st
 ‚ t | ƒ t | ƒ k s?t
 ‚ q?W| | | | | ƒ | | | | |  ƒ | |  | | | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k s„t
 ‚ t | ƒ t | ƒ k s6t
 ‚ q6Wd  S(   Ns   i j k l m nRt   R=   s   a b c d e fRr   s   p1 p2 p3 p4s   h1 h2 h3 h4iÿÿÿÿ(   R¦   R˜   R“   i   (   R(   Ru   R   R§   R¦   R!   R   RO   t   zipt   nextR0   R   (   R8   RF   Rd   Re   RH   RG   R?   R@   RA   RB   R_   R5   t   p1t   p2t   p3t   p4t   h1t   h2t   h3t   h4R¦   R˜   R“   R¬   t   templatet
   permutatort   baseR¨   t   subslistR:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt(   test_equivalent_internal_lines_VT2conjT2²  sP    **$$;*";*";*";*c          C   s¼  t  d d t d t ƒ\ }  } } } } } t  d d t d t ƒ\ } } } }	 }
 } t  d d t d t ƒ\ } } } } t  d d t d t ƒ\ } } } } d d	 l m } t d
 ƒ } t d ƒ } t } | | | | | ƒ | | | |  | ƒ | | | |  | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k sŸt
 ‚ t | ƒ t | ƒ k sQt
 ‚ qQW| | | | | ƒ | | | | |  ƒ | | | |  | ƒ } | | | | |	 g d ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xt | D]l } t | | | | g | ƒ } | j | ƒ } | | ƒ | | ƒ k s–t
 ‚ t | ƒ t | ƒ k sHt
 ‚ qHWd  S(   Ns   i j k l m nRt   R=   s   a b c d e fRr   s   p1 p2 p3 p4s   h1 h2 h3 h4iÿÿÿÿ(   R¦   R˜   R“   i   (   R(   Ru   R   R§   R¦   R!   R   RO   R³   R´   R0   R   (   R8   RF   Rd   Re   RH   RG   R?   R@   RA   RB   R_   R5   Rµ   R¶   R·   R¸   R¹   Rº   R»   R¼   R¦   R˜   R“   R¬   R½   R¾   R¿   R¨   RÀ   R:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt8   test_equivalent_internal_lines_VT2conjT2_ambiguous_orderä  s0    **$$;*";*c       	   C   sC  t  d d t d t ƒ\ }  } } } t  d d t d t ƒ\ } } } } t d ƒ } t d ƒ }	 t }
 | |  | | | ƒ |	 | | |  | ƒ | | |  | | ƒ |	 | | |  | ƒ | |  | | | ƒ |	 | | |  | ƒ | | |  | | ƒ |	 | | |  | ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s3t ‚ t | d	 ƒ t | ƒ k st ‚ qW| |  | | | ƒ |	 | | |  | ƒ | |  | | | ƒ |	 | | |  | ƒ | |  | | | ƒ |	 | | | |  ƒ | |  | | | ƒ |	 | | | |  ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s&t ‚ t | d	 ƒ t | ƒ k sþt ‚ qþW| |  | | | ƒ |	 | | |  | ƒ | | |  | | ƒ |	 | | | |  ƒ | |  | | | ƒ |	 | | |  | ƒ | | |  | | ƒ |	 | | | |  ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k st ‚ t | d	 ƒ t | ƒ k sñt ‚ qñWd  S(
   Ns   i j k lRt   R=   s   a b c dRr   R˜   R“   i   i    (   R(   Ru   R   R!   R   R0   R   (   R8   RF   Rd   Re   R?   R@   RA   RB   R˜   R“   R¬   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt"   test_equivalent_internal_lines_VT2  s4    $$%%%+"&%%%+"&%%%+"c       	   C   sK  t  d d t ƒ\ }  } t  d d t ƒ\ } } t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t d ƒ } t d	 ƒ }	 t }
 | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k s£t ‚ t | d ƒ t | ƒ k s{t ‚ q{W| | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k sât ‚ t | d ƒ t | ƒ k sºt ‚ qºW| | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ g } xV | d
 D]J } |
 | d ƒ |
 | ƒ k s!t ‚ t | d ƒ t | ƒ k sùt ‚ qùWd  S(   Ns   i jRt   s   a bRr   s   k lR=   s   c dR˜   R“   i   i    (   R(   Ru   R   R!   R   R0   R   (   Rª   R¯   R«   R°   Rd   Re   RA   RB   R˜   R“   R¬   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_internal_external_VT2T26  s8    888>"&888>"&888>"c       	   C   sµ  t  d ƒ \ }  } t  d ƒ \ } } t  d d t ƒ\ } } t  d d t ƒ\ } } t d ƒ } t d ƒ }	 t }
 | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ | | | | | ƒ |	 | | |  | ƒ |	 | | | | ƒ g } xV | d D]J } |
 | d	 ƒ |
 | ƒ k s‹t ‚ t | d	 ƒ t | ƒ k sct ‚ qcWd  S(
   Ns   i js   a bs   k lR=   s   c dR˜   R“   i   i    (   R(   R   R!   R   R0   R   (   Rª   R¯   R«   R°   Rd   Re   RA   RB   R˜   R“   R¬   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_internal_external_pqrs]  s    888>"c          C   sÑ  t  d d t ƒ\ }  } t  d d t d t ƒ\ } } } t  d d t d t ƒ\ } } t  d d t ƒ\ } } t d ƒ }	 t d	 ƒ }
 t d
 ƒ } t } | |	 | | ƒ |
 | | ƒ ƒ | | g k sÍ t ‚ | |	 | | ƒ |
 | | ƒ ƒ | | g k st ‚ | |	 | | ƒ |
 | | ƒ ƒ | | g k s5t ‚ | |	 | | ƒ |
 | | ƒ ƒ | | g k sit ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k s­t ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k sñt ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k s5t ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k syt ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k s½t ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k st ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k sEt ‚ | |	 | | ƒ |
 | | ƒ | | | ƒ ƒ | | | g k s‰t ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k sÖt ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k s#t ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k spt ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k s½t ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k s
t ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k sWt ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k s¤t ‚ | |	 | |  | ƒ |	 | | | ƒ |	 | | | ƒ ƒ | | | g k sñt ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k s.t ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k skt ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k s¨t ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k såt ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k s"t ‚ | |	 | | | ƒ |
 | | | ƒ ƒ | | | g k s_t ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k sœt ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k sÙt ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k st ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k sSt ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k st ‚ | |
 | | | ƒ |	 | | | ƒ ƒ | | | g k sÍt ‚ d  S(   Ns   a bRr   s   k l mRt   R=   s   c ds   p qR[   R   R\   (   R(   Ru   R   R!   R   R0   (   R«   R°   Rd   Re   RH   RA   RB   R1   R2   R[   R   R\   R¬   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_dummy_order_well_definedr  sP    !4444DDDDDDDDMMMMMMMM===========c    '      C   sê  t  d d t ƒ\ }  } t  d d t d t ƒ\ } } } } } t  d d t d t ƒ\ } } }	 }
 } t  d d t ƒ\ } } t  d d t d t ƒ\ } } } } t  d	 d t d t ƒ\ } } } } t  d
 d t d t ƒ\ } } } } t  d d t d t ƒ\ } } } } t d ƒ } t d ƒ } d d l m }  | | | ƒ | | | ƒ | | | ƒ | | | ƒ | | | ƒ }! |  | | |	 |
 | g d ƒ }" |! j t | | | | | g t |" ƒ ƒ ƒ }# xY |" D]Q }$ t | | | | | g |$ ƒ }% |! j |% ƒ }& t	 |& ƒ t	 |# ƒ k sËt
 ‚ qËW| | | ƒ | | | ƒ | | | ƒ | | | ƒ | | | ƒ }! |  | | |	 |
 | g d ƒ }" |! j t | | | | | g t |" ƒ ƒ ƒ }# xY |" D]Q }$ t | | | | | g |$ ƒ }% |! j |% ƒ }& t	 |& ƒ t	 |# ƒ k sµt
 ‚ qµW| | | | | ƒ | | | | | ƒ | | | ƒ }! |  | | |	 |
 | g d ƒ }" |! j t | | | | | g t |" ƒ ƒ ƒ }# xY |" D]Q }$ t | | | | | g |$ ƒ }% |! j |% ƒ }& t	 |& ƒ t	 |# ƒ k s‘t
 ‚ q‘Wd  S(   Ns   a bRr   s	   i j k l mRt   R=   s	   a b c d es   p qs   p1 p2 p3 p4s   p5 p6 p7 p8s   h1 h2 h3 h4s   h5 h6 h7 h8R[   R   iÿÿÿÿ(   R¦   i   (   R(   Ru   R   R!   R§   R¦   RO   R³   R´   R   R0   ('   R«   R°   R8   RF   Rd   Re   RH   R?   R@   RA   RB   R_   R1   R2   Rµ   R¶   R·   R¸   t   p5t   p6t   p7t   p8R¹   Rº   R»   R¼   t   h5t   h6t   h7t   h8R[   R   R¦   R½   R¾   R¿   R¨   RÀ   R:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_dummy_order_ambiguousª  s@    ''$$$$C-"C-"5-c          G   s   t  d |  d  |  d ƒ S(   NR˜   i   (   R   (   RU   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   atvÕ  s    c          G   s^   t  |  ƒ d k r* t d |  d  |  d ƒ St  |  ƒ d k rZ t d |  d f |  d f ƒ Sd  S(   Ni   R“   i   i    i   (   RT   R   (   RU   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyR    Ù  s    c          C   s…  t  d d t ƒ}  t  d d t ƒ} t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ g } x4 | d D]( } t | d	 ƒ t | ƒ k sUt ‚ qUWd  S(
   NR8   Rt   R?   Rr   s   k lR=   s   c di   i    (   R(   Ru   R   RÐ   R    R   R0   (   Rª   R«   Rd   Re   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt-   test_dummy_order_inner_outer_lines_VT1T1T1_ATà  s    999?c    
      C   sI  t  d d t ƒ\ }  } t  d d t ƒ\ } } t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | ƒ t | | | | ƒ t | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | ƒ g } x5 | d D]) }	 t | d	 ƒ t |	 ƒ k sOt ‚ qOWt | | | | ƒ t | |  ƒ t | | ƒ t | | ƒ t | | ƒ t | | | | ƒ t | | ƒ t | |  ƒ t | | ƒ t | | ƒ g } x4 | d D]( }	 t | d	 ƒ t |	 ƒ k st ‚ qWd  S(
   Ns   i jRt   s   a bRr   s   k lR=   s   c di   i    (   R(   Ru   R   RÐ   R    R   R0   (
   Rª   R¯   R«   R°   Rd   Re   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt/   test_dummy_order_inner_outer_lines_VT1T1T1T1_ATô  s    FFL'FLc    
      C   s$  t  d d t d t ƒ\ }  } } } t  d d t d t ƒ\ } } } } t |  | | | ƒ t | |  ƒ t | | ƒ t | |  | | ƒ t | |  ƒ t | | ƒ t |  | | | ƒ t | |  ƒ t | | ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k sÝ t ‚ qÝ Wt |  | | | ƒ t | |  ƒ t | | ƒ t | |  | | ƒ t | |  ƒ t | | ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k srt ‚ qrWt |  | | | ƒ t | |  ƒ t | | ƒ t |  | | | ƒ t | |  ƒ t | | ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k st ‚ qWt |  | | | ƒ t | |  ƒ t | | ƒ t | |  | | ƒ t | | ƒ t | |  ƒ t |  | | | ƒ t | |  ƒ t | | ƒ t | |  | | ƒ t | | ƒ t | |  ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k sôt ‚ qôWd  S(   Ns   i j k lRt   R=   s   a b c dRr   i   i    (   R(   Ru   R   RÐ   R    R   R0   (
   R8   RF   Rd   Re   R?   R@   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt'   test_equivalent_internal_lines_VT1T1_AT  s*    $$,,2&,2&,2&,,,2c          C   s  t  d d t d t ƒ\ }  } } } } } t  d d t d t ƒ\ } } } }	 }
 } t  d d t d t ƒ\ } } } } t  d d t d t ƒ\ } } } } d d	 l m } t | | | | ƒ t | | |  | ƒ t |  | | | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k s3t ‚ q3Wt | | | | ƒ t | | | |  ƒ t | |  | | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k st ‚ qWt | | | | ƒ t | | |  | ƒ t | |  | | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k såt ‚ qåWt | | | | ƒ t | | | |  ƒ t |  | | | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k s¾t ‚ q¾Wd  S(   Ns   i j k l m nRt   R=   s   a b c d e fRr   s   p1 p2 p3 p4s   h1 h2 h3 h4iÿÿÿÿ(   R¦   i   (   R(   Ru   R   R§   R¦   RÐ   R    RO   R³   R´   R   R0   (   R8   RF   Rd   Re   RH   RG   R?   R@   RA   RB   R_   R5   Rµ   R¶   R·   R¸   R¹   Rº   R»   R¼   R¦   R½   R¾   R¿   R¨   RÀ   R:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt+   test_equivalent_internal_lines_VT2conjT2_AT3  sB    **$$;*";*";*";*c          C   sb  t  d d t d t ƒ\ }  } } } } } t  d d t d t ƒ\ } } } }	 }
 } t  d d t d t ƒ\ } } } } t  d d t d t ƒ\ } } } } d d	 l m } t | | | | ƒ t | | |  | ƒ t | | |  | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k s3t ‚ q3Wt | | | | ƒ t | | | |  ƒ t | | |  | ƒ } | | | | |	 g d
 ƒ } | j t | | | | g t	 | ƒ ƒ ƒ } xV | D]N } t | | | | g | ƒ } | j | ƒ } t
 | ƒ t
 | ƒ k st ‚ qWd  S(   Ns   i j k l m nRt   R=   s   a b c d e fRr   s   p1 p2 p3 p4s   h1 h2 h3 h4iÿÿÿÿ(   R¦   i   (   R(   Ru   R   R§   R¦   RÐ   R    RO   R³   R´   R   R0   (   R8   RF   Rd   Re   RH   RG   R?   R@   RA   RB   R_   R5   Rµ   R¶   R·   R¸   R¹   Rº   R»   R¼   R¦   R½   R¾   R¿   R¨   RÀ   R:   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt;   test_equivalent_internal_lines_VT2conjT2_ambiguous_order_AT]  s&    **$$;*";*c    
   	   C   su  t  d d t d t ƒ\ }  } } } t  d d t d t ƒ\ } } } } t |  | | | ƒ t | | |  | ƒ t | |  | | ƒ t | | |  | ƒ t |  | | | ƒ t | | |  | ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k sÈ t ‚ qÈ Wt |  | | | ƒ t | | |  | ƒ t |  | | | ƒ t | | |  | ƒ t |  | | | ƒ t | | | |  ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k stt ‚ qtWt |  | | | ƒ t | | |  | ƒ t | |  | | ƒ t | | | |  ƒ t |  | | | ƒ t | | |  | ƒ t | |  | | ƒ t | | | |  ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k sEt ‚ qEWd  S(   Ns   i j k lRt   R=   s   a b c dRr   i   i    (   R(   Ru   R   RÐ   R    R   R0   (
   R8   RF   Rd   Re   R?   R@   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt%   test_equivalent_internal_lines_VT2_ATx  s$    $$%%+&%%+&%%%+c    
   	   C   sÇ  t  d d t ƒ\ }  } t  d d t ƒ\ } } t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ g } x4 | d D]( }	 t | d	 ƒ t |	 ƒ k s]t ‚ q]Wt | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ g } x4 | d D]( }	 t | d	 ƒ t |	 ƒ k szt ‚ qzWt | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ g } x4 | d D]( }	 t | d	 ƒ t |	 ƒ k s—t ‚ q—Wd  S(
   Ns   i jRt   s   a bRr   s   k lR=   s   c di   i    (   R(   Ru   R   RÐ   R    R   R0   (
   Rª   R¯   R«   R°   Rd   Re   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_internal_external_VT2T2_AT˜  s,    888>&888>&888>c    
   	   C   su  t  d ƒ \ }  } t  d ƒ \ } } t  d d t ƒ\ } } t  d d t ƒ\ } } t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ t | | | | ƒ t | | |  | ƒ t | | | | ƒ g } x4 | d D]( }	 t | d ƒ t |	 ƒ k sEt ‚ qEWd  S(   Ns   i js   a bs   k lR=   s   c di   i    (   R(   R   RÐ   R    R   R0   (
   Rª   R¯   R«   R°   Rd   Re   RA   RB   R­   R¨   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   test_internal_external_pqrs_AT¸  s    888>c          C   s›   t  d ƒ }  d	 } d
 } t  d d t d t ƒ\ } } t  d d t d t ƒ\ } } t |  | | f | | f ƒ t |  | | f | | f ƒ k s— t ‚ d  S(   NR˜   RA   RB   Rd   Re   Rr   R=   Rt   (   RA   RB   (   Rd   Re   (   RA   RB   (   Rd   Re   (   R(   Ru   R   R   R0   (   R˜   t   virtual_indicest   occupied_indicesRA   RB   Rd   Re   (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt+   test_canonical_ordering_AntiSymmetricTensorÈ  s    N(h   t   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   t   sympyR   R    R!   R"   R#   R$   R%   R&   R'   R(   t   sympy.core.compatibilityR)   t   sympy.utilities.pytestR*   R+   t   sympy.printing.latexR,   R<   RE   RI   RM   RR   RS   RY   R]   R^   R`   Rb   Rc   Rh   Ri   Rj   Rq   Rz   R}   R~   R   R€   R„   RŒ   R   R‘   R’   R—   RŸ   R¡   R¢   R£   R¥   R©   R®   R±   R²   RÁ   RÂ   RÃ   RÄ   RÅ   RÆ   RÏ   RÐ   R    RÑ   RÒ   RÓ   RÔ   RÕ   RÖ   R×   RØ   RÛ   (    (    (    sC   lib/python2.7/site-packages/sympy/physics/tests/test_secondquant.pyt   <module>   st   ÄF				
													$						3	#	&											5	,	2	!	1	'		8	+					$	*		 	 	