+
    hT=                       ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
 ^ RIHt ^ RIHtHtHtHtHtHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5 ^ RI6H7t7H8t8H9t9 ^ RI:H;t; R t<R t=R t>R t?R t@R tAR tBR tCR tDR tER tFR tGR tHR tIR tJR tKR  tLR! tMR" tNR# tOR$ tPR% tQR& tRR' tSR( tTR) tU]8R* 4       tVR+ tWR, tXR- tYR. tZR/ t[R0 t\R1 t]R2 t^R3 t_R4 t`R5 taR6 tbR7 tcR8 tdR9 teR: tfR; tgR< thR= tiR> tjR? tkR@ tlRA tmRB tnRC toRD tpRE tqRF trRG tsRH ttRI tuRJ tvRK twRL txRM tyRN tzRO t{RP t|RQ t}RR t~RS tRT tRU tRV tRW# )X    )Sum)expand)Integer)Matrixeye)Indexed)Permutation)SRationalSymbolBasicAddWildFunction)Tuple)symbols)sqrt)	integrate)Array)TensorIndexTypetensor_indicesTensorSymmetryget_symmetric_group_sgsTensorIndex
tensor_mulTensAddriemann_cyclic_replaceriemann_cyclicTensMultensor_headsTensorManagerTensExpr
TensorHeadcanon_bp
tensorheadtensorsymmetry
TensorTypesubstitute_indicesWildTensorIndexWildTensorHead_WildTensExpr)raisesXFAILwarns_deprecated_sympy)diagc                     \        V \        4      '       d   V P                  V4      # \        V\        4      '       d   VP                  V 4      # W8H  # N)
isinstancer"   equals)arg1arg2s   &&@/usr/lib/python3/dist-packages/sympy/tensor/tests/test_tensor.py	_is_equalr7      sB    $!!{{4  	D(	#	#{{4  <    c                      \        R RR7      p \        RV 4      w  rr4\        RV .\        P                  ! ^4      4      w  rVV! V) 4      V! V4      ,          pVP                  4       p\        V4      R8X  g   Q hV! V4      V! V4      ,          pVP                  4       pW8X  g   Q hV! V4      V! V4      ,          p	V	P                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! W#) 4      V! W14      ,          pVP                  4       p\        V4      R8X  g   Q h\        R	V .\        P                  ! ^4      4      w  rjV! WC) 4      V! V4      ,          V
! V) 4      ,          pVP                  4       p\        V4      R
8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! WC) 4      V! V4      ,          V
! V) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! WC) 4      V! V) V4      ,          pVP                  4       p\        V4      R8X  g   Q hV! V) V4      V! V) V4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      p
V! WC4      V! V) V) 4      ,          V
! V) V) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! WC4      V! V) V) 4      ,          V
! V) V) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      p
V! WC4      V! V) V) 4      ,          V
! V) V) 4      ,          pVP                  4       p\        V4      R8X  g   Q hR# )LorentzL
dummy_namez	a,b,d0,d1A,BzA(L_0)*B(-L_0)z	A(a)*B(b)AzA(a, L_0)*A(b, -L_0)zB,CzA(L_0, L_1)*B(-L_0)*C(-L_1)zA(L_0, L_1)*B(-L_1)*C(-L_0)BzA(L_0, L_1)*B(-L_0, -L_1)zA(L_0, L_1)*B(-L_1, -L_0)Cz#A(L_0, L_1)*B(-a, -L_1)*C(-L_0, -b)z#A(L_0, L_1)*B(-a, -L_0)*C(-L_1, -b)z#A(L_0, L_1)*B(-a, -L_0)*C(-b, -L_1)N)	r   r   r    r   no_symmetryr$   strr#   fully_symmetric)r:   abd0d1r?   r@   ttct1rA   s              r6   test_canonicalize_no_slot_symrL      s   iC8G!+w7LA"y.*D*DQ*GHDA	2#quA	
Br7&&&& 	
!QqT	A	
B7N7	
1adB	Br7k!!! 	3	!^%C%CA%FGA	!S	!B(A	
Br7,,,, y.*D*DQ*GHDA	"c
1R5B3A	
Br73333
 	3	!^%?%?%BCA	"c
1R5B3A	
Br73333
 	3	!^%?%?%BCA	"c
1bS":A	
Br71111 	
2#r
1bS":A	
Br71111
 	3	!^%?%?%BCA	"	!QB*QsQBZ'A	
Br7;;;;
 	3	!^%C%CA%FGA	"	!QB*QsQBZ'A	
Br7;;;;
 	3	!^%C%CA%FGA	"	!QB*QsQBZ'A	
Br7;;;;r8   c                     \        R RR7      p \        RV 4      w  rr4\        RV .\        P                  ! ^4      4      pV! V4      V! V4      ,          V! V4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .\        P                  ! ^4      ^4      pV! V4      V! V4      ,          V! V4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! W$4      V! W14      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      ^4      pV! W$4      V! W14      ,          pVP                  4       p\        V4      R8X  g   Q hV! W14      V! W$4      ,          pVP                  4       p\        V4      R8X  g   Q hR	# )
r:   r;   r<   
a, b, c, dr?   zA(a)*A(b)*A(c)z-A(a)*A(b)*A(c)zA(a, c)*A(b, d)z-A(a, c)*A(b, d)N)r   r   r#   r   rB   r$   rC   rD   )r:   rE   rF   cdr?   rI   rJ   s           r6   test_canonicalize_no_dummiesrQ   l   s   iC8Gg6JA!
 	3	>#=#=a#@AA	!QqT	!A$A	
Br7&&&&
 	3	>#=#=a#@!DA	!QqT	!A$A	
Br7''''
 	3	!^%C%CA%FGA	!!A	
Br7''''
 	3	!^%C%CA%FJA	!!A	
Br7(((( 	
!!A	
Br7''''r8   c                      \        R 4      p \        RW .4      p\        RW .\        P                  ! ^4      4      pW8X  g   Q h\        RW .\        P                  ! ^4      4      pW8w  g   Q hR# )r:   r?   N)r   r#   r   rB   rD   )r;   A1A2A3s       r6   -test_tensorhead_construction_without_symmetryrV      sb    	"A	C!	 B	C!!;!;A!>	?B8O8	C!!?!?!B	CB8O8r8   c                  X   \        R R^ R7      p \        RV 4      w  rr4\        RV .^,          \        P                  ! ^4      4      pV! W!) 4      V! W) 4      ,          pVP                  4       p\        V4      R8X  g   Q hV! W#) 4      V! W) 4      ,          V! W2) 4      ,          V! WA) 4      ,          pVP                  4       p\        V4      R8X  g   Q hV! W) 4      V! W#) 4      ,          V! W4) 4      ,          V! WA) 4      ,          pVP                  4       p\        V4      R8X  g   Q hR# )	r:   r;   r=   metric_symmetryzd:4r?   zA(L_0, -L_1)*A(L_1, -L_0)z3A(L_0, -L_1)*A(L_1, -L_0)*A(L_2, -L_3)*A(L_3, -L_2)z3A(L_0, -L_1)*A(L_1, -L_2)*A(L_2, -L_3)*A(L_3, -L_0)N)r   r   r#   r   rB   r$   rC   )r:   rG   rH   d2d3r?   rI   rJ   s           r6   test_no_metric_symmetryr\      s    iCKG#E73NBB3	!^%?%?%BCA	"c
1R:A	
Br71111 	
"c
1R:aCj(2s3A	
Br7KKKK 	
"c
1R:aCj(2s3A	
Br7KKKKr8   c            
         \        R RR7      p \        RV 4      w
  rr4rVrxr\        RV .\        P                  ! ^4      4      pV! V) 4      V! V4      ,          pVP                  4       p\        V4      R8X  g   Q hV! V) 4      V! V) 4      ,          V! V	) 4      ,          V! V	4      ,          V! V4      ,          V! V4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .\        P                  ! ^4      ^4      pV! V) 4      V! V) 4      ,          V! V	) 4      ,          V! V	4      ,          V! V4      ,          V! V4      ,          pVP                  4       pV^ 8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! Wv4      V! W) 4      ,          V! W) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! Wv4      V! W) 4      ,          V! W) 4      ,          pVP                  4       p\        V4      R	8X  g   Q h\        RV .^,          \        P                  ! ^4      4      pV! WV4      V! W) V) 4      ,          pVP                  4       p\        V4      R
8X  g   Q hV! WV	4      V! W() V	) 4      ,          V! W) V4      ,          V! WEV) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV .^,          \        P                  ! ^4      4      p\        RV .^,          \        P                  ! R 4      4      pV! WxV	4      V! V	) V
) V) 4      ,          V! V) V
4      ,          pVP                  4       pV^ 8X  g   Q h\        RV .^,          \        P                  ! ^4      ^4      p\        RV .^,          \        P                  ! R 4      4      pV! WxV	4      V! V	) V
) V) 4      ,          V! V) V
4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RRR!R7      p\        RV4      w
  rr4rVrxr\        RV.^,          \        P                  ! ^4      ^4      p\        RV.^,          \        P                  ! R 4      4      pV! WxV	4      V! V	) V
) V) 4      ,          V! V) V
4      ,          pVP                  4       p\        V4      R8X  g   Q h\        R^ RR7      p\        RV4      w
  rr4rVrxr\        RV.^,          \        P                  ! ^4      ^4      p\        RV.^,          \        P                  ! R 4      4      pV! WxV	4      V! V	) V
) V) 4      ,          V! V) V
4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RV 4      w  pppppp\        RV .\        P                  ! ^4      ^4      p\        RV .^,          \        P                  ! R 4      ^4      p\        RV .^,          \        P                  ! R"4      ^4      pV! V) V) 4      V! V4      ,          V! VVV4      ,          pVP                  4       p\        V4      R8X  g   Q hV! VV4      V! VV4      ,          V! V) 4      ,          V! VV) V) 4      ,          pVP                  4       p\        V4      R8X  g   Q h\        RRR7      p\        RV4      w  rpppp\        RV 4      w  pp\        RV.^,          \        P                  ! ^R 4      4      p\        RV V.\        P                  ! ^4      4      pV! VV) V) 4      V! V) V) V) 4      ,          V! V) V4      ,          V! V) V4      ,          V! VV4      ,          V! VV4      ,          pVP                  4       p\        V4      R8X  g   Q hR# )#r:   r;   r<   za,a0,a1,a2,a3,b,d0,d1,d2,d3r?   zA(L_0)*A(-L_0)z,A(L_0)*A(-L_0)*A(L_1)*A(-L_1)*A(L_2)*A(-L_2)z!A(a, L_0)*A(b, L_1)*A(-L_0, -L_1)r@   z!A(b, L_0)*A(-L_0, L_1)*B(a, -L_1)zA(a, L_0, L_1)*A(b, -L_0, -L_1)zCA(a0, L_0, L_1)*A(a1, -L_0, L_2)*A(a2, a3, L_3)*A(-L_1, -L_2, -L_3)z1A(L_0, L_1, L_2)*A(-L_0, -L_1, L_3)*B(-L_2, -L_3)Spinorr
   rX   z2-A(S_0, S_1, S_2)*A(-S_0, -S_1, S_3)*B(-S_2, -S_3)MatM)rY   r=   z1A(M_0, M_1, M_2)*A(-M_0, -M_1, -M_3)*B(-M_2, M_3)zalpha,beta,gamma,mu,nu,rhoGammaz4-Gamma(L_0, L_1)*Gamma(rho)*Gamma(alpha, -L_0, -L_1)zGGamma(L_0, L_1)*Gamma(beta, gamma)*Gamma(-rho)*Gamma(alpha, -L_0, -L_1)FlavorFa,b,c,d,e,fzmu,nufzY-f(F_0, F_1, F_2)*f(-F_0, F_3, F_4)*A(L_0, -F_1)*A(-L_0, -F_3)*A(L_1, -F_2)*A(-L_1, -F_4)N)	r   r   r#   r   rB   r$   rC   rD   direct_product) r:   rE   a0a1a2a3rF   rG   rH   rZ   r[   r?   rI   rJ   r@   r^   r_   alphabetagammamunurhora   Gamma2Gamma3rb   rO   rP   effre   s                                    r6   test_canonicalize1rx      s%   iC8G4g> )A22""
 	3	>#=#=a#@AA	2#quA	
Br7&&&&
 	
2#q"vafQrU"1R5(2.A	
Br7DDDD
 	3	>#=#=a#@!DA	2#q"vafQrU"1R5(2.A	
B7N7
 	3	!^%C%CA%FGA	"1c1R:%A	
Br79999
 	3	!^%C%CA%FGA	"2sAaI%A	
Br79999
 	3	!^%C%CA%FGA	"!Qq#s^#A	
Br77777 	
""aC"o%aCn4Qrs^CA	
Br7[[[[ 	3	!^%C%CA%FGA3	!^%C%CB%GHA	""abS2#&&q"bz1A	
B7N7
 	3	!^%C%CA%FJA3	!^%C%CB%GHA	""abS2#&&q"bz1A	
Br7IIII
 X#rJF4f= )A22""3
N$B$B1$EqIA3
N$B$B2$FGA	""abS2#&&q"bz1A	
Br7JJJJ %s
CC4c: )A22""3a!?!?!BAFA3a!?!?!CDA	""abS2#&&q"bz1A	
Br7IIII 	3W= $E4Bw	%55a8!=E'1&66r:A?F'1&66r:A?FsRCs#F2r5$99A	
Br7LLLL 	r2vdE**5#;6vebS2#7NNA	
Br7____ X#6F&}f=A!Q2GW-FB3
N$A$A!R$HIA3&)>+E+Ea+HIA	!aR!QrA2r]"1bS!9,QsAY6qQx?"aHA	
Br7qqqqr8   c                      \        R 4      p \        RV 4      p\        V\        \        34      '       d   Q h\        V\
        4      '       g   Q hR# )r?   iN)r   r   r2   tuplelistr   )r?   rz   s     r6   "test_bug_correction_tensor_indicesr}   ?  sD     	AsAA!eT]++++a%%%%r8   c                     \        R RR7      p \        RV 4      w  rr4rVrxrr\        RV .^,          \        P                  ! 4       4      pV! WV) V) 4      pVP                  4       p\        V4      R8X  g   Q hV! V) W!) V4      V! WuW) 4      ,          V! V) V) V	) V
) 4      ,          V! V) V) V) V) 4      ,          V! W8W) 4      ,          V! WWK4      ,          pVP                  4       p\        V4      R8X  g   Q hR# )r:   r;   r<   zd0:12Rz-R(L_0, L_1, -L_0, -L_1)zR(L_0, L_1, L_2, L_3)*R(-L_0, -L_1, L_4, L_5)*R(-L_2, -L_3, L_6, L_7)*R(-L_4, -L_5, L_8, L_9)*R(-L_6, -L_7, L_10, L_11)*R(-L_8, -L_9, -L_10, -L_11)N)r   r   r#   r   riemannr$   rC   )r:   rG   rH   rZ   r[   d4d5d6d7d8d9d10d11r   rI   rJ   s                   r6   test_riemann_invariantsr   H  s   iC8Gw( 5BBBBBC 	3	!^%;%;%=>A	"2#sA	
Br70000 	
3$r#b!B"S/)!RCRC*<<	3$sB3s	bC,	--.rR_	=A	
Br7  l  l  l  lr8   c                     \        R RR7      p \        RV 4      w  rr4rVp\        RV 4      w  rrr\        RV 4      w  r\        RV .^,          \        P                  ! 4       4      pV! WW) 4      pVP                  4       pV^ 8X  g   Q hV! WW) 4      pVP                  4       p\        V4      R8X  g   Q hV! W#) W) 4      V! WV) V4      ,          pVP                  4       p\        V4      R8X  g   Q h\        R	V .^,          \        P                  ! ^4      4      pV! WvV) V4      V! WQW44      ,          V! V) V) 4      ,          V! V) V) 4      ,          V! V) V) 4      ,          pVP                  4       p\        V4      R
8X  g   Q hV! W8W4      V! W#) W4      ,          V! WV) V) 4      ,          pVP                  4       p\        V4      R8X  g   Q hR# )r:   r;   r<   zd0:7za0:6a,br   z-R(a, L_0, b, -L_0)z+-R(a, L_0, L_1, L_2)*R(b, -L_0, -L_1, -L_2)VzW-R(L_0, L_1, L_2, L_3)*R(-L_0, L_4, L_5, L_6)*V(-L_1, -L_4)*V(-L_2, -L_5)*V(-L_3, -L_6)z>R(a0, L_0, a2, L_1)*R(a1, a3, -L_0, L_2)*R(a4, a5, -L_1, -L_2)N)r   r   r#   r   r   r$   rC   rD   )r:   rG   rH   rZ   r[   r   r   r   rj   rk   rl   rm   a4a5rE   rF   r   rI   rJ   r   s                       r6   test_riemann_productsr   _  s   iC8G!/!@BBBB+FG<BBB%)DA3	!^%;%;%=>A	!CA	
B7N7 	
"CA	
Br7++++ 	
"c1c1RRC,,A	
Br7CCCC 	3	!^%C%CA%FGA	"2#r1RR,,QsRC[8B3DQsRC[PA	
Br7oooo 	
""!BR,,QrsRC-@@A	
Br7VVVVr8   c                     \        R 4      p \        R^V RR7      p\        RV4      w  r#rErgrrrrp\        RV.^,          \        P
                  ! R4      4      pV! W#V4      V! V) WV4      ,          V! V) W4      ,          V! V) V) V4      ,          V! V) V) V
4      ,          pVP                  4       pV^ 8X  g   Q hV! W#V4      V! V) WV4      ,          V! V) Wx4      ,          V! V) W4      ,          V! V) V	) V4      ,          V! V
) W4      ,          V! V) V) V4      ,          V! V) V) V4      ,          V! V) V) V4      ,          pVP                  4       pV^ 8X  g   Q hR# )DEuclE)rY   dimr=   zi0:15r?   Nrh   )r   r   r   r#   r   rD   r$   )r   r   i0i1i2i3i4i5i6i7i8i9i10i11i12i13i14r?   rI   rK   s                       r6   test_canonicalize2r     s`   sA61!LDw% 6B"bB###3q."@"@"DEA
 	
"Arc"L B3r-aRCm;Arc2#bMIA	
B7N7
 	
"Arc"L B3r-aBl:1bS"R=H	2#c	"cT#	''("cT#	778"cT#	GA	
B7N7r8   c                     \        R 4      p \        RV RRR7      p\        RV4      w  r#rEp\        RV.\        P
                  ! ^4      ^4      w  rxV! V4      V! V4      ,          p	V	P                  4       p
W8X  g   Q hV! V4      V! V4      ,          p	V	P                  4       p
W! V4      ) V! V4      ,          8X  g   Q hR# )r   r^   r
   r   rY   r=   a0:5chi,psiNrg   )r   r   r   r    r   rB   r$   )r   r^   rj   rk   rl   rm   r   chipsirI   rK   s              r6   test_canonicalize3r     s    sAX1bSQF#FF3NB"Ix1K1KA1NPQRHCBBA	
B7N7BBA	
B#b'#b'!!!!r8   c                      \        R ^R7      p \        RV 4      p\        RV .4      p\        V! V4      RV! V4      ,          4      pVP	                  4       V! V4      ) 8X  g   Q hR# )	Cartesianr   pKNrf   )r   r   r#   r   r$   )r   r   r   exprs       r6   test_canonicalize4r     sZ    3IsI&A3$AAaD3qt8%D==?qte###r8   c                  t   \        R ^R7      p \        RV 4      p\        RV .4      p\        R\        R7      p\        R4      p\        V! V4      V^ ^34      V! V4      ,          pVP                  4       P                  4       \        V! V4      V^ ^34      P                  4       V! V4      ,          8X  g   Q hR# )R3r   r   r   re   )clsxN)r   r   r#   r   r   r   as_dummyr$   )r   r   r   re   r   r   s         r6   test_canonicalize5r     s    	1	%BsBA3A"AAQqTAa7#ad*D==?##%1Q4!Aa)A)J)J)LqQRt)SSSSr8   c                     \        R 4      p \        RR^V RR7      p\        RV4      w  r#rEp\        P                  ! ^4      p\        \        ^4      !  pWx8X  g   Q hVP                  p	\        V	4      R8X  g   Q hVP                  VP                  8X  g   Q h\        RRR7      p
\        R	V
4      w  rV
P                  p	\        R
V
.^,          V4      p\        V! W) 4      P                  4       4      R8X  g   Q hR# )r   r:   gr;   )metric_namerY   r   r=   zm0:5zg(Lorentz,Lorentz)TSpacer<   zi0 i1r?   zA(TSpace_0, -TSpace_0)N)r   r   r   r   rD   r   metricrC   eps_dimr   r#   r$   )r   r:   m0m1m2m3m4sym2sym2nr   r   r   r   r?   s                 r6   test_TensorIndexTyper     s    sAiS!"#5G'8BBB))!,D3A67E==Aq6))))??gkk)))XH=FGV,FBA3
D)AqCy!!#$(@@@@r8   c            
        aaaaa	 \        R RR7      o\        RS4      w  ooo	p SP                  S8X  g   Q hSS) 8w  g   Q h\        RS.^,          \        P
                  ! ^4      4      w  opS! SS4      V! S) S	4      ,          pVP                  4       p\        RS4      pVSWD) S	.8X  g   Q h\        \        V3R l4       \        \        VVVV	3R l4       \        RSS.4      oS! R	R
4      S! \        R	S4      \        R
S4      4      8X  g   Q hS! R	R4      S! \        R	S4      \        R
SRR7      4      8X  g   Q hS! R	\        R
S4      4      S! \        R	S4      \        R
S4      4      8X  g   Q hR# )r:   r;   r<   a,b,c,dA BL_0c                     < \        ^S 4      # )   )r   )r:   s   r6   <lambda>test_indices.<locals>.<lambda>  s    ~a9r8   c                     < S ! SSS4      # r1    r?   rE   rF   rO   s   r6   r   r     s    q1Qxr8   r?   rE   rF   z-bFis_upN)r   r   tensor_index_typer    r   rD   get_indicesr   r,   
ValueErrorr#   )
rP   r@   rI   indicesr   r?   r:   rE   rF   rO   s
        @@@@@r6   test_indicesr     s{   iC8G	73JAq!Q')))7N7y{N,J,J1,MNDAq	!Aq!AwAmmoG
eW
%Cq#tQ''''
:9:
:'(3'*+AS#;!KW5'W57 7 7 7S$<1[g6(gUCE E E ES+c7+,+c72K2=c72K1M M M Mr8   c                  N   \         P                  ! ^4      \        \        ^4      4      8X  g   Q h\         P                  ! R4      \        \        ^R4      4      8X  g   Q h\         P                  ! R4      \         P                  ! R4      8X  g   Q h\         P                  ! R4      \         P                  ! ^4      8X  g   Q h\         P                  ! ^R^4      \         P                  ! ^4      8X  g   Q h\        \        ^4      4      \        \        ^4      !  8X  g   Q h\         P                  ! R4      p V P
                  ^8X  g   Q hV P                  \        ^ ^4      8X  g   Q hV P                  \        \        ^ ^4      ! ^^4      \        ^^4      ! ^^4      4      8X  g   Q hR# )   TNrh   rg   )
r   rD   r   ri   rB   rankbaser   
generatorsr	   )syms    r6   test_TensorSymmetryr     sz   ))!,.q123 3 3))"-.q$789 9 9((,&&r*+ + +))"-&&q)* * *((B2""1%& & &1!45/234 4 4 
(
(
,C88q==88uQ{""">>U;q!#4Q#:K1<MaQR<STTTTr8   c            	        aaaaaa \        R RR7      p \        RV 4      w  ooooV P                  o\        RV .^,          \        P
                  ! ^4      4      w  op\        \        VVVVV3R l4       \        \        VVV3R l4       \        \        VVVVVV3R l4       \        \        VVVV3R l4       \        \        VVVV3R	 l4       \        4       ;_uu_ 4        \        \        VVV3R
 l4       RRR4       \        \        VVV3R l4       \        \        VVV3R l4       R#   + '       g   i     L>; i)r:   r;   r<   r   r   c                  2   < S! SS4      S! S S4      ,          # r1   r   )rE   rF   rO   rP   r   s   r6   r   test_TensExpr.<locals>.<lambda>      qAwqAwr8   c                  @   < \         P                  S! S S4      ,          # r1   r
   One)rE   rF   r   s   r6   r   r     s    quuQq!W}r8   c                  N   < S ! SS4      S! SS4      ,           S! SS4      ,          # r1   r   )r?   rE   rF   rO   rP   r   s   r6   r   r     s!    !Q!Aq' 11Q7:r8   c                  \   < \         P                  S ! SS4      S! SS4      ,           ,          # r1   r   )r?   rO   rP   r   s   r6   r   r     s    quua1g!Q&78r8   c                  2   < S ! SS4      S ! SS4      ,           # r1   r   r   s   r6   r   r      s    qAw1a0r8   c                  $   < S ! SS4      ^,          # r   r   r?   rE   rF   s   r6   r   r     s    1Q7A:r8   Nc                  $   < ^S ! SS4      ,          # r   r   r   s   r6   r   r     s    1Q7
r8   c                  (   < \        S ! SS4      4      # r1   )absr   s   r6   r   r     s    AaGr8   )
r   r   r   r    r   rD   r,   r   r.   NotImplementedError)r:   r@   r?   rE   rF   rO   rP   r   s     @@@@@@r6   test_TensExprr     s    iC8G	73JAq!QAy{N,J,J1,MNDAq
:../
:,-
:::;
:89
:01 
 	!	!z-. 
"  23
 45	 
"	!s   $D11E	c                  0   \        R RR7      p \        RV .^,          4      pVP                  R8X  g   Q hVP                  W .8X  g   Q hVP                  ^8X  g   Q hVP
                  \        P                  ! ^4      8X  g   Q hVP                  ^ 8X  g   Q hR# )r:   r;   r<   r?   N)	r   r#   nameindex_typesr   symmetryr   rB   comm)r:   r?   s     r6   test_TensorHeadr     s    iC8G3	!$A66S====W....66Q;;::33A666666Q;;r8   c            	         \        4       P                  R8X  g   Q h\        4       P                  4       ^ 8X  g   Q h\        RRR7      p \	        RV 4      w  rr4rVp\        RV .^,          \        P                  ! ^4      4      w  rV! W#) 4      V	! W14      ,          p
\        V
4      P                  V
4      '       g   Q hV	! W14      V! W14      ,           pV! W#) 4      V,          p\        V4      R8X  g   Q hVP                  4       p\        V4      R8X  g   Q hVP                  4       p\        V4      R8X  g   Q hW,           p\        V4      R	8X  g   Q hVP                  4       p\        V4      R
8X  g   Q h\        RV .4      w  rpV! V4      ^,          p\        V4      R8X  g   Q h^V! V4      ,          p\        V4      R8X  g   Q hV! V4      ^V! V4      ,          ,           p
\        V
4      R8X  g   Q hV! V) 4      ^V! V) 4      ,          ,           p\        V4      R8X  g   Q hV! V4      p
W,          p\        V4      R8X  g   Q hVP                  4       p\        V4      R8X  g   Q hW,          pVP                  4       p\        V4      R8X  g   Q hVP                  4       p\        V4      R8X  g   Q hV! V4      ^V! V4      ,          ,           p
W,          pVP                  4       p\        V4      R8X  g   Q hV! V4      ^V! V4      ,          ,
          p
\        V
4      R8X  g   Q hV! V) 4      ^V! V) 4      ,          ,           pW,          pVP                  4       pVV! V4      V! V) 4      ,          ^V! V4      ,          V! V) 4      ,          ,
          8X  g   Q hV! V4      V! V4      ,          V! V4      V! V4      ,           ,          V! V4      V! V4      V! V4      ,           ,          V! V4      ^V! V4      ,          ,
          ,          ,           pVP                  4       pV^V! V4      ,          V! V4      ,          V! V4      ,          ^V! V4      ,          V! V4      ,          V! V4      ,          ,
          V! V4      V! V4      ,          V! V4      ,          ,           ^V! V4      ,          V! V4      ,          V! V4      ,          ,
          8X  g   Q hV! V4      V! V4      ,           ^V! V4      ,          ,           V! V4      V! V4      ,
          ,          p
V! V4      V! V4      ,           ^V! V4      ,          ,           V! V4      V! V4      ,
          ,          pW,           pVP                  4       pV^V! V4      ,          V! V4      ,          ^V! V4      ,          V! V4      ,          ,           ^V! V4      ,          V! V4      ,          ,           ^V! V4      ,          V! V4      ,          ,
          ^V! V4      ,          V! V4      ,          ,
          ^V! V4      ,          V! V4      ,          ,
          8X  g   Q hV! V4      V! V4      ,          ^,          p^V,          V! V4      V! V4      ,          8X  g   Q hV! V4      V! V4      ,           ^,          p^V,          V! V4      V! V4      ,           8X  g   Q h\        P                  V! V4      V! V) 4      ,          ,
          pVP                  4       pVV! V) 4      V! V4      ,          ,           pV^8w  g   Q hVP                  4       pVP                  ^4      '       g   Q h\        P                  V! V4      V! V) 4      ,          ,           pVV! V) 4      V! V4      ,          ,
          P                  4       P                  ^4      '       g   Q hV! W4      V	! W4      ,           pVP                  ^8X  g   Q hVV! W4      ,
          V	! W4      ,
          p
V
^ 8X  g   Q h^V! W) 4      V	! W) 4      ,           ,
          p^V! W) 4      V	! W) 4      ,           ,           p
VV
,           P                  4       P                  ^4      '       g   Q h^V! W) 4      ,           pW8w  g   Q hV\        P                   ! ^ . . . 4      8w  g   Q h\        V! V4      \        ^ V! V4      4      4      P                  4       V! V4      8X  g   Q hR# )r   r:   r;   r<   a,b,d0,d1,i,j,kr>   z"A(b, -L_0)*(A(L_0, a) + B(L_0, a))z+A(b, -L_0)*A(L_0, a) + A(b, -L_0)*B(L_0, a)z+A(a, L_0)*A(b, -L_0) + A(b, L_0)*B(a, -L_0)zBA(a, L_0)*A(b, -L_0) + A(b, -L_0)*B(L_0, a) + A(b, L_0)*B(a, -L_0)z-A(a, L_0)*A(b, -L_0) + 2*A(b, L_0)*B(a, -L_0)p,q,rz2*q(d0)z2*q(d0) + p(d0)z2*q(-d0) + p(-d0)zp(L_0)*(2*q(-L_0) + p(-L_0))z!p(L_0)*p(-L_0) + 2*p(L_0)*q(-L_0)z!p(-L_0)*p(L_0) + 2*q(-L_0)*p(L_0)z4p(L_0)*p(-L_0) + 4*p(L_0)*q(-L_0) + 4*q(L_0)*q(-L_0)z-2*q(d0) + p(d0)Nr   )r   argsdoitr   r   r    r   rD   r3   rC   r   r$   r
   r   r   r   	from_data)r:   rE   rF   rG   rH   rz   jkr?   r@   rK   t2at2t2br   qrrI   t3tz1s                       r6   	test_add1r    s,   9>>R9>>q   iC8G$%6@OAa!y{N,J,J1,MNDA	
1c1R8	B2;b!!!!
B(QrX
C	
1c3Br7::::	Br7CCCC	Br7CCCC
'Cs8[[[[
,,.Cs8FFFF7WI.GA!	"aAq6Y	!B%Aq6Y	
21R5Br7''''	
B3!ArcF(	Br7))))	
2B	Br74444	Br79999	B	Br79999	Br79999	
21R5B	B	Br7LLLL	
21R5Br7((((	
B3!ArcF(	B	B	B2q"v!B%2#....	!QqT	1Q4!A$;!A$!qt"4adQqtVm"DDA	

A!A$qtAaD 1QqT6!A$;qt#33ad1Q4i!nDq1vaPQd{STUVSWGWWWWW
A$1+!A$
1!	-B
A$1+!A$
1!	-B
A	

A!A$qta!fQqTk)AadF1Q4K7!AaD&1+E!A$qQRtSVWXYZ[X\V\]^_`]aVaaaaa	!QqT	!AQ3!A$qt)	
1!aAQ3!A$1+	!QrU
A	

A
aeAaDj.C!8O8
,,.C::a===	!QrU
A1"ad
N$$&--a0000	!!A'A66Q;;	
QqWqw	B7N7	Qq"X!R !A	
a2h1b!	"BF??##A&&&&	
Qq"XB8O8""1b"b1111 1Q4AaD)+002ad:::r8   c                  
   \        R RR7      p \        RV 4      w  rr4rVp\        RV .^,          \        P                  ! ^4      4      w  r\        RV .4      w  rp^ V! W4      ,          p\        V^ 4      '       g   Q h\        V\        P                  4      '       g   Q hV
! V4      V! W4      8w  g   Q hV! W) 4      V! W4      8w  g   Q h^ V! W4      V	! W4      ,           ,          ^ 8X  g   Q h^ V! W4      V	! W4      ,           ,          \        P                  J g   Q h^V! W4      V! W4      ,
          ,          \        P                  J g   Q hV
! V4      V! V4      ,           V! W4      8w  g   Q hV
! V4      V! V4      ,           V! W4      V	! W4      ,           8w  g   Q hV
! V4      V
! V4      ,
          ^ 8X  g   Q hV
! V4      V
! V4      ,
          \        P                  J g   Q h\        V! W4      V! W!4      4      '       g   Q hR# )r:   r;   r<   r   r>   r   N)r   r   r    r   rD   r7   r
   Zero)r:   rE   rF   rG   rH   rz   r   r   r?   r@   r   r  r  rI   s                 r6   test_special_eq_ner  q  s   iC8G*+<gFA"!y{N,J,J1,MNDA7WI.GA!	!A'	AQ???QQ41Q7??Q8qwag! A%%%ag! AFF***ag! AFF***Q4!A$;!A'!!!Q4!A$;!A'AaG++++Q4!A$;!Q4!A$;!&&   QqWag&&&&r8   c                     \        R RR7      p \        RV 4      w  rr4\        RV .^,          \        P                  ! 4       4      p\        RV .^,          \        P
                  ! R4      4      p^V! WW44      ,          V! WW#4      ,
          V! WW$4      ,           pWv! V) V) V) 4      ,          pVP                  4       pV^ 8X  g   Q h\        ^^4      V! WW44      ,          \        ^^4      V! WW#4      ,          ,
          \        ^^4      V! WW$4      ,          ,           pWv! V) V) V) 4      ,          pVP                  4       pV^ 8X  g   Q hV! W) V4      V! W#V) 4      ,           p	V	P                  4       p	V	^ 8X  g   Q hR# )r:   r;   r<   zm,n,p,qr   r?   Nrh   )r   r   r#   r   r   rD   r$   r   )
r:   mnr   r  r   r?   rK   r  rI   s
             r6   	test_add2r    sQ   iC8G	73JA!3	!^%;%;%=>A3	!^%C%CB%GHA	
1Q1=1Q1=	(1Q1=	8B	Aqb1"qbM	B	B7N7	!Q!a
	"Xa^Aa!J%>	>!QPQRSVWPZAZ	ZB	Aqb1"qbM	B	B7N7	!Raqbk!A	

A6M6r8   c            
         \        R RR7      p \        RV 4      w  r\        R4      w  r4rV\        RV .4      p\        RV .4      pV! V4      V! V) 4      ,          V^,          V^,          ,
          V^,          ,
          V^,          ,
          ,
          p	V	P                  V^,          ) V^,          V^,          V^,          V! V4      V! V) 4      ,          38X  g   Q hV^,          V^,          ,
          V^,          ,
          V^,          ,
          V! V4      V! V) 4      ,          ,
          p
V
P                  V^,          V^,          ) V^,          ) V^,          ) V! V4      ) V! V) 4      ,          38X  g   Q hV! V4      V! V) 4      ,          V^,          ,
          V^,          ,           V^,          ,           V^,          ,           pVP                  V^,          ) V^,          V^,          V^,          V! V4      V! V) 4      ,          38X  g   Q hV! V4      V! V) 4      ,          ^V^,          ,          ,           ^V^,          ,          ,
          ^V^,          ,          ,
          ^V^,          ,          ,
          V! V4      V! V) 4      ,          ,
          pVP                  ^V^,          ,          RV^,          ,          RV^,          ,          RV^,          ,          V! V4      V! V) 4      ,          V! V4      ) V! V) 4      ,          38X  g   Q hR# )	r:   r;   r<   zi0:2
E px py pzr?   r@   Nrf   )r   r   r   r#   r   )r:   r   r   r   pxpypzr?   r@   expr1expr2expr3expr4s                r6   	test_add3r    sb   iC8GFG,FBL)MA23	"A3	"AbE!RC&LAqD2q5L2q502q589E::1a4%QAr1uaeArcFlCCCCqD2q5L2q5 2q5(1R5B3<7E::!Q$QQQ2q"vFFFFbE!RC&L1a4"a%'"a%/"a%7E::1a4%QAr1uaeArcFlCCCCbE!RC&L1QT6!Ab!eG+aAg5"a%?!B%2#,NE::!AqD&"RU(Br1uHbQh"afqQSufUVXZWZU[m\\\\r8   c                    aa	a
a ^ RI Hp  \        RRR7      p\        RV4      w  o	o
op\        P
                  ! \        P                  . . . 4      p\        V4      R8X  g   Q h\        RV.^,          \        P                  ! ^4      4      w  op^V ,           S! S	S
4      ,          p\        V4      R8X  g   Q hVP                  W.8X  g   Q hVP                  ^8X  g   Q hVP                  . 8X  g   Q hVP                  ^V ,           8X  g   Q h\!        VP"                  4      S	^ 3S
^3.8X  g   Q hVP$                  S.8X  g   Q hS! S	S
4      p\        V4      R	8X  g   Q hVP                  W.8X  g   Q hVP                  ^8X  g   Q hVP                  . 8X  g   Q hVP                  ^8X  g   Q h\!        VP"                  4      S	^ 3S
^3.8X  g   Q hVP$                  S.8X  g   Q hS! S
) S	4      V! S	) S4      ,          S! S) V4      ,          p\'        VP)                  4       !  pW68X  g   Q h\'        . !  \        P
                  ! \        P                  . . . 4      8X  g   Q h\        P
                  ! ^. . . 4      p\+        R
. 4      p\        V! 4       4      R
8X  g   Q h\        V4      R8X  g   Q hV^8X  g   Q h\-        \.        VV	V
V3R l4       R# )r   )r   r:   r;   r<   r   1r   z(x + 1)*A(a, b)zA(a, b)rA   c                  2   < S ! SS4      S ! SS4      ,          # r1   r   r   s   r6   r   test_mul.<locals>.<lambda>  r   r8   N)	sympy.abcr   r   r   r   r   r
   r   rC   r    r   rD   r   r   dumcoeffsortedfree
componentsr   splitr#   r,   r   )r   r:   rP   rI   r@   tsrK   rA   r?   rE   rF   rO   s           @@@@r6   test_mulr&    su   iC8G	73JAq!Q!%%R,Aq6S==y{N,J,J1,MNDAq	
Q!QAq6&&&&==W....66Q;;55B;;77a!e!&&>q!fq!f----<<A3	
1aBr7i>>g////77a<<66R<<88q=="''?1v1v....==QC	1"aA2q!QB("A	QWWY	B7N7r?g//r2rBBBB!RR(A3Aqs8s??q6S==6M6
:./r8   c                     \        R RR7      p \        RV 4      w  rr4rVrx\        RV .^,          \        P                  ! ^4      4      w  r\        RV .4      pV! V4      pVP                  W#34      pW8X  g   Q hVP                  W34      pW! V4      8X  g   Q hVP                  W) 34      pW! V) 4      8X  g   Q hVP                  V) V34      pW! V) 4      8X  g   Q hVP                  V) V) 34      pW! V4      8X  g   Q hV	! WV4      pVP                  WQ3Wa) 34      pW! Wf) 4      8X  g   Q h\        WV3Wa) 34      pW! Wf) 4      8X  g   Q hV	! W4      V
! V) V) 4      ,          pVP                  W3W#34      pV	! W$4      V
! V) V) 4      ,          pW8X  g   Q h\        WV3W#34      pW8X  g   Q hV	! W4      V
! W4      ,           pVP                  W!) 34      pV	! W) 4      V
! W) 4      ,           pW8X  g   Q h\        WV) 34      pW8X  g   Q hR# )r:   r;   r<   i,j,k,l,m,n,p,qr>   r   N)r   r   r    r   rD   r#   r(   )r:   rz   r   r   lr  r  r   r  r?   r@   rI   rK   t1as                 r6   test_substitute_indicesr+    s4   iC8G+,=wGA!ay{N,J,J1,MNDA3	"A	!A	
		qf	%B7N7	
		qf	%B1::	
		q"g	&BA2;;	
		r1g	&BA2;;	
		rA2h	'B1::	!A	
		qfq"g	.B1b>>	A1v2w	/B1b>>	!1"qb	A	
		qfqf	-B
A'!QB)
C99	A1vv	.B99	!!A'A	
		q"g	&B
Ar(Qq"X
C99	AA2w	'B99r8   c                  v   \        R RR7      p \        RV 4      w  rr4\        RV .^,          \        P                  ! 4       4      pV! WW$4      p\        V4      p\        R^4      V! WW24      ,          \        ^^4      V! WW44      ,          ,           \        ^^4      V! WW$4      ,          ,           pWx8X  g   Q hR# )r:   r;   r<   zm:4r   Nrg   )r   r   r#   r   r   r   r   )	r:   r   r   r   r   r   rI   rK   r*  s	            r6   test_riemann_cyclic_replacer-    s    iC8G#E73NBB3	!^%;%;%=>A	""A		"B
2q/!BB+
+hq!nQrr=N.N
NQYZ[]^Q_`abdjl`qQq
qC99r8   c            	         \        R RR7      p \        RV 4      w  rr4rVrx\        RV .^,          \        P                  ! 4       4      p	V	! WW44      V	! WW#4      ,           V	! WWB4      ,           V	! WWC4      ,
          V	! WW24      ,
          V	! WW$4      ,
          p
W! V) V) V) V) 4      ,          p\        V4      pV^ 8X  g   Q hV	! WW44      V	! V) V) V) V) 4      ^V	! V) V) V) V) 4      ,          ,
          ,          p
\        V
4      pV^ 8X  g   Q hV	! WW44      p
\        V
4      pV\        R^4      V	! WW#4      ,          \        ^^4      V	! WW$4      ,          ,           \        ^^4      V	! WW44      ,          ,           8X  g   Q hV	! WW44      V	! V) V) WV4      ,          V	! V) V) V) V) 4      ^V	! V) V) V) V) 4      ,          ,           ,          p
\        V
4      pV^ 8X  g   Q hR# )r:   r;   r<   r(  r   Nrg   )r   r   r#   r   r   r   r   )r:   rz   r   r   r)  r  r  r   r  r   rI   r  r  rK   s                 r6   test_riemann_cyclicr/    s   iC8G+,=wGA!a3	!^%;%;%=>A	!a
Qq1Z!A*,	!a
	q1Z	 "#A*	-A	
1aRA2qb>	B		B7N7	!a
Aqb!QBrNQq!QBr1"~%556A		B7N7	!a
A		B"a1.!Q!1MMPXYZ\]P^_`abgh_lPlllll	!a
1aR1<A2qb!QB!Aqb!QBrN2B!BCA		B7N7r8   c                     \        R RR7      p \        RV 4      w  rr4\        RV .^,          \        P                  ! 4       4      pV! WV) V4      pV\        ^4      ,          p\        V4      R8X  g   Q hVP                  4       pVP                  '       d   Q hV^,          pVP                  '       g   Q hV^,          pVP                  '       g   Q hR# )r:   r;   r<   zm0:4r   z(1/4)*R(m0, L_0, -L_0, m3)N)	r   r   r#   r   r   r
   rC   r$   _is_canon_bp)r:   r   r   r   r   r   rI   rK   s           r6   test_divr2    s    iC8G#FG4NBB3	!^%;%;%=>A	"BA	
1Q4Br72222	

A	
1B????	AB????r8   c                  "   \        R 4      p \        RV RR7      p\        RV4      w  r#rEpVP                  p\	        RV.4      pV! W#4      V! V) 4      ,          p	V	P                  V4      p
W! V4      8X  g   Q h\        RV.^,          \        P                  ! ^4      4      w  rV! W#4      V! V) V4      ,          V! WV4      ,          p
V
P                  V4      pW8X  g   Q hV! W#4      V! V) V4      ,          V! V) V4      ,          p
V
P                  V4      pWV! W%4      ,          V! V) V4      ,          8X  g   Q hV! W#4      V! V) V) 4      ,          V! WE4      ,          p
V
P                  V4      pW! W$4      V! V) V4      ,          8X  g   Q hV! W#4      V! V) V) 4      ,          V! WB) 4      ,          p
V
P                  V4      p\        W! W#4      V! V) V) 4      ,          4      '       g   Q hV! W#4      V! V) V) 4      ,          V! WE4      ,          V! V) V) 4      ,          p
V
P                  V4      p\        W! W#4      V! V) V) 4      ,          4      '       g   Q hV! W#4      V! V) V) 4      ,          p
V
P                  V4      p\        W! W") 4      4      '       g   Q hVP                  '       d   Q h\        RRR7      p\        RV4      w  r#VP                  p\        V! W") 4      P                  V4      VP                  4      '       g   Q hR	# )
r   r:   r;   r   r=   	a,b,c,d,er   r>   r<   r   N)r   r   r   r   r#   contract_metricr    r   rD   r7   r"  r   )r   r:   rE   rF   rO   rP   rv   r   r   rI   rK   r?   r@   r  s                 r6   test_contract_metric1r7  '  s   sAiQ3?G";8MA!A3	"A	!1"A	
		1	B1::y{N,J,J1,MNDA 
11"Q!	B			A	B8O8 
11"Q1"a	 B			A	B1Q71aR8#### 
11"aR1	 B			A	B1A2q!!!! 
11"aR1b	!B			A	BR1A2r*++++	
11"aR1	 A2r	*B			A	BR11"aR))))	
11"aRB			A	BR1b""""www;iC8G%)DAAQq"X--a0'++>>>>r8   c                     \        R 4      p \        RV RR7      p\        RV4      w  r#rErgVP                  p\	        RV.4      w  rV! W#4      V	! V4      ,          V	! V) 4      ,          p^V! V) V) 4      ,          V
! V4      ,          V
! V) 4      ,          pW,          pVP                  V4      pV^V ,          V	! V4      ,          V	! V) 4      ,          V
! V4      ,          V
! V) 4      ,          8X  g   Q hV! W#4      V	! V4      ,          V	! V) 4      ,          p^V
! V) 4      ,          V
! V) 4      ,          pW,          pVP                  V4      pVP                  4       pV^V	! V4      ,          V	! V) 4      ,          V
! V4      ,          V
! V) 4      ,          8X  g   Q h^V! W#4      ,          V	! V4      ,          V	! V) 4      ,          pRV! V) V) 4      ,          V
! V4      ,          V
! V) 4      ,          pW,          pVP                  V4      p^V! W#4      ,          V! V) V) 4      ,          V	! V4      ,          V	! V) 4      ,          V
! V4      ,          V
! V) 4      ,          pVP                  V4      p^V! W#4      ,          V	! V4      ,          V	! V) 4      ,          pV
! V) 4      V
! V) 4      ,          ^V! V) V) 4      ,          V
! V4      ,          V
! V) 4      ,          ,           pW,          pVP                  V4      pV^^V ,          ,           V	! V4      ,          V	! V) 4      ,          V
! V4      ,          V
! V) 4      ,          8X  g   Q hV	! V4      V	! V4      ,          V	! V4      V
! V4      ,          ,           ^V! W#4      ,          V	! V4      ,          V	! V) 4      ,          ,           pV
! V) 4      V
! V) 4      ,          V! V) V) 4      V
! V4      ,          V
! V) 4      ,          ,
          pW,          pVP                  V4      p^^V ,          ,
          V	! V4      ,          V	! V) 4      ,          V
! V4      ,          V
! V) 4      ,          V	! V4      V
! V) 4      ,          V	! V4      ,          V
! V) 4      ,          ,           p\        W,
          4      ^ 8X  g   Q hV! W#4      V! WE4      ,          V! V) V) 4      ,          pVP                  V4      pW! W%4      8X  g   Q hV! W#4      V! WE4      ,          V! W$4      V! W54      ,          ,           V! W%4      V! W44      ,          ,           pVP                  W") 3W3) 3WD) 3WU) 34      pW,          pVP                  V4      pVP                  ^V ^,          ,          ^V ,          ,           4      '       g   Q h^V	! V4      ,          V! W3) 4      ,          pVP                  V4      pVP                  ^V ,          V	! V4      ,          4      '       g   Q h^V	! V4      ,          V! W2) 4      ,          pVP                  V4      pV^V	! V4      ,          8X  g   Q h\        R4      pV	! V4      V	! V4      ,          V! W#4      V^,          ,          ,           V! V) V) 4      ,          W^,          ,          ,
          pVP                  V4      pW! V4      V	! V) 4      ,          8X  g   Q h\        RV.^,          \        P                  ! ^4      4      pV! W#4      V	! V4      ,          V! V) V) 4      ,          pVP                  V4      p\        V4      R8X  g   \        V4      R	8X  g   Q hR
# R
# )r   r:   r;   r4  za,b,c,d,e,L_0zp,qr`   r?   zA(L_1, -L_1)*p(L_0)zA(-L_1, L_1)*p(L_0)Nrh   )r   r   r   r   r    r6  r$   r(   r3   r#   r   rD   rC   )r   r:   rE   rF   rO   rP   rv   r   r   r   r  rK   r  rI   r`   r?   s                   r6   test_contract_metric2r9  S  s   sAiQ3?G'AA!Ay)DA	
1!QrU	B	
1aR8AaDA2	B
A	!A!AaDA2qt#AqbE))))	
1!QrU	B	
1aR5A2B
A	!A	

A!A$q!uQqT!!QB%''''	
1Q6!A$q!u	B	Qr1"Xad	1aR5	 B
A	!A	!A&A2qb!A$q!u$QqT)!QB%/A	!A	
1Q6!A$q!u	B	
A2q!uqA2qbz!A$q!u,	,B
A	!AQqS!A$q!u$QqT)!QB%////	
1adQqT!A$Y	1Q6!A$q!u!4	4B	
A2q!uq!QBx!}QrU*	*B
A	!A
ac'1Q41"	ad	"1aR5	(1Q41":ad?1aR5+@	@BAFq   	!qvaA2hA	
		1	B1==	
1!1!	&1!	6B			"vqfaVQrF	;B
A	!A88AadFQqSL!!!!	!A$q2wA	
		1	B99QqS1X	!A$q2wA	
		1	B1Q4<<sA	
1adQqWQT\	!1aR!9,qAv5A	
		1	B1ae3	!^%C%CA%FGA	!#q!aRy A	
		1	Br7++s2w:O/OOO/O+r8   c                     \        R 4      p \        RV RRR7      p\        RV4      w  r#rEpVP                  p\	        RV.\
        P                  ! ^4      ^4      w  r\        RV.^,          \
        P                  ! ^4      4      p
V! W") 4      pVP                  V4      pVP                  V ) 4      '       g   Q hV! V) V4      pVP                  V4      pVP                  V 4      '       g   Q hV! W#4      V! V) V) 4      ,          pVP                  V4      pVP                  V 4      '       g   Q hV! W24      V! V) V) 4      ,          pVP                  V4      pVP                  V ) 4      '       g   Q hV! V) V4      V! W#) 4      ,          pVP                  V4      pVP                  V ) 4      '       g   Q hV! W2) 4      V! W#) 4      ,          pVP                  V4      pVP                  V 4      '       g   Q hV! W#4      V
! V) V) 4      ,          pVP                  V4      pVP                  4       p\        W! W") 4      4      '       g   Q hV! W24      V
! V) V) 4      ,          pVP                  V4      p\        W! W") 4      ) 4      '       g   Q hV! W#) 4      V
! W2) 4      ,          pVP                  V4      p\        W! W") 4      ) 4      '       g   Q hV! V) V4      V
! V) V4      ,          pVP                  V4      p\        W! W") 4      ) 4      '       g   Q hV! V) V) 4      V
! W24      ,          pVP                  V4      p\        W! W") 4      4      '       g   Q hV! V) V4      V
! W2) 4      ,          pVP                  V4      p\        W! W") 4      4      '       g   Q hV! W#4      V	! V) 4      ,          pVP                  V4      p\        W! V4      4      '       g   Q hV! W24      V	! V) 4      ,          pVP                  V4      p\        W! V4      ) 4      '       g   Q hV! W#4      V! V) 4      ,          V	! V) 4      ,          pVP                  V4      p\        W! V4      ) V	! V) 4      ,          4      '       g   Q hV! W24      V! V) 4      ,          V	! V) 4      ,          pVP                  V4      p\        W! V4      V	! V) 4      ,          4      '       g   Q hV! V) V4      V! V) 4      ,          V	! V4      ,          pVP                  V4      p\        W! V) 4      V	! V4      ,          4      '       g   Q hV! W#) 4      V! V) 4      ,          V	! V4      ,          pVP                  V4      p\        W! V) 4      ) V	! V4      ,          4      '       g   Q hV! V) V) 4      V! V4      ,          V	! V4      ,          pVP                  V4      p\        W! V) 4      V	! V4      ,          4      '       g   Q hV! V) V) 4      V! V4      ,          V	! V4      ,          pVP                  V4      p\        W! V) 4      ) V	! V4      ,          4      '       g   Q hV! V) V) 4      V
! W$4      ,          V	! V4      ,          pVP                  V4      p\        W! V) V4      ) V	! V4      ,          4      '       g   Q hV! W24      V
! V) V) 4      ,          V	! V) 4      ,          pVP                  V4      p\        W! V) V4      V	! V) 4      ,          4      '       g   Q hR# )	r   r^   r
   r   r   r   r@   Nrg   )r   r   r   r   r    r   rB   r#   r6  r3   r$   r7   )r   r^   rj   rk   rl   rm   r   rA   r   r   r@   rI   rK   s                r6   test_metric_contract3r;    so   sAX1bSQF'7BBBAIx1K1KA1NPQRHC3
N$>$>q$ABA	"S	A	
		1	B99aR===	2#b	A	
		1	B99Q<<<	"B3sA	
		1	B99Q<<<	"B3sA	
		1	B99aR===	2#b	!Bs)A	
		1	B99aR===	"S	!Bs)A	
		1	B99Q<<<	"B3sA	
		1	B	BR2c####	"B3sA	
		1	BR!Bs)$$$$	"S	!Bs)A	
		1	BR!Bs)$$$$	2#b	!RC)A	
		1	BR!Bs)$$$$	2#rc
1R8A	
		1	BR2c####	2#r
1R9A	
		1	BR2c####	"bSA	
		1	BRR!!!!	"bSA	
		1	BR#b'""""	"bS#rc("A	
		1	BR#b'#rc(*++++	"bS#rc("A	
		1	BRRbS)****	2#b	#rc(3r7"A	
		1	BRbS#b')****	"S	#rc(3r7"A	
		1	BR#rc(3r7*++++	2#rc
3r73r7"A	
		1	BRbS#b')****	2#rc
3r73r7"A	
		1	BR#rc(3r7*++++	2#rc
1R8CG#A	
		1	BR!RC)CG+,,,,	"B3sCH$A	
		1	BRB3r3s8+,,,,r8   c                  "   \        R ^R7      p \        RV 4      w  rpV P                  pV P                  p\	        RV .4      pV! WV4      V! V) 4      V! V) 4      ,          V! V) V) 4      ,           ,          pVP                  V4      ^ 8X  g   Q hR# )r   r   p q rr   N)r   r   deltaepsilonr#   r6  )r   r   r  r  r>  epsr   r   s           r6   test_contract_metric4rA    s    	1	%BWb)GA!HHE
**C3A q1:1"aeeQBrl24D&!+++r8   c                  "   \        R ^R7      p \        RV 4      w  rpV P                  p\        RV .4      p\	        R4      p\        R4      p^V! V4      ,           V! V) 4      ,          V! V) 4      ,          pVP                  V4      V8X  g   Q hR# )r   r   r=  r   rc   r   N)r   r   r>  r#   r   r   r6  )	r   r   r  r  r>  r   rc   r   r   s	            r6   test_contract_metric5rC    s    	1	%BWb)GA!HHE3AAsA adFAqbE>!QB%D&$...r8   c                     \        R ^RR7      p \        RV 4      w  rr4pV P                  p\        RV .4      w  rxrV! W!W44      pVP	                  4       pW! WW44      ) 8X  g   Q hV! W2WA4      pVP	                  4       pW! WW44      8X  g   Q hV! W1WB4      pVP	                  4       pW! WW44      ) 8X  g   Q hV! WW44      V! V) 4      ,          V! V) 4      ,          pVP	                  4       pW! W4W4      V! V) 4      ,          V! V) 4      ,          8X  g   Q hV! W2WA4      V! V) 4      ,          V! V) 4      ,          pVP	                  4       pW! W4W4      V! V) 4      ,          V! V) 4      ,          8X  g   Q hV! W1WB4      V! V) 4      ,          V! V) 4      ,          pVP	                  4       pW! W4W4      ) V! V) 4      ,          V! V) 4      ,          8X  g   Q hV! W1WB4      V! V) 4      ,          V! V) 4      ,          pVP	                  4       pV^ 8X  g   Q hV! W1WB4      V! V) 4      ,          V! V) 4      ,          V! WW44      V! V) 4      ,          V! V) 4      ,          ,           pVP	                  4       pVRV! W4W4      ,          V! V) 4      ,          V! V) 4      ,          8X  g   Q h\        R \        ^4      RR7      p V P                  p\        V\        4      '       g   Q hR# )r:   r;   r4  r5  zp,q,r,sNrf   )r   r   r?  r    r$   r   r2   r#   )r:   rE   rF   rO   rP   rv   r?  r   r  r  srI   rK   s                r6   test_epsilonrF    s   iQ3?G";8MA!ooGi'3JA!AA	
B'!a"""""AA	
BQ!!!!AA	
B'!a"""""AA2q!u$A	
BQ!!QB%'1"----AA2q!u$A	
BQ!!QB%'1"----AA2q!u$A	
B'!a""1aR5(A2....AA2q!u$A	
B7N7AA2q!u$wq1'71"'=ae'CCA	
BGA$$QrU*1aR50000 iWQZCHGooGgz****r8   c            	        aaaa \        R 4      o\        RSRR7      p \        RV 4      w  rr4rVV P                  oV3R loV3R loVVV3R lpVV3R lpV! W) WV) 4      V! We) WC) 4      ,          p	V	P	                  S4      p
\        W! W) WC) 4      ,
          4      ^ 8X  g   Q hV! W) WV) 4      V! We) WC) 4      ,          p	V	P	                  S4      p
W! W) WC) 4      8X  g   Q hV! W) WV) 4      V! We) WC) 4      ,          p	V	P	                  S4      p
V
^ 8X  g   Q hV! W) W!) 4      p	V	P	                  S4      p
V
P                  S^,          ^,
          4      '       g   Q hR	# )
r  ColorrA   r4  rd   c                    < V P                   '       d   VP                   '       g   Q hVP                   '       g   VP                   '       d   Q hS! W4      S! W!4      ,          # r1   r   rE   rF   rP   rO   r>  s   &&&&r6   idn!test_contract_delta1.<locals>.idnD  D    www1777""GGGqwww''Qz%*$$r8   c                    < V P                   '       d   VP                   '       g   Q hVP                   '       g   VP                   '       d   Q hS! W4      S! W#4      ,          # r1   r   rJ  s   &&&&r6   Ttest_contract_delta1.<locals>.TI  rM  r8   c                 N   < S! WW#4      ^S,          S! WW#4      ,          ,
          #    r   )rE   rF   rO   rP   rO  rK  r  s   &&&&r6   P1 test_contract_delta1.<locals>.P1N  s"    1q|ac!A*n,,r8   c                 2   < ^S,          S! WW#4      ,          # rR  r   )rE   rF   rO   rP   rO  r  s   &&&&r6   P2 test_contract_delta1.<locals>.P2Q  s    s1Q:~r8   N)r   r   r   r>  contract_deltar$   r3   )rH  rE   rF   rO   rP   rv   re   rT  rW  rI   rK   rO  r>  rK  r  s              @@@@r6   test_contract_delta1rZ  =  s`   sAGs;E%mU;A!KKE%
%
- 	1b!RAr1b))A	
		%	 BBAr1b))*a///
1b!RAr1b))A	
		%	 BAr1b!!!!
1b!RAr1b))A	
		%	 B7N7
1b!RA	
		%	 B99QTAXr8   c                  ,   \        R ^R7      p \        RV 4      w  rV P                  p\        RV .4      p^V! V4      V! V4      ,          V! V) V) 4      ,          ,           pVP	                  V4      ^V! V4      V! V) 4      ,          ,           8X  g   Q hR# )r   r   p qr   N)r   r   r>  r#   rY  )r   r   r  r>  r   r   s         r6   test_contract_delta2r]  d  s    	1	%B%$DAHHE3A qtAaDyr1"%%Du%QqT!QB%Z777r8   c            
         \        4       ;_uu_ 4        \        R 4      p \        RV RR7      p\        RV4      w  r#rEpVP                  p\        RV.4      w  rV	! V4      V! V4      ,          V	! V4      ,          V! W#4      V! WE4      ,          V	! V) 4      ,          ,           p
V
! W#V4      V
8X  g   Q h\        W! W2V4      ,
          V	! V4      V! V4      ,          V	! V4      ,          ,
          V	! V4      V! V4      ,          V	! V4      ,          ,           4      ^ 8X  g   Q hV
! W4V4      V	! V4      V! V4      ,          V	! V4      ,          V! W44      V! WV4      ,          V	! V) 4      ,          ,           8X  g   Q hV
P                  W#3W234      p\        W! V4      V! V4      ,          V	! V4      ,          ,
          V! W#4      V! WE4      ,          V	! V) 4      ,          ,
          4      ^ 8X  g   Q h\        RV.^,          \        P                  ! ^^4      4      p\        P                  V! W%4      ,          V! V) V) V) 4      V! V) V) V) 4      ,           V! V) V) V) 4      ,
          ,          pV! V) V) V) 4      V! V) V) 4      V! WS) V) 4      ,          ,
          V! V) V) 4      V! WR) V) 4      ,          ,
          p
V
P                  V4      p
V
^ 8X  g   Q hV	! V4      V! V4      ,          V	! V4      ,          p
V
! W4V4      V	! V4      V! V4      ,          V	! V4      ,          8X  g   Q h RRR4       R#   + '       g   i     R# ; i)r   r:   r;   r4  r5  r\  dgN)r.   r   r   r   r   r    r$   r(   r#   r   ri   r
   Halfr6  )r   r:   rE   rF   rO   rP   rv   r   r   r  rI   rK   r_  rp   s                 r6   test_funra  n  s   		!	!3K!)sC&{G<aANNEG9-aD1IadNQqVAaF]1aR500Qx1}}Aa!HqtAaDy1~5!QqT	!A$FG1LLLQx1Q4!9QqT>AaF1Q6M!QB%,?????!!1%.QqT!A$Yqt^+afQqVmAqbE.AABaGGG wik>+H+HA+NOqvr1"aR|b!QBrl:RA2qb\IJr1"aRL1aR8E!BrN22Qr1"XeAb!n5LLa AvvaD1IadNQx1Q4!9QqT>)))5 
"	!	!	!s   LL,,L=	c                  t  a \        R RR7      p \        RRR7      p\        RV 4      w  r#\        RV4      w  rE\        RV .4      w  rg\        RV.4      w  r\        R	4      p
\        R
4      o\        P
                  ! V
S^ 4       \        RV .\        P                  ! ^4      V
4      p\        P                  VP                  ,          V
8X  g   Q h\        RV.\        P                  ! ^4      S4      pV! V4      V! V) 4      ,          pV! V4      V! V) 4      ,          pW,           pW,          p\        VW,          ,
          ^V,          V,          ,
          W,          ,
          4      ^ 8X  g   Q hV! V4      V! V) 4      ,          pV! V4      V	! V) 4      ,          p\        VV,          VV,          4      '       g   Q h\        VV,          VV,          4      '       d   Q h\        P                  ! V
4      p\        P                  ! V4      V
8X  g   Q hS\        P                  9   g   Q h\!        \"        V3R l4       \        P$                  ! V
S^ 3V
^^34       \        P&                  ! V^4      \        P&                  ! ^V4      u;8X  d	   ^8X  g   Q h Q h\        P(                  ! 4        \        P                  ^ ^ ^^ ^^ /^ ^ ^^^R/^ ^ ^R/.8X  g   Q hS\        P                  9  g   Q h\        P                  ! S4      p\        P                  ! V4      S8X  g   Q hS\        P                  9   g   Q hR# )r:   r;   r<   LorentzHLHzi,jzih,jhr\  zph qhGsymbolGHsymbolGGHc                  4   < \         P                  ! S ^^4      # rR  )r!   set_comm)rf  s   r6   r   $test_TensorManager.<locals>.<lambda>  s    }55h1Er8   N)r   r   r    r   r!   rj  r#   r   rB   _comm_i2symbolr   r$   r7   comm_symbols2icomm_i2symbol_comm_symbols2ir,   r   	set_commsget_commclear)r:   rc  rz   r   ihjhr   r  phqhre  rg  rh  pspshrI   rK   qsqshr  nhrf  s                        @r6   test_TensorManagerr|    s   iC8Gzd;H%)DAGX.FBy)DA'H:.FBYGj!H7Ha03	>#=#=a#@'JA''/7:::	D8*n&@&@&CX	NB	
1aeB
R&RC.C
A	
BBJ2c)CG34999	
1aeB
R&RC.CRVSV$$$$B2&&&&$$W-A&&q)W444}44444
:EFWXa0'!A?!!!Q'=+A+A!Q+GL1LLLLL1Q!Qq/Aa1a3E!Qt}!UUUU=88888		%	%h	/B&&r*h666}44444r8   c                     \        R 4      p \        RV RR7      p\        RV4      w  r#rEpVP                  p\	        RV.4      w  rVP
                  ^,          p
V! V4      V	! V4      ,          pV! V4      V! V4      ,          p\        V4      \        V4      8w  g   Q hV! V4      V! V4      ,          V! W#4      ,           pV! V4      V! V4      ,          V! W#4      ,
          p\        V4      \        V4      8w  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hV
P                  ! V
P
                  !  V
8X  g   Q hV! V4      P                  ! V! V4      P
                  !  V! V4      8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q hVP                  ! VP
                  !  V8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        V
P                  ! V
P
                  !  4      \        V
4      8X  g   Q h\        V! V4      P                  ! V! V4      P
                  !  4      \        V! V4      4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q hR pV! V4      '       g   Q hV! V4      '       g   Q hV! V4      '       g   Q hV! V4      '       g   Q hV! V
4      '       g   Q hV! V! V4      4      '       g   Q hV! V4      '       g   Q hV! V4      '       g   Q hV! V4      '       g   Q hV! V4      '       g   Q h\        P                  ! R^^4      pVP                  ! VP
                  !  V8X  g   Q h\        VP                  ! VP
                  !  4      \        V4      8X  g   Q hV! V4      '       g   Q hR# )	r   r:   r;   r4  r5  r\  c                     \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir1   )r2   r   ).0_s   & r6   	<genexpr>/test_hash.<locals>.check_all.<locals>.<genexpr>  s     :A:a''s   FT)allr   )objs   &r6   	check_alltest_hash.<locals>.check_all  s3    s::ss:s:s::::r8   Nrf   )
r   r   r   r   r    r   hashfuncr   ri   )r   r:   rE   rF   rO   rP   rv   r   r   r  p_typerK   r  r  t4r  	tsymmetrys                    r6   	test_hashr    s\   sAiQ3?G";8MA!Ay)DAVVAYF	
1adB	
1adB8tBx	
1adQqV	B	
1adQqV	B8tBx66166?a<<&'11166166?a66166?a;;$...Q499qtkk"ad***77BGG"""77BGG"""77BGG"""77BGG""" DG+++gll+,W=== DG+++ DG+++V[[)*d6l:::!		AaD;;'(D1J666!"d2h...!"d2h...!"d2h...!"d2h...; Q<<<WQ<<<Q<<<VQqT???R===R===R===R===--b!Q7I>>9>>*i777		/0DOCCCYr8   c                     \        R4      p \        R^R7      pWn        \        RV4      w  r#rEp\	        R4      w  rxr\        RV.4      pWxW.Vn        \        RV.\        P                  ! ^4      R4      p\        ^4      Vn        \        RV.^,          4      pWn        \        R4      p\        R	V.^,          4      pWn        \        R
4      p. ROVn        \        RV4      w  ppp\        RV.4      pWxW.Vn        Rp\        R4      pVVn        \        RV4      w  ppp\        RV.4      p\        ^
^4      Vn        \        RV.^,          4      p\        ^
^4       UUu. uF&  p\        ^
^4       Uu. uF  pVV,           NK  	  upNK(  	  uppVn        \        RV.^,          4      p\        ^^4       UUUu. uFI  p\        ^^4       UUu. uF-  p\        ^^4       Uu. uF  pVV,           V,           NK  	  upNK/  	  uppNKK  	  upppVn        WWVWWV
VVVVVVVVVVVWVW#WEV3# u upi u uppi u upi u uppi u upppi )rS  r:   r   i0:5r  r?   r@   GcommABBALorentzDzmu0:3rA   ndmzn0:3NANBNC)rS  r   r   r   r   rg   r   r   r   r   rg   r   r   r   r   rg   )rS  r   r                  	   r   rg   rf   rh   r   rg   rS  rS  rS  )rS  rS  r   )rS  r   rS  r   rS  r   )	r   r   datar   r   r#   r   rB   range) 	minkowskir:   r   r   r   r   r   r   r  r  r  r?   r@   r  	ba_matrixr  r  mu0mu1mu2rA   
ndm_matrixr  n0n1n2r  r  rz   r   r  r   s                                    r6   _get_valued_base_test_variablesr    sD     I iQ/GL'8BBBL)MA23	"AR_AF3	>#=#=a#@'JA1XAF	D7)A+	&BG  I 
D7)A+	&BG z*H!HM"7H5MCc3
#AR_AFJ
 %
 CCH,JBB	D3%	 BBmBG	D3%'	"B5:2r]C]U2r]+]!]+]CBG	D3%'	"BLQRSUVKXKqeAqkBka,11Q,kBKXBG"!WXsCcSUWYBI*bbbR R	 ,C,BXsB   $H37H.	H3=IH>$H9=H>I.H39H>>Ic                  "   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrppppppppppppp\        . RO4      \        . RO4      \        . RO4      \        . RO4      .p\        V 4      WgW.8X  g   Q h\        V4      . RO8X  g   Q h\        V4      V8X  g   Q h\        V ! V4      4      WgW.8X  g   Q h\        V! VV4      4      V8X  g   Q h\        ^V! VV4      ,          4      V Uu. uF  p^V,          NK  	  up8X  g   Q h\        RV! VV4      ,          4      V Uu. uF  pRV,          NK  	  up8X  g   Q h\        V ! V4      V ! V4      ,           4      ^V,          ^V,          ^V,          ^V	,          .8X  g   Q hV! VV4      V! VV4      ,
          ^ 8X  g   Q h\        V! VV4      ^V! VV4      ,          ,
          4      V Uu. uF  pV) NK  	  up8X  g   Q h RRR4       R# u upi u upi u upi   + '       g   i     R# ; i)rS  Nr  r  r  r  r  )rS  r   r   r  r  r  r  r  r  r   rg   rf   rh   r   r  r  )r.   r  r   r|   )r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   list_BArz   s                                  r6   test_valued_tensor_iterr  '  s   		!	!QpQr	Orq1"(3TV	RRIz2r2r2&l(;U>=RTYZjTklAw1"/)))I"XXXXBx7""" AbE{qbo---Br2J7***A2r
N#w'?w!Aw'????BBO$(AAa(AAAA AbEAbEM"qsAbD!B$"&===="bzBr2J&!+++Br2JRBZ/04IAaR4IIII) 
"	! (@(A 5J) 
"	!	!s7   CG=/G.
%G=&G3
8BG=G8
	G=.G==H	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV ! V) 4      ^ ,          V ! V4      ^ ,          8X  g   Q hV ! V) 4      ^,          V ! V4      ^,          ) 8X  g   Q hV! VV4      R,          R8X  g   Q hV! VV) 4      R,          ^8X  g   Q hV! V) V) 4      R,          R8X  g   Q hV! V) V4      R,          ^8X  g   Q h RRR4       R#   + '       g   i     R# ; i)r   NrS  rS  rg   )r.   r  r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   s                                r6   3test_valued_tensor_covariant_contravariant_elementsr  ?  s    		!	!QpQr	Orq1"(3TV	RRIz2r2r2"vayAbE!H$$$"vayQrU1XI%%%"bz$2%%%"rc{4 A%%%2#s|D!R'''2#r{4 A%%% 
"	!	!	!s   C
C((C9	c                  
   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV! VV4      P                  4       pV\        . RO. RO. RO. RO.4      8X  g   Q hV! VV) 4      P                  4       \	        ^4      8X  g   Q hV ! V4      P                  4       \        WgW.4      8X  g   Q hV ! V) 4      P                  4       \        Wg) V) V	) .4      8X  g   Q h RRR4       R#   + '       g   i     R# ; i)rS  Nr  r  r  r  )r.   r  
get_matrixr   r   )r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   matabs                                 r6   test_valued_tensor_get_matrixr  M  s
   		!	!QpQr	Orq1"(3TV	RRIz2r2r22r
%%' / / / /	 " # # 	# # "rc{%%'3q6111 u!VQBO%<<<<"v  "farcB3-?&@@@@# 
"	!	!	!s   CC11D	c                  *   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV ! V4      V ! V) 4      ,          P                  V^,          V^,          ,
          V^,          ,
          V	^,          ,
          8X  g   Q hV ! V4      V ! V) 4      ,          P                  V ^,          8X  g   Q hV ! V4      V ! V) 4      ,          P                  V ! V4      ^,          8X  g   Q hV ! V4      V! V) 4      ,          P                  V) ^V,          ,
          ^V	,          ,
          8X  g   Q h\        ^4       FT  p\        ^4       FB  pV ! V4      V! V) 4      ,          VV3,          WgW.V,          . ROV,          ,          8X  d   KB  Q h	  KV  	  V! V4      V! V) 4      ,          P                  V^,          ) V^,          ,           V^,          ,           V	^,          ,           8X  g   Q hV ! V4      V! VV) 4      ,          pV ! V4      P                  ^8X  g   Q hV! VV) 4      P                  ^8X  g   Q hVP                  ^8X  g   Q h\        ^4       F  pVV,          WgW.V,          8X  d   K  Q h	  RRR4       R#   + '       g   i     R# ; i)r   N)r   rg   rf   rh   )r.   r  r  r  r   ) r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   rz   r   contrexps                                    r6   test_valued_tensor_contractionr  a  s4   		!	!QpQr	Orq1"(3TV	RRIz2r2r2"2#$$Qq(827(BR1W(LLLL"2#$$Q..."2#$$"
222"2#$$a"fq2v(====qA1X"2#1-!1CoVWFX1XXXX  
 #C4 &&16'B!G*;bAg*Ea*OOOOR52b2#;&uzzQ"rc{1$$$}}!!!qAA;1"/!"4444 ) 
"	!	!	!s   E5JC!J3JJ	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV! VV) 4      P                  ^8X  g   Q hV! VV) 4      P                  ^8X  g   Q h RRR4       R#   + '       g   i     R# ; ir  Nr.   r  r  r  s                                r6   #test_valued_tensor_self_contractionr  y  s    		!	!QpQr	Orq1"(3TV	RRIz2r2r2"rc{1$$$"rc{1$$$ 
"	!	!	!s   AA55B	c                  4   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV^,          V^,          ) V^,          ,           V^,          ,           V	^,          ,           8X  g   Q hV^,          \        V^,          ) V^,          ,           V^,          ,           V	^,          ,           4      8X  g   Q hV! V4      ^,          V^,          8X  g   Q hV! V4      ^,          V^,          8X  g   Q h RRR4       R#   + '       g   i     R# ; ir   N)r.   r  r   r  s                                r6   test_valued_tensor_powr    s    		!	!QpQr	Orq1"(3TV	RRIz2r2r2!t1ur1u}r1u,r1u4444!ttQTEBEMBE1BE9::::vqyAqD   vqyAqD    
"	!	!	!s   C(DD	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrppppppppppppp\        R 4      w  pppVV ! V4      ,          V! V4      ,          p V R,          VV,          8X  g   Q hV R,          ^V	,          V,          8X  g   Q hVV ! V4      ,          V! V) 4      V,          ,          P                  p!V!P	                  4       V) V,          V,          ^V,          V,          V,          ,
          ^V	,          V,          V,          ,
          8X  g   Q hV ! V4      V! V4      ,           p"V"^ ,          V8X  g   Q hV"^,          V^,           8X  g   Q hV"^,          V^,           8X  g   Q hV"^,          V	^,           8X  g   Q hV ! V4      V! V4      ,
          p#V#^ ,          V8X  g   Q hV#^,          V^,
          8X  g   Q hV#^,          V^,
          8X  g   Q hV#^,          V	^,
          8X  g   Q hV"V! V) 4      ,          P                  V) ^V,          ,
          ^V	,          ,
          ^,
          8X  g   Q hVV ! V4      ,          VV! V4      ,          ,           p$V$V! V4      ,          R,          p%V%^V,          V! VV4      ,          ,           p&V&^,          p'V'^,          V&8X  g   Q hV'V! V) V) 4      ,          p(V(P                  P	                  4       ^V,          V,          ^V,          V,          ,           ^V,          V,          ,           ^V	,          V,          ,           ^V,          ,           ^V,          ,           8X  g   Q h RRR4       R#   + '       g   i     R# ; i)zx1:4Nr  )r   r   r   )r.   r  r   r  r   ))r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   x1x2x3
rank2coeff
coeff_expradd_exprsub_exprr  r  r  r  expr5s)                                            r6   test_valued_tensor_expressionsr    s   		!	!QpQr	Orq1"(3TV	RRIz2r2r2V_
B !B%Z!B%'
$27***$1r6B;...AbEzafrk288
  "rc"fRi!B$r'"*&<qtBwrz&IIIIR51R5={a{b1f$$${b1f$$${b1f$$$R51R5={a{b1f$$${b1f$$${b1f$$$1bS6!''B32:"+<r+AAAA1R52ae8#"$"RBZ'	qyE!!!RC"%zz  "bd2g2b&82b58&CbeBh&NQTUWQW&WZ[\^Z^&^^^^K 
"	!	!	!s   L2MM!	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV ! V4      V ! V) 4      ,          V^,          V^,          ,
          V^,          ,
          V	^,          ,
          ,
          pVP                  ^ 8X  g   Q hV^,          V^,          ,
          V^,          ,
          V	^,          ,
          V ! V4      V ! V) 4      ,          ,
          pVP                  ^ 8X  g   Q hV ! V4      V ! V) 4      ,          V^,          ,
          V^,          ,           V^,          ,           V	^,          ,           pVP                  ^ 8X  g   Q hV! V4      V! V) 4      ,          ^V^,          ,          ,           ^V^,          ,          ,
          ^V^,          ,          ,
          ^V	^,          ,          ,
          V ! V4      V ! V) 4      ,          ,
          p V P                  ^ 8X  g   Q h RRR4       R#   + '       g   i     R# ; ir  r  )!r?   r@   r  r  rA   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  s!                                    r6   test_valued_tensor_add_scalarr    s   		!	!QpQr	Orq1"(3TV	RRIz2r2r2 "af1r1ur1u 4r1u <=zzQ 1r1ur1u$r1u,quQsV|;zzQ 2q"v1$r1u,r1u4r1u<zzQ #q#w1a4'!BE'1Ab!eG;aAgE"aQSPSfTzzQ% 
"	!	!	!s   GG::H	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrppppppppppppp\        R 4      p^^.Vn        \	        RV4      w  ppp\        RRR7      w  ppp p!\        RV.^,          4      p"VV.V V!3.V"n        \        RV.^,          4      p#VV .VV!..V#n        V"! VV4      V#! V) V) 4      ,          p$V$P                  V^,          V^,          ,           V ^,          ,           V!^,          ,           8X  g   Q hV$P                  V^,          ^V,          V ,          ,           V!^,          ,           8w  g   Q hV"! VV4      V"! V) V) 4      ,          p%V%P                  V^,          VV ,          ,           V V,          ,           V!^,          ,           8X  g   Q hV%P                  V^,          ^V,          V ,          ,           V!^,          ,           8w  g   Q hVV"! VV) 4      ,          P                  p&V&P                  4       VV,          VV!,          ,           8X  g   Q h RRR4       R#   + '       g   i     R# ; i)	Euclideanzi1:4za b c dF)commutativeV1V2N)r.   r  r   r  r   r   r#   r   )'r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   euclidrE   rF   rO   rP   r  r  vtpvtp2Vcs'                                          r6   test_noncommuting_componentsr    s   		!	!QpQr	Orq1"(3TV	RRIz2r2r2 -!f#FF3
BYE:
1avhqj)q6Aq6"vhqj)q6Aq6"Rj2rcB3<'xx1a4!Q$;A-14444xx1a4!A#a%<!Q$...."bz"bS2#,&yyAqD1Q3J1,q!t3333yyAqD1Q3q5L1a4////"R"+o##yy{a!ea!em+++3 
"	!	!	!s   HH22I	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrppppppppppppp\        V4      pV! V4      V! V) 4      ,          P                  V! V4      P	                  4       P
                  V,          V! V4      P	                  4       ,          R,          8X  g   Q h RRR4       R#   + '       g   i     R# ; i)r   N)r   r   )r.   r  r   r  r  rO  )r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   mmatrixs                                 r6   test_valued_non_diagonal_metricr    s    		!	!QpQr	Orq1"(3TV	RRIz2r2r2$2r2#w$$B):):)<)>)>)H2b6K\K\K^)^`d(eeee 
"	!	!	!s   BB88C		c                  b   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV^,           V^,
          W.p\        V4      V n        \	        ^4       F*  pV ! V4      P                  V,          VV,          8X  d   K*  Q h	  \        R4      w  pp p!\        VVV V!.4      V ! V) 4      n        \	        ^4       FY  pV ! V4      P                  V,          VV) V ) V!) .V,          8X  g   Q hV P                  V,          VV) V ) V!) .V,          8X  d   KY  Q h	  \	        ^4       U"Uu. uFH  p"\	        ^4       Uu. uF/  pV^,          ^V^,          ,          ,
          V"^,           ,          NK1  	  upNKJ  	  p#p"pV#V! V) V) 4      n        \	        ^4       EF$  p\	        ^4       EF  p"V! VV4      P                  VV"3,          V#V,          V",          V'       d   RM^,          V"'       d   RM^,          8X  g   Q hV! V) V4      P                  VV"3,          V#V,          V",          V"'       d   RM^,          8X  g   Q hV! VV) 4      P                  VV"3,          V#V,          V",          V'       d   RM^,          8X  g   Q hV! V) V) 4      P                  VV"3,          V#V,          V",          8X  d   EK  Q h	  EK'  	  V#V! V) V4      n        \	        ^4       EF$  p\	        ^4       EF  p"V! VV4      P                  VV"3,          V#V,          V",          V'       d   RM^,          8X  g   Q hV! V) V4      P                  VV"3,          V#V,          V",          8X  g   Q hV! VV) 4      P                  VV"3,          V#V,          V",          V'       d   RM^,          V"'       d   RM^,          8X  g   Q hV! V) V) 4      P                  VV"3,          V#V,          V",          V"'       d   RM^,          8X  d   EK  Q h	  EK'  	  RRR4       R# u upi u upp"i   + '       g   i     R# ; i)rS  zqx qy qzNrg   )r.   r  r   r  r  r   )$r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   arrrz   qxqyqzr   random_4x4_datas$                                       r6    test_valued_assign_numpy_ndarrayr    s   		!	!QpQr	Orq1"(3TV	RRIz2r2r2 sBqD"!sqAuzz!}A...  Z(
BQBO,2#qAR5::a=QbS2#$6q$999966!9RC"rc 21 5555 
 MRRSHUHqqBAQT!AqD&[1Q3//BHU+B3qA1X"bzq!t,0B10EQrTU0V^_XZef0gggg2#r{''1-1CA1FaUV1WWWW"rc{''1-1CA1FaUV1WWWW2#s|((A./!2DQ2GGGG	   +B3qA1X"bzq!t,0B10EQrTU0VVVV2#r{''1-1CA1FFFF"rc{''1-1CA1FaUV1W_`Y[fg1hhhh2#s|((A./!2DQ2GqVW2XXXX	  ; 
"	!$ CU% 
"	!	!sr   A4PBPP0P
5P7P
>A3P2AP5AP8>P<CPP*AP.P?	PP
PP.	c                  h   \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrppppppppppppp. RO. RO. RO. RO.pVVn        \        V4      pVP                  pVP                  4       p \        ^4      p!VP                  4       p"\        ^4       EF{  p#\        ^4       EFg  p$V! VV4      P                  V#V$3,          VV#V$3,          8X  g   Q hV! V) V) 4      P                  V#V$3,          V V#V$3,          8X  g   Q hV! VV) 4      P                  V#V$3,          V!V#V$3,          8X  g   Q hV! V) V4      P                  V#V$3,          V!V#V$3,          8X  g   Q hV! VV4      V#V$3,          VV#V$3,          8X  g   Q hV! V) V) 4      V#V$3,          V V#V$3,          8X  g   Q hV! VV) 4      V#V$3,          V!V#V$3,          8X  g   Q hV! V) V4      V#V$3,          V!V#V$3,          8X  g   Q hV"! VV) 4      V#V$3,          V!V#V$3,          8X  d   EKh  Q h	  EK~  	  RRR4       R#   + '       g   i     R# ; i)r   N)r   r   r   rS  )r   r   rS  r   )r   rS  r   r   )rS  r   r   r   )	r.   r  r  r   r   invr   get_kronecker_deltar  )%r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   mdr  r   minvmeyeKDrz   r   s%                                        r6   test_valued_metric_inverser    s4   		!	!QpQr	Orq1"(3TV	RRIz2r2r2
 L,E2Juuw1v ((*qA1Xb"~**1a40AadG;;;rcB3',,QT2d1a4j@@@b2#++AqD1T!Q$Z???rc2++AqD1T!Q$Z???b"~ad+qAw666rcB3'1-ad;;;b2#q!t,QT
:::rc2q!t,QT
:::"rc{1a4(DAJ666  % 
"	!	!	!s   G4H 	H  H1	c                     \        4       ;_uu_ 4        \        4       w  rr#rErgrrrrpppppppppppppV ! V4      V ! V4      ,          pVP                  4       pVV ! V4      V ! V4      ,          8X  g   Q h\        ^4       F0  p\        ^4       F  p VVV 3,          VV V3,          8X  d   K  Q h	  K2  	  V! V4      V ! V4      ,          V! V4      ,          p!V!P                  4       p"\        ^4       FD  p\        ^4       F2  p \        ^4       F   p#V!VV V#3,          V"V VV#3,          8X  d   K   Q h	  K4  	  KF  	  RRR4       R#   + '       g   i     R# ; ir  )r.   r  r$   r  )$r?   r@   r  r  rA   r:   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   e1e2rz   r   o1o2r   s$                                       r6   test_valued_canon_bp_swapaxesr  8  s5   		!	!QpQr	Orq1"(3TV	RRIz2r2r2rU1R5[[[]QrU1R5[   qA1X!Q$x2ad8+++   rU1R5[2[[]qA1XqAaAg;"Q1W+555 "   
"	!	!	!s   BE,A<E-EE	c            	      6  aaaa	a
a \        4       ;_uu_ 4        \        R ^R7      p \        RV 4      w  rr4. R
OV n        \	        RV .^,          4      p\	        RV .^,          \
        P                  ! ^4      4      o\	        RV .^,          \
        P                  ! R4      4      o\        . RO. RO. RO.4      o
S
S
P                  ,           oS
S
P                  ,
          o	S
Vn        SVn        S	Vn        R oSSn        \        \        VVV
3R l4       \        \        VVV	3R l4       S	Sn        \        \        VVV3R l4       \        \        VVV
3R l4       . RO. RO. RO.Sn        . RO. RO. RO.Sn        R	R	R	4       R	#   + '       g   i     R	# ; i)ITr   i0:4r?   c                     Wn         R # r1   )r  )r?   dats   &&r6   assign:test_valued_components_with_wrong_symmetry.<locals>.assign\  s    Fr8   c                     < S! S S4      # r1   r   )A_symr  	mat_nosyms   r6   r   <test_valued_components_with_wrong_symmetry.<locals>.<lambda>`  s    6%#;r8   c                     < S! S S4      # r1   r   )r  r  mat_antisyms   r6   r   r  a  s    6%#=r8   c                     < S! S S4      # r1   r   )	A_antisymr  mat_syms   r6   r   r  d  s    6)W#=r8   c                     < S! S S4      # r1   r   )r  r  r  s   r6   r   r  e  s    6)Y#?r8   NrS  rS  rS  rf   )rS  r   r   )r  r  r  )r  r  r  )r   r   r   )r.   r   r   r  r#   r   rD   r   rO  r,   r   )r  r   r   r   r   A_nosymr  r  r  r  r  r	  s         @@@@@@r6   *test_valued_components_with_wrong_symmetryr  K  s-   		!	!Tq)'3S2$q&)3Q(F(Fq(IJsRDFN,J,J2,NO	GGG45	ikk))++- "	 
z;<z=>$	z=>z?@I6
#Y	:	9 
"	!	!	!s   E$FF	c            	         \        4       ;_uu_ 4        \        R ^R^R7      p R^.V n        \        RV 4      w  rr4\	        RV .4      p^^ .Vn        \	        RV .^,          \
        P                  ! R4      4      p^ ^.R^ ..Vn        V! W4      V! V) 4      ,          V! W$4      ,          V! V) 4      ,          pVP                  \        ^ ^ .^ ^..4      8X  g   Q hV! W4      V! W$4      ,          V! V) 4      ,          V! V) 4      ,          pVP                  VP                  8X  g   Q hWw,           P                  ^VP                  ,          8X  g   Q h RRR4       R#   + '       g   i     R# ; i)	r:   rz   rY   r=   r   \mu, \nu, \alpha, \betaurc   Nrg   rf   )r.   r   r  r   r#   r   rD   r   )	r:   rq   rr   rn   ro   r  rc   mul_1mul_2s	            r6   test_issue_10972_TensMul_datar  j  sF   		!	!!)Q3TUVAw,-J-46 sWI&QsWIaK)G)G)KLa&q' "q%y(1R;6D5A

eaVaV$45565"q{*QvY6D5A

ejj()($$EJJ676) 
"	!	!	!s   D?EE.	c                     \        4       ;_uu_ 4        \        R ^R^R7      p . R	OV n        \        RV 4      w  rr4\	        RV .4      p. R
OVn        \	        RV .^,          \
        P                  ! R4      4      p\        R4      w  rxrr^ WxV	.V) ^ W) .V) V) ^ V
.V	) W) ^ ..Vn        V! W4      V! V) 4      ,          pV! V4      V! V4      ,          P                  \        . RO^ V^,          Wx,          Wy,          .^ Wx,          V^,          W,          .^ Wy,          W,          V	^,          ..4      8X  g   Q hV! V4      V! V4      ,          P                  4       P                  V! V4      V! V4      ,          P                  8X  g   Q hV! W4      V! WB4      ,          V! V) 4      ,          V! V) 4      ,          P                  V! V4      V! V4      ,          P                  ) 8X  g   Q hV! W14      V! WB4      ,          V! V) 4      ,          V! V) 4      ,          P                  V! V4      V! V4      ,          P                  8X  g   Q h\	        RV .^,          \
        P                  ! ^4      4      pV P                  Vn        V! V4      V! V4      ,          V! W4      ,           pV! V) 4      V! W4      ,          pVP                  \        . RO4      8X  g   Q hV! V) 4      V! W4      ,          V! W$4      ,          pVP                  \        P                  ! ^^^4      8X  g   Q hV! W4      V! W$4      ,          V! V) V) 4      ,          pVP                  R,          \        . RO4      8X  g   Q hVP                  R,          \        . RO4      8X  g   Q hV! V) 4      V! W4      ,          pVP                  \        . RO4      8X  g   Q hV=RRR4       R#   + '       g   i     R# ; i)r:   r;   r  r  r  rc   zE_x E_y E_z B_x B_y B_zr   Nr  r  rf   )r   r   r   r   )r   NNN)r  r   )r.   r   r  r   r#   r   rD   r   r   r$   zeros)r:   rq   rr   rn   ro   r  rc   ExEyEzBxByBzr   r   perpr  r  Fperpmul_3s                       r6   test_TensMul_datar!    sp   		!	!!)Q3TUV$,-J-46 sWI&sWIaK)G)G)KL!()B!COS!RS2#q"S"c1	 bI2#22$$|q"'27;"'27;"'27;= >> 	 > 22((*//AbEAbEM3G3GGHG2$+ai7!TE(BHHR51R5=&&&' 	 ' 5$+ai7!TE(BHH22$$% 	 % sWIaK)G)G)JK uqu}qy(2#b%

eL11212#b(4>9

ekk!Q2232R$r.01eVdU3CC

4 E,$7787

4 E,$77872#r&

eL1121 Fq 
"	!	!	!s   N5OO#	c            	      L   \        4       ;_uu_ 4        \        R ^R^R7      p R^.V n        \        RV 4      w  rr4\        RV 4      w  rV\	        RV .^,          \
        P                  ! ^4      4      pV P                  Vn        \	        RV .4      p^^ .Vn        V! W#4      V! WE4      ,          V! V) 4      ,          V! W#4      V! V4      ,          ,
          p	V	P                  \        P                  ! ^^^4      8X  g   Q hV! W#4      V! W4      ,          V! V) 4      ,          V! W#4      V! V4      ,          ,
          p
V
P                  \        P                  ! ^^^4      8X  g   Q hV! V4      V! V4      ,          V! W4      ,           pV! V) 4      V! W4      ,          pVP                  \        ^ ^ .4      8X  g   Q hV! V) 4      V! W14      ,          V! WB4      ,          pVP                  \        P                  ! ^^^4      8X  g   Q h RRR4       R#   + '       g   i     R# ; i)	r:   rz   r  rN   zi_0:2r   r  Nrg   )	r.   r   r  r   r#   r   rD   r   r  )r:   rE   rF   rO   rP   r   r   r   r  add_1add_2r  r  r  s                 r6   test_issue_11020_TensAdd_datar%    s   		!	!!)Q3TUVAw#L':
a1 sWIaK)G)G)JKsWI&Q!!A("QsV+ag!n<

ekk!Q2232!!A("QsV+ag!n<

ekk!Q2232 tad{QqW$1"Q
"

eQFm+,+1"Q
"T!Z/

ekk!Q22327 
"	!	!	!s   G4HH#	c                     \        R RR7      p \        RV 4      w  rr4p\        RV 4      p\        RV 4      p\        RW .4      p\        RW .\        P                  ! ^4      4      p	V! W4      p
V! W) 4      pV! W4      V	! W44      ,          pV! W4      V	! W2) 4      ,          pV! W4      V	! V) V) 4      ,          pW,           p\        V
P                  4      VR	3VR
3.8X  g   Q h\        V
P                  4      . 8X  g   Q h\        V
P                  4      VR	3VR
3.8X  g   Q h\        VP                  4      . 8X  g   Q h\        VP                  4      VR	3V) R
3.8X  g   Q h\        VP                  4      VR	3V) R
3.8X  g   Q h\        VP                  4      VR3VR3VR3VR3.8X  g   Q h\        VP                  4      . 8X  g   Q h\        VP                  4      VR3VR3VR3VR3.8X  g   Q h\        VP                  4      VR3VR3.8X  g   Q h\        VP                  4      VR3V) R3.8X  g   Q h\        VP                  4      VR3VR3VR3V) R3.8X  g   Q h\        VP                  4      . 8X  g   Q h\        VP                  4      VR3VR3V) R3V) R3.8X  g   Q h\        VP                  4      VR3VR3V) R3V) R3.8X  g   Q h\        VP                  4      VR3VR3VR3VR3.8X  g   Q h\        VP                  4      VR3V) R3.8X  g   Q h\        VP                  4      VR3VR3VR3V) R3VR3VR3.8X  g   Q hV
P                  4       W.8X  g   Q hV
P                  4       W.8X  g   Q hVP                  4       Wf) .8X  g   Q hVP                  4       . 8X  g   Q hVP                  4       WW4.8X  g   Q hVP                  4       WW4.8X  g   Q hVP                  4       WW6) .8X  g   Q hVP                  4       W.8X  g   Q hVP                  4       WgV) V) .8X  g   Q hVP                  4       . 8X  g   Q hR# )r:   r;   r<   r  r   L_1r?   r@   N)rS  r   r  r  )r   rS  rS  r  r  )r   r   rS  r   )r   rS  rS  r   )r   r   rS  rS  )r   rS  rS  rS  )r   r   r#   r   rD   r|   _iterate_free_indices_iterate_dummy_indices_iterate_indicesr   get_free_indices)r;   r   r   r   r   r   L0L1r?   r@   r  r  e3e4e5e6s                   r6   test_index_iterationr2    s    	c2A'2BBB	q	!B	q	!B3A3 > >q ABA	
2B	
2cB	
2!B(	B	
2!Bs)	B	
2!RC*	B	B(()r6lRL-IIII))*b000##$"fF|(DDDD(()R///))*F|rc6].KKKK##$"fV}(EEEE(()r9oIQSU^P_bdfoap-qqqq))*b000##$"i2y/BPY?]_aj\k(llll(()r9oI-OOOO))*I"i@P.QQQQ##$"i2y/BPY?^`]`bk\l(mmmm(()R///))*IYSURUW`Qaegdgircs.tttt##$"i2y/RCQZK[_a^acl]m(nnnn(()r<.@2|BTWY[dVehjlugv-wwww))*L/ARCCV.WWWW##$"l);b,=ORTVbQcgifikwex{}  @I  {J  MO  QZ  L[  )\  \  \  \>>x''' RH,,,>>Cy((( B&&&>>//// RR$4444>>C0000 RH,,,>>bS1111 B&&&r8   c                     \        R 4      p \        RV 4      w  rp\        RV 4      p\        RV .4      w  rVrx\	        R4      p	\        R4      p
\        \        V! V4      V! V4      4      \        4      '       g   Q h\        \        V! V4      V! V4      ,           4      \        4      '       g   Q hV! V4      V! V) 4      V! V) 4      ,           ,          pVP                  V! V4      V! V) 4      V! V) 4      ,           38X  g   Q hW! V4      V! V) 4      ,          V! V4      V! V) 4      ,          ,           8w  g   Q hVP                  4       V! V4      V! V) 4      ,          V! V4      V! V) 4      ,          ,           8X  g   Q h\        V4      R8X  g   Q hV! V4      V! V4      ,          V! V4      V! V4      ,          ,           p\        V4      R8X  g   Q hV! V) 4      V! V4      V! V4      ,          V! V4      V! V4      ,          V! V4      ,          V! V) 4      ,          ,           ,          pW! V) 4      V! V4      ,          V! V4      ,          V! V) 4      V! V4      ,          V! V4      ,          V! V4      ,          V! V) 4      ,          ,           8w  g   Q hVP                  4       V! V) 4      V! V4      ,          V! V4      ,          V! V) 4      V! V4      ,          V! V4      ,          V! V4      ,          V! V) 4      ,          ,           8X  g   Q h\        V4      R8X  g   Q h\        VP                  4       4      R	8X  g   Q hV! V) 4      ^V! V4      ,          V! V4      ,          V! V4      V! V4      ,          ,           ,          pVP                  4       ^V! V) 4      ,          V! V4      ,          V! V4      ,          V! V) 4      V! V4      ,          V! V4      ,          ,           8X  g   Q h^V! V4      ,          V! V) 4      ,          pVP                  ^8X  g   Q hV! V4      V! V4      V! V4      ,          V! V4      V! V4      V! V4      ,           ,          ,           ,          p\        V4      R
8X  g   Q h\        VP                  4       4      R8X  g   Q h\        \        ^4      \        4      '       g   Q h\        ^4      P                  4       pV^8X  g   Q h\        V\         4      '       g   Q hV! V4      V! V) 4      ,          V! V4      V! V) 4      ,          ,           pV! V) 4      V,          pV! V4      V,          pVP                  4       V! V4      V! V) 4      ,          V! V4      ,          V! V) 4      ,          V! V4      V! V) 4      ,          V! V4      ,          V! V) 4      ,          ,           8X  g   Q hV! V4      V! V) 4      V! V) 4      V! V4      V! V) 4      ,          V! V4      V! V) 4      ,          ,           ,          ,           ,          pVP                  4       V! V4      V! V) 4      ,          V! V4      V! V) 4      ,          V! V4      ,          V! V) 4      ,          ,           V! V4      V! V) 4      ,          V! V4      ,          V! V) 4      ,          ,           8X  g   Q hV! V) 4      V! V4      V! V) 4      ,          V! V4      V! V) 4      ,          ,           ,          pVP                  4       V! V) 4      V! V4      ,          V! V) 4      ,          V! V) 4      V! V4      ,          V! V) 4      ,          ,           8X  g   Q h ^V	! V
4      ,           V! V4      ,          pVP                  4       p\        V\        4      '       g   Q hVP                  ^V! V4      ,          V	! V
4      V! V4      ,          38X  g   Q h^V	! V
4      ,           V! V4      ,          V! V4      ,           pVP                  4       p\        V\        4      '       g   Q hVP                  ^V! V4      ,          V	! V
4      V! V4      ,          V! V4      38X  g   Q hR# )r;   zi j kr   A B C Drc   r   zA(L_0)*(A(-L_0) + B(-L_0))zA(i)*A(j) + A(i)*B(j)z2A(-L_0)*(A(L_0)*A(j) + A(L_0)*B(j)*C(L_1)*C(-L_1))z8A(j)*A(L_0)*A(-L_0) + A(L_0)*A(-L_0)*B(j)*C(L_1)*C(-L_1)z%A(i)*(B(j)*C(k) + C(j)*(A(k) + D(k)))z0A(i)*B(j)*C(k) + A(i)*C(j)*A(k) + A(i)*C(j)*D(k)N)r   r   r   r    r   r   r2   r   r   r   r   rC   r$   r   r   r   r   )r;   rz   r   r   r   r?   r@   rA   r   rc   r   r   tmp1p2p3expr_expands                    r6   test_tensor_expandr:    s   AWa(GA!
eQ
Ci!-JA!AsAc!A$!ow////fQqT!A$Y'1111Q4A2q!uD993C41cT7!233331Q41":!QrU
****;;=AaDA2J1ae3333t94444Q4!9qtAaDy Dt9////aR5!A$qt)ad1Q4i!nQrU223D1aR51:ad?QrU1Q4Z!_QqT%9!QB%%?????;;=AqbE!A$JqtOaeAaDj1oad.B1aR5.HHHHHt9LLLLt}}#]]]]aR5!AaD&1+!QqT	)*D;;=AaeGAaDL1-1"ad
1Q4????QqT6!QB%<D::??Q41adQqT1Q4!A$;//0Dt9????t{{}!SSSSgaj'****		B7N7b'""""	
1aead1aR5j	 B	
A2rB	
1bB99;!A$q!u*QqT/!QB%/!A$q!u*QqT/!QB%2GGGGGQ4A2A2!QrU
QqT!QB%Z 7889D;;=AaDA2J1aeAaDA2)>>1aeAaDQRTUSUQVAVVVVVaR5!A$q!u*qtAqbEz)*D;;=AqbE!A$Jq!u,q!uQqTz!QB%/?????
 !Had?D++-Kk7++++!A$!QqT	2222!Had?QqT!D++-Kk7++++!A$!QqT	1Q48888r8   c                  H  aaa \        R 4      p \        RV 4      w  rr4\        RV .4      o\        R4      w  ooS! V4      S! \	        R4      4      8X  g   Q hS! V) 4      S! \	        R4      ) 4      8X  g   Q h\        \        VVV3R l4       \        \        VV3R l4       R# )r;   r  r?   zx yr   c                  "   < S ! SS,           4      # r1   r   )r?   r   ys   r6   r   6test_tensor_alternative_construction.<locals>.<lambda>^  s    a!fr8   c                  "   < S ! ^S,          4      # r   r   )r?   r   s   r6   r   r>  _  s    q1vr8   N)r   r   r#   r   r   r,   	TypeErrorr   )r;   r   r   r   r   r?   r   r=  s        @@@r6   $test_tensor_alternative_constructionrA  V  s    A#FA.NBB3A5>DAqR5AfTlO###bS6Qt}%%%%
9n%
:~&r8   c                  (  aaaaaa \        R 4      p \        R^R7      p\        RV 4      w  oor#\        RV .4      w  rErg\        RW .4      p\        RV .^,          4      p	V! SS4      oV! SS) 4      ^^.^^..V \	        ^R4      /oSP                  S4      SS.\        ^R.^R..4      38X  g   Q hSP                  S4      \        ^R.^R..4      8X  g   Q hSP                  SSS.4      \        ^R.^R..4      8X  g   Q hSP                  SSS) .4      \        ^^.^^..4      8X  g   Q hSP                  S\        R4      \        R4      ) .4      \        ^^.^^..4      8X  g   Q hSP                  SS) S.4      \        ^R.R^..4      8X  g   Q hSP                  SS) S) .4      \        ^^.RR..4      8X  g   Q hSP                  SSS.4      \        ^^.RR..4      8X  g   Q hSP                  SSS) .4      \        ^R.R^..4      8X  g   Q hSP                  SS) S.4      \        ^^.^^..4      8X  g   Q hSP                  SS) S) .4      \        ^R.^R..4      8X  g   Q hSP                  S4      \        ^R.^R..4      8X  g   Q hV! SS4      oV! SS4      ^^.^^..V \	        ^R4      /oSP                  S4      SS.\        ^^.^^..4      38X  g   Q hSP                  S4      \        ^^.^^..4      8X  g   Q hSP                  SSS.4      \        ^^.^^..4      8X  g   Q hSP                  SSS) .4      \        ^R.^R..4      8X  g   Q hSP                  SS) S.4      \        ^^.RR..4      8X  g   Q hSP                  SS) S) .4      \        ^R.R^..4      8X  g   Q hSP                  SSS.4      \        ^^.^^..4      8X  g   Q hSP                  SSS) .4      \        ^R.^R..4      8X  g   Q hSP                  SS) S.4      \        ^^.RR..4      8X  g   Q hSP                  SS) S) .4      \        ^R.R^..4      8X  g   Q hV! SV4      oV! SS4      ^^.^^..V \	        ^R4      /oSP                  S4      SV.\        ^^.^^..4      38X  g   Q hV! S4      V! S) 4      ,          oV! S4      ^^.V \	        ^R4      /oSP                  S4      . R38X  g   Q hSP                  S. 4      R8X  g   Q hV	! SSS) V4      V! S) 4      ,          V! V) 4      ,          oV! S4      ^^.V	! SSW#4      \        ^.^,          4      P                  ^^^^4      V \	        ^R4      /oSP                  S4      '       g   Q hV! SV4      oV! SS4      ^^.^^..V \	        ^R4      /o\        \        VV3R	 l4       V! S4      oV! S4      ^^./o\        \        VV3R
 l4       V! S4      oV! S4      ^^.^^../o\        \        VV3R l4       V! V4      V! SS4      ,          V! V4      V! SS4      ,          ,           oV! V4      ^.V! V4      ^.V! SS4      ^^.^^..V \	        ^^4      /oSP                  S4      VSS.\        ^^.^^...4      38X  g   Q hSP                  SVSS.4      \        ^^.^^...4      8X  g   Q hSP                  SVSS.4      \        ^^.^^...4      8X  g   Q hV! V4      V! V) 4      ,          ^d,           oV! V4      ^^.V \	        ^^4      /oSP                  S. 4      ^q8X  g   Q hV! SS4      V! SS4      ,           oV! SS4      ^^.^^../oSP                  S4      SS.\        ^^.^^..4      38X  g   Q hSP                  SSS.4      \        ^^.^^..4      8X  g   Q hSP                  SSS.4      \        ^^.^^..4      8X  g   Q hV! SS4      V! SS4      ,
          oV! SS4      ^^.^^../oSP                  SSS.4      \        ^ R.^^ ..4      8X  g   Q hSP                  SSS.4      \        ^ ^.R^ ..4      8X  g   Q hV	! SSW") 4      oV	! SSW") 4      ^^.^^../oSP                  S4      SS.\        ^^.^^..4      38X  g   Q hV! SS) 4      oV! SS) 4      ^*/oSP                  S4      . ^*38X  g   Q hV! SS) 4      oV! S) S) 4      \        . RO. RO. RO. RO.4      V \        . RO. RO. RO. RO.4      /oSP                  S4      . ^38X  g   Q hV! S4      V! S4      ,          oV! S4      ^^./o\        \        VVV3R l4       V! S4      oV! S4      ^^../o\        \        VVV3R l4       \        RV4      w  oop
\        RV.4      pV! S4      V! S) 4      ,          oV! S4      ^../o\        \        VVVV3R l4       R# )r;   L2r   zi j k lr4  Hr   rz   r   c                  &   < S P                  S4      # r1   _extract_datar   repls   r6   r   )test_tensor_replacement.<locals>.<lambda>      t11$7r8   c                  &   < S P                  S4      # r1   rF  rH  s   r6   r   rJ    rK  r8   c                  &   < S P                  S4      # r1   rF  rH  s   r6   r   rJ    rK  r8   c                  *   < S P                  SS.4      # r1   replace_with_arrays)r   r   rI  s   r6   r   rJ        t77qcBr8   c                  *   < S P                  SS.4      # r1   rO  )r   rz   rI  s   r6   r   rJ    rQ  r8   zu1:4Uc                  .   < S P                  SSS) .4      # r1   rO  )r   rI  u1u2s   r6   r   rJ    s    t77rB3iHr8   Nrg   rf   r   rh   r  r  r  r  )r   r   r    r#   r/   rG  r   rP  r   reshaper,   r   )r;   rC  r   r)  r?   r@   rA   r   rD  r   u3rS  r   rz   r   rI  rU  rV  s               @@@@@@r6   test_tensor_replacementrY  b  sc   A	1	%B	1-JAq!i!-JA!3A3AAQ7DaGqeQqE]AtAr{3Dd#A2wB6H0I'JJJJ##D)UQGaW3E-FFFF##D1a&1UQGaW;M5NNNN##D1qb'2eaVaV<L6MMMM##D6#;*EF%RSUVQWZ[]^Y_P`Jaaaa##DA2q'2eaWr1g<N6OOOO##DA2r(3uq!fr2h=O7PPPP##D1a&1UQFRH;M5NNNN##D1qb'2eaWr1g<N6OOOO##DA2q'2eaVaV<L6MMMM##DA2r(3uq"g2w=O7PPPP##D)UQGaW3E-FFFFQq6DaFaUAa5M1d1bk2Dd#A1v1v6F0G'HHHH##D)UQFQF3C-DDDD##D1a&1UQFQF;K5LLLL##D1qb'2eaWq"g<N6OOOO##DA2q'2eaVb"X<N6OOOO##DA2r(3uq"gAw=O7PPPP##D1a&1UQFQF;K5LLLL##D1qb'2eaWq"g<N6OOOO##DA2q'2eaVb"X<N6OOOO##DA2r(3uq"gAw=O7PPPP Qq6DaFaUAa5M1d1bk2Dd#A1v1v6F0G'HHHHQ41":DaD1Q%DBK(Dd#Bx///##D"-333QA2q>!QB%1"%DaD1a&!Aa*eQCHo&=&=a!A&F4PQSU;WDd####Q7DaFaUAa5M1d1bk2D
:78Q4DaD1a&>D
:78Q4DaDAq6Aq6"#D
:78 Q4!Q<!A$qAw,&DaD1#qtaS!Aq'QFAa5>1T!AYGDd#Aq	5Aq6Aq6:J9K3L'MMMM##D1a)4AA?O>P8QQQQ##D1a)4AA?O>P8QQQQQ41":DaD1a&!T!QZ(D##D"-444 Q7Qq!WDaGq!fq!f%&Dd#A1v1v6F0G'HHHH##D1a&1UQFQF;K5LLLL##D1a&1UQFQF;K5LLLL Q7Qq!WDaGq!fq!f%&D##D1a&1UQGaV;L5MMMM##D1a&1UQFRG;L5MMMM Q1b>DaArNaVaV,-Dd#A1v1v6F0G'HHHHQ8Da!Hb>Dd#Bx///Q8D	1"qb	5,}mTU	5,}mLMD d#Aw... Q4!9DaD1a&>D
:BC Q4DaDAq6(D
:BC  +JBB3AR5B3<DbEQC5>D
:HIr8   c                  &   \        R ^R7      p \        RV .^,          4      p\        RV .4      p\        R4      w  r4rV\        R4      w  rxV! W4WV4      p	V	P                  \        4      \	        \        R4      W4WV4      8X  g   Q hV! W3) WV4      p
V
P                  \        4      \        \	        \        R4      WwWV4      V^ ^34      8X  g   Q hW! WVW3) 4      ,           pVP                  \        4      \        \	        \        R4      WwWV4      V^ ^34      \        \	        \        R4      WVWw4      V^ ^34      ,           8X  g   Q hV! V) 4      V	,          pVP                  \        4      \        \	        \        R4      V4      \	        \        R4      WtWV4      ,          V^ ^34      8X  g   Q hV! V) 4      V
,          pVP                  \        4      \        \	        \        R4      V4      \	        \        R4      WwWX4      ,          V^ ^3V^ ^34      8X  g   Q hR# )r;   r   r?   r@   r  zL_0:2N)r   r#   r   rewriter   r   r   )r;   r?   r@   r   r   r   r   r   r'  rk   rl   rm   b1b2s                 r6   test_rewrite_tensor_to_Indexedr^    s   #A3AA3AV_NBBwHC	
22	B::g'&+rr"FFFF	
2sB	B::g#gfSk3R&LsTUWXk"ZZZZ	aC 	 B::gGF3K22S!QK@GF3K2S!QK@	AA A A 
B3B::g#gfSk3&?sUX^`@e&ehkmnpqgr"ssss	
B3B::g#gfSk3&?sUX_a@g&gjmoprsitwz|}  @A  wB  #C  C  C  Cr8   c            
        \        R^R7      p \        RV 4      w  rp\        R\        V RR7      w  rEp\        RV 4      pV P                  pV P
                  p	\        RV .4      p
\        R	V .4      p\        R
W .4      p\        RRR7      p\        R4      pVP                  V4      WB/8X  g   Q hVP                  V) 4      WB) /8X  g   Q hVP                  V) 4      R8X  g   Q hVP                  V4      Wr/8X  g   Q hV	! W) V4      P                  V	! WV4      4      R8X  g   Q hV	! W) V4      P                  V	! WV4      4      WCV) V/8X  g   Q hV	! W) V4      P                  V	! WEV4      ^4      ^8X  g   Q hV! 4       P                  V
! V4      V! V4      ,          4      V! 4       V
! V4      V! V4      ,          /8X  g   Q hV! V4      P                  V
! V4      4      WAV! V4      P                  \        V
! V4      4      /8X  g   Q hV! WA4      P                  V
! V4      V! V4      ,          4      WBV! WA4      P                  \        V
! V4      V! V4      ,          4      /8X  g   Q hV! W4      P                  V
! V4      V! V4      ,          4      V! W4      P                  \        V
! V4      V! V4      ,          4      /8X  g   Q hV! W4      P                  V! W!4      4      V! W4      P                  \        V! W!4      4      /8X  g   Q hV! W4      P                  V! W!4      4      R8X  g   Q hV
! V4      V
! V4      ,          P                  V! W!4      ^4      ^8X  g   Q hV! W4      P                  V! W!4      4      / 8X  g   Q hV	! WV4      P                  V	! W!V4      4      e   Q hV	! WV4      P                  V	! W#V4      4      / 8X  g   Q hR# )zQ
Test match and replace with the pattern being a WildTensor or a WildTensorIndex
r   r   r=  za b cTr   r   ignore_updownr   r   r   r?   Wunordered_indicesrS  N)r   r   r   r)   r>  r?  r#   r*   matchesreplaceheadr+   )r   r   r  r  rE   rF   rO   r   r>  r@  r   r   r?   rb  rS  s                  r6   test_tensor_matchingrh    s^    
1	%BWb)GA!G?bX\]EAR AHHE
**C3A3A3!Asd3AsA99Q<A5   99aR=QrF"""99aR=D   99Q<A5   qA;A
,444qA;A
,r1===qA;s1qz1-2223;;!QqT	#QqT!A$Y'7777Q4<<1A1M!A$4G#HHHHQ6>>1Q4!9&1!]1Q4PQRSPT9=U*VVVVQ6>>1Q4!9&1Q6;;ad1Q4i8P*QQQQQ6>>1Q6#!]1Q75K'LLLLQ6>>1Q6#t+++qT!A$Y  !A&!,111 :eAj)R///q1:c!aj)111q1:c!aj)R///r8   c                    \        R^R7      p \        RV 4      w  r\        RV .4      p\        RV .4      p\        RRR7      pV! V4      V! V4      ,          V! V4      V! V4      ,          ,           P	                  V! V4      V! V4      ,          V! V4      V! V4      ,          ,           4      / 8X  g   Q hV! V4      V! V4      ,          V! V4      V! V4      ,          ,           P	                  V! V4      V! V4      ,          V! V4      V! V4      ,          ,           V! V4      V! V4      ,          ,           V! V4      V! V4      ,          ,           4      e   Q hV! V4      V! V4      ,          V! V4      V! V4      ,          ,           V! V4      V! V4      ,          ,           V! V4      V! V4      ,          ,           P                  V! W4      V! V4      V! V4      ,          ,           V! V4      V! V4      ,          ,           V! W4      ^V! V4      ,          V! V4      ,          ,           4      P                  4       V! V4      V! V4      ,          ^V! V4      ,          V! V4      ,          ,           8X  g   Q hR	# )
z9
Test match and replace with the pattern being a TensAdd
r   r   r\  r   r   rb  Trc  N)r   r   r#   r*   re  rf  r   )r   r   r  r   r   rb  s         r6   test_TensAdd_matchingrj    s    
1	%B%$DA3A3Asd3AqT!A$Y1ad",,ad1Q4i!A$qt).CEKKKqT!A$Y1ad",,ad1Q4i!A$qt).Cad1Q4i.ORSTURVWXYZW[R[.[]eeeqT!A$Y1ad"QqT!A$Y.1ad:DD	!1adQqT!A$Y&	!1Q4!
 $&AaD1I!A$qt+, , ,r8   c            	     P   \        R^R7      p \        RV 4      w  rr4p\        R4      p\        R\        V RR7      w  rxrrV P
                  pV P                  p\        RV .4      p\        R	V .4      p\        R
RR7      p\        R4      p\        R4      pWo! V4      ,          P                  V! V4      4      V^/8X  g   Q hWn! WV4      ,          P                  V! WV4      4      VR/8X  g   Q hV! V4      V! V) 4      ,          P                  V! V4      V! V) 4      ,          ^4      ^8X  g   Q hV! V4      V! V4      ,          V! V) 4      ,          P                  V! W'4      V! V) 4      ,          ^4      ^8X  g   Q hV! V4      V! V) 4      ,          P                  V! V) 4      V! V4      ,          ^4      ^8X  g   Q hV! V4      V! V4      ,          V! V) 4      ,          P                  V! V4      V! V4      ,          V! V) 4      ,          ^4      ^8X  g   Q hV! V4      V! V4      ,          P                  V! 4       V! V4      ,          V! V4      ,          V! 4       V! V4      ,          V! V4      ,          4      P                  4       V! V4      V! V4      ,          8X  g   Q hV! W1V4      V! V) V) V) 4      ,          P                  V! WV4      V! V) W4      ,          V! Wy4      V! W4      ,          V! Wz4      V! W4      ,          ,
          4      P                  4       P                  4       V! W) 4      V! W%) 4      ,          V! W) 4      V! W$) 4      ,          ,
          8X  g   Q hV! W1V4      V! V) V) V) 4      ,          P                  V! WV4      V! V	) W4      ,          V! Wz4      V! W4      ,          V! W|4      V! W4      ,          ,
          4      P                  V4      P                  4       ^8X  g   Q hV! V) 4      V! V4      ,          V! V) 4      ,          P                  VV! 4       ,          V! V4      ,          V! V) 4      ,          VV! 4       ,          4      P                  4       V! V) 4      8X  g   Q hV^,          V! V4      ,          V! V) 4      ,          P                  VV! 4       ,          V! V4      ,          V! V) 4      ,          VV! 4       ,          V^,          ,          4      P                  4       V^,          8X  g   Q hV! V4      V! V4      ,          P                  V! V4      V! V4      ,          V! V4      V! V4      ,          4      V! V4      V! V4      ,          8X  g   Q hV! V4      V! V4      ,          V! V4      ,          P                  V! W#4      V! V4      ,          V! W4      V! W$4      ,          V! V) 4      ,          4      V! V4      V! V4      ,          V! V4      ,          V! V4      ,          V! V) 4      ,          8X  g   Q h\        RV 4      w  ppppV! V) V) 4      V! V4      ,          V! V4      ,          V! V) 4      ,          pV! 4       V! V4      ,          V! V) 4      ,          P                  V4      pVVP                  4       9  g   Q hR# )z9
Test match and replace with the pattern being a TensMul
r   r   z	p q r s twiza b c d e fTr`  r   r   rb  rc  rS  zR_0 R_1 R_2 R_3Nrg   )r   r   r   r   r)   r>  r?  r#   r*   r   re  rf  r   r$   rY  values)r   r   r  r  rE  rI   rl  rE   rF   rO   rP   rv   re   r>  r@  r   r   rb  rS  r   D0D1D2D3r   r  s                             r6   test_TensMul_matchingrr  +  s    
1	%B";3MA!	dB-RTdhiKAAHHE
**C3A3Asd3AsAsA!W!&2q'111#a!*_&&s1qz2r"g===qT!QB%Z!!1Q41":q1Q666qT!A$Yq!u_&&!q!ua8A===qT!QB%Z!!1aR51:q2a777qT!A$Yq!u_&&!QqT	!QB%;q@@@	
1adAC!HQqTM13qt8AaD=9>>@Q4!9	
	 a!*S!QBr]
",,AJsA2a{"!JuQz!E!JuQz$99	 dfXXZ2;uQr{"U1R[q%<<		=
	= a!*S!QBr]
",,AJsA2a{"!JuQz!E!JuQz$99	 nU#DDF		
	 rU1Q4Z1"''AC!QrU):BqsFDIIKqRSQSuTTTT!A$Yq!u_&&13qtAqbE(92ac6!Q$;HMMOSTVWSWWWW A$qt)ad1Q4i1ad3Q4!9	
	 A$qt)AaD.""1Q6!A$;!qvae0CEQ4!9QqT>!A$q!u$	%
	%
 $$5r:NBB"rc?1R5 2&q"v-D
#ad(1aR5.""4(AQXXZr8   c            	        \        R^R7      p \        RV 4      w  rp\        RV .4      p\        RV .4      p\        RW .4      p\        V P                  R,           V R4      p\        R	V RR
7      pV! V4      V! V4      ,          V! V) 4      ,          P                  V! V4      V! V4      V! V) 4      ,          /4      V! V4      V! V4      ,          V! V) 4      ,          V! V) 4      ,          8X  g   Q hV! V4      V! V4      ,          V! V) 4      ,          P                  V! V4      V! V4      V! V) 4      ,          /4      V! V4      V! V4      ,          V! V) 4      ,          V! V) 4      ,          8X  g   Q hV! V4      V! V4      ,          P                  WV! V4      V! V4      V! V) 4      ,          /4      V! V4      V! V4      ,          V! V) 4      ,          8X  g   Q hV! V4      V! W") 4      ,          V! V) 4      ,          P                  4       V! V4      V! W") 4      ,          V! V) 4      ,          8X  g   Q hV! V4      V! V) 4      ,          P                  V! V4      V! V4      V! V4      ,          V! V) 4      ,          4      V! V4      V! V4      ,          V! V) 4      ,          V! V) 4      ,          8X  g   Q hR# )z3
Test subs and xreplace in TensMul. See bug #24337
r   r   r=  r   r   r?   _0TrE   )ra  N)
r   r   r#   r   r=   r)   subsxreplacer   rf  )	r   r   r  r  r   r   r?   C0rE   s	            r6   test_TensMul_subsrx  f  sC    
1	%BWb)GA!3A3A3!A	R]]T)2t	4BRt4AqT!A$Yq!u_##QqT1Q41":$671Q4!9QrU?1aR5;PPPPqT!A$Yq!u_''1qtAqbEz(:;qtAaDyA2qRSQSu?TTTTqT!A$Y!!1!A$!QrU
";<"ad
1aR5@PPPPqT!Ab'\!QB%&&(AaD1RLA2,>>>>qT!QB%Z!!1Q41ad1aR5:ad1Q4i1"oaQRPRe>SSSSr8   c                      \        4       ;_uu_ 4        \        ^.^,          4       RRR4       R#   + '       g   i     R# ; i)rS  N)r.   r&   r   r8   r6   test_tensorsymmetryrz  y  s(    		!	!s1u 
"	!	!	!s	   1A	c                  |    \        4       ;_uu_ 4        \        R . 4       RRR4       R#   + '       g   i     R# ; i)r?   N)r.   r%   r   r8   r6   test_tensorheadr|  }  s$    		!	!3 
"	!	!	!s   *;	c                      \        4       ;_uu_ 4        \        P                  ! ^4      p \        R4      p\	        V.^,          V 4      p\        V\        4      '       g   Q h RRR4       R#   + '       g   i     R# ; i)r   r:   N)r.   r   rD   r   r'   r2   )r   r:   S2s      r6   test_TensorTyper    sY    		!	!--a0!),	!T*"j))))	 
"	!	!	!s   AA,,A=	c                  ~    \        4       ;_uu_ 4        \        R RR7       RRR4       R#   + '       g   i     R# ; i)r:   r;   )	dummy_fmtN)r.   r   r   r8   r6   test_dummy_fmtr    s$    		!	!	S1 
"	!	!	!s   +<	c            	     :   \        R^R7      p \        RV 4      p\        RV .4      p\        R4      w  r4p\	        V^,          P                  W2! V4      /4      \        4      '       g   Q h\	        V^,           P                  W2! V4      V! V) 4      ,          /4      \        4      '       g   Q h\	        V^,          P                  W2! V4      /4      \        4      '       g   Q h\	        V^,           P                  W2! V4      V! V) 4      ,          /4      \        4      '       g   Q h\	        V^,          P                  W2! V4      4      \        4      '       g   Q h\	        V^,           P                  W2! V4      V! V) 4      ,          4      \        4      '       g   Q hR# )z
Test if substituting a Tensor into a Mul or Add automatically converts it
to TensMul or TensAdd respectively. See github issue #25051
r   r   rz   r   zx y zN)
r   r   r#   r   r2   rv  r   r   ru  rf  )r   rz   r   r   r=  zs         r6   test_postprocessorr    sB   
 
1	%BsBA3AGEAqsnna1Y/9999qsnna1ae_5w????qsjj!QqT+W5555qsjj!QqT!QB%Z17;;;;qsmmAqt,g6666qsmmAqtAqbEz2G<<<<r8   c                     \        R^R7      p \        RV 4      w  r\        RV .4      p\        RV .4      p\        ^V! V4      V! V4      4      pVP                  VP
                  ,          V8X  g   Q hR# )zI
Ensure that for any TensMul instance, self.coeff * self.nocoeff == self
r   r   zi jr   PN)r   r   r#   r   r   nocoeff)r   rz   r   r   r  r   s         r6   test_TensMul_nocoeffr    sk    
 
1	%B%$DA3A3A1adAaD!D::$,,,r8   N)sympy.concrete.summationsr   sympy.core.functionr   sympy.core.numbersr   sympy.matrices.denser   r   sympy.tensor.indexedr   sympy.combinatoricsr	   
sympy.corer
   r   r   r   r   r   r   sympy.core.containersr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   sympy.integralsr   sympy.tensor.arrayr   sympy.tensor.tensorr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   sympy.testing.pytestr,   r-   r.   sympy.matricesr/   r7   rL   rQ   rV   r\   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r&  r+  r-  r/  r2  r7  r9  r;  rA  rC  rF  rZ  r]  ra  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r2  r:  rA  rY  r^  rh  rj  rr  rx  rz  r|  r  r  r  r  r   r8   r6   <module>r     s   ) & & . ( + F F F ' % 9 % $3 3 3 3 3 3 G F K<Z((TL.GrT&l.$WP,"$TA$M*U&62T;l'6"](#0J#J(  *?XAPF_-D	,/)+V%N8*:#5L7 z6RrJ0&A(50%!&_R*,:f#YL7B6&;>809v4>0'fD9N	'xJvC2"0H,"9 vT&*2=&-r8   