Ë
    7^(hT= ã                   óä  — d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z; d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd„ ZEd„ ZFd„ ZGd„ ZHd„ ZId„ ZJd„ ZKd „ ZLd!„ ZMd"„ ZNd#„ ZOd$„ ZPd%„ ZQd&„ ZRd'„ ZSd(„ ZTd)„ ZUe8d*„ «       ZVd+„ ZWd,„ ZXd-„ ZYd.„ ZZd/„ Z[d0„ Z\d1„ Z]d2„ Z^d3„ Z_d4„ Z`d5„ Zad6„ Zbd7„ Zcd8„ Zdd9„ Zed:„ Zfd;„ Zgd<„ Zhd=„ Zid>„ Zjd?„ Zkd@„ ZldA„ ZmdB„ ZndC„ ZodD„ ZpdE„ ZqdF„ ZrdG„ ZsdH„ ZtdI„ ZudJ„ ZvdK„ ZwdL„ ZxdM„ ZydN„ ZzdO„ Z{dP„ Z|dQ„ Z}dR„ Z~dS„ ZdT„ Z€dU„ Z�dV„ Z‚yW)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                 ó�   — t        | t        «      r| j                  |«      S t        |t        «      r|j                  | «      S | |k(  S ©N)Ú
isinstancer"   Úequals)Úarg1Úarg2s     ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/tensor/tests/test_tensor.pyÚ	_is_equalr7      s>   € Ü�$œÔ!Ø�{‰{˜4Ó Ð Ü	�Dœ(Ô	#Ø�{‰{˜4Ó Ð Ø�4‰<Ðó    c                  óL  — t        dd¬«      } t        d| «      \  }}}}t        d| gt        j                  d«      «      \  }} || «       ||«      z  }|j                  «       }t        |«      dk(  sJ ‚ ||«       ||«      z  }|j                  «       }||k(  sJ ‚ ||«       ||«      z  }	|	j                  «       }t        |«      dk(  sJ ‚t        d	| gd
z  t        j                  d
«      «      } ||| «       |||«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gt        j                  d«      «      \  }}
 ||| «       ||«      z   |
| «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d	| gd
z  t        j                  d
«      «      } ||| «       ||«      z   |
| «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gd
z  t        j                  d
«      «      } ||| «       || |«      z  }|j                  «       }t        |«      dk(  sJ ‚ || |«       || |«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gd
z  t        j                  d
«      «      }
 |||«       || | «      z   |
| | «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d	| gd
z  t        j                  d
«      «      } |||«       || | «      z   |
| | «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gd
z  t        j                  d
«      «      }
 |||«       || | «      z   |
| | «      z  }|j                  «       }t        |«      dk(  sJ ‚y )NÚLorentzÚL©Ú
dummy_namez	a,b,d0,d1úA,Bé   zA(L_0)*B(-L_0)z	A(a)*B(b)ÚAé   z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))	r   r   r    r   Úno_symmetryr$   Ústrr#   Úfully_symmetric)r:   ÚaÚbÚd0Úd1r@   rB   ÚtÚtcÚt1rC   s              r6   Útest_canonicalize_no_slot_symrN      s«  € ä˜i°CÔ8€GÜ! +¨wÓ7�L€A€qˆ"ˆbÜ˜ ˜y¬.×*DÑ*DÀQÓ*GÓH�D€A€qÙ	ˆ2ˆ#‹‰q�‹u‰€AØ	
�‰‹€BÜˆr‹7Ð&Ò&Ð&Ð&ñ 	
ˆ!‹‰Qˆq‹T‰	€AØ	
�‰‹€BØ�Š7€Nˆ7á	
ˆ1‹‰a�‹d‰€BØ	�‰‹€BÜˆr‹7�kÒ!Ð!Ð!ô 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ!ˆbˆS‹	‘!�B˜“(Ñ€AØ	
�‰‹€BÜˆr‹7Ð,Ò,Ð,Ð,ô ˜ ˜y¬.×*DÑ*DÀQÓ*GÓH�D€A€qÙ	ˆ"ˆrˆc‹
‘1�R“5Ñ™˜B˜3›Ñ€AØ	
�‰‹€BÜˆr‹7Ð3Ò3Ð3Ð3ô
 	�3˜˜	 !™¤^×%?Ñ%?ÀÓ%BÓC€AÙ	ˆ"ˆrˆc‹
‘1�R“5Ñ™˜B˜3›Ñ€AØ	
�‰‹€BÜˆr‹7Ð3Ò3Ð3Ð3ô
 	�3˜˜	 !™¤^×%?Ñ%?ÀÓ%BÓC€AÙ	ˆ"ˆrˆc‹
‘1�b�S˜"“:Ñ€AØ	
�‰‹€BÜˆr‹7Ð1Ò1Ð1Ð1ñ 	
ˆ2ˆ#ˆr‹
‘1�b�S˜"“:Ñ€AØ	
�‰‹€BÜˆr‹7Ð1Ò1Ð1Ð1ô
 	�3˜˜	 !™¤^×%?Ñ%?ÀÓ%BÓC€AÙ	ˆ"ˆb‹	‘!�Q�B˜˜“*Ñ™Q ˜s Q B›ZÑ'€AØ	
�‰‹€BÜˆr‹7Ð;Ò;Ð;Ð;ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆb‹	‘!�Q�B˜˜“*Ñ™Q ˜s Q B›ZÑ'€AØ	
�‰‹€BÜˆr‹7Ð;Ò;Ð;Ð;ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆb‹	‘!�Q�B˜˜“*Ñ™Q ˜s Q B›ZÑ'€AØ	
�‰‹€BÜˆr‹7Ð;Ò;Ð;Ñ;r8   c                  ór  — t        dd¬«      } t        d| «      \  }}}}t        d| gt        j                  d«      «      } ||«       ||«      z   ||«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gt        j                  d«      d«      } ||«       ||«      z   ||«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gd	z  t        j                  d	«      «      } |||«       |||«      z  }|j                  «       }t        |«      d
k(  sJ ‚t        d| gd	z  t        j                  d	«      d«      } |||«       |||«      z  }|j                  «       }t        |«      dk(  sJ ‚ |||«       |||«      z  }|j                  «       }t        |«      d
k(  sJ ‚y )Nr:   r;   r<   ú
a, b, c, dr@   r?   zA(a)*A(b)*A(c)z-A(a)*A(b)*A(c)rA   zA(a, c)*A(b, d)z-A(a, c)*A(b, d))r   r   r#   r   rD   r$   rE   rF   )r:   rG   rH   ÚcÚdr@   rK   rL   s           r6   Útest_canonicalize_no_dummiesrS   l   s«  € Ü˜i°CÔ8€GÜ ¨gÓ6�J€A€qˆ!ˆQô
 	�3˜˜	¤>×#=Ñ#=¸aÓ#@ÓA€AÙ	ˆ!‹‰Qˆq‹T‰	‘!�A“$‰€AØ	
�‰‹€BÜˆr‹7Ð&Ò&Ð&Ð&ô
 	�3˜˜	¤>×#=Ñ#=¸aÓ#@À!ÓD€AÙ	ˆ!‹‰Qˆq‹T‰	‘!�A“$‰€AØ	
�‰‹€BÜˆr‹7Ð'Ò'Ð'Ð'ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ!ˆQ‹‘�!�Q“‰€AØ	
�‰‹€BÜˆr‹7Ð'Ò'Ð'Ð'ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÈÓJ€AÙ	ˆ!ˆQ‹‘�!�Q“‰€AØ	
�‰‹€BÜˆr‹7Ð(Ò(Ð(Ð(ñ 	
ˆ!ˆQ‹‘�!�Q“‰€AØ	
�‰‹€BÜˆr‹7Ð'Ò'Ð'Ñ'r8   c                  óÚ   — t        d«      } t        d| | g«      }t        d| | gt        j                  d«      «      }||k(  sJ ‚t        d| | gt        j                  d«      «      }||k7  sJ ‚y )Nr:   r@   rA   )r   r#   r   rD   rF   )r;   ÚA1ÚA2ÚA3s       r6   Ú-test_tensorhead_construction_without_symmetryrX   –   sl   € Ü˜	Ó"€AÜ	�C˜!˜Q˜Ó	 €BÜ	�C˜!˜Q˜¤×!;Ñ!;¸AÓ!>Ó	?€BØ�Š8€Oˆ8Ü	�C˜!˜Q˜¤×!?Ñ!?ÀÓ!BÓ	C€BØ�Š8€O‰8r8   c                  ó   — t        ddd¬«      } t        d| «      \  }}}}t        d| gdz  t        j                  d«      «      } ||| «       ||| «      z  }|j                  «       }t        |«      dk(  sJ ‚ ||| «       ||| «      z   ||| «      z   ||| «      z  }|j                  «       }t        |«      d	k(  sJ ‚ ||| «       ||| «      z   ||| «      z   ||| «      z  }|j                  «       }t        |«      d
k(  sJ ‚y )Nr:   r;   r   ©r=   Úmetric_symmetryzd:4r@   rA   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))r   r   r#   r   rD   r$   rE   )r:   rI   rJ   Úd2Úd3r@   rK   rL   s           r6   Útest_no_metric_symmetryr^   ž   s%  € ô ˜i°CÈÔK€GÜ# E¨7Ó3�N€BˆˆB�Ü�3˜˜	 !™¤^×%?Ñ%?ÀÓ%BÓC€AÙ	ˆ"ˆrˆc‹
‘1�R˜"˜“:Ñ€AØ	
�‰‹€BÜˆr‹7Ð1Ò1Ð1Ð1ñ 	
ˆ"ˆrˆc‹
‘1�R˜"˜“:Ñ™a  R C›jÑ(©¨2°¨s«Ñ3€AØ	
�‰‹€BÜˆr‹7ÐKÒKÐKÐKñ 	
ˆ"ˆrˆc‹
‘1�R˜"˜“:Ñ™a  R C›jÑ(©¨2°¨s«Ñ3€AØ	
�‰‹€BÜˆr‹7ÐKÒKÐKÑKr8   c            
      ó  — t        dd¬«      } t        d| «      \
  }}}}}}}}}	}
t        d| gt        j                  d«      «      } || «       ||«      z  }|j                  «       }t        |«      dk(  sJ ‚ || «       || «      z   ||	 «      z   ||	«      z   ||«      z   ||«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gt        j                  d«      d«      } || «       || «      z   ||	 «      z   ||	«      z   ||«      z   ||«      z  }|j                  «       }|d	k(  sJ ‚t        d| gd
z  t        j                  d
«      «      } |||«       ||| «      z   ||| «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gd
z  t        j                  d
«      «      } |||«       ||| «      z   ||| «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gdz  t        j                  d«      «      } ||||«       ||| | «      z  }|j                  «       }t        |«      dk(  sJ ‚ ||
||	«       ||| |	 «      z   |||
 |«      z   |||| «      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gdz  t        j                  d«      «      }t        d| gd
z  t        j                  d«      «      } ||||	«       ||	 |
 | «      z   || |
«      z  }|j                  «       }|d	k(  sJ ‚t        d| gdz  t        j                  d«      d«      }t        d| gd
z  t        j                  d«      «      } ||||	«       ||	 |
 | «      z   || |
«      z  }|j                  «       }t        |«      dk(  sJ ‚t        ddd¬«      }t        d|«      \
  }}}}}}}}}	}
t        d|gdz  t        j                  d«      d«      }t        d|gd
z  t        j                  d«      «      } ||||	«       ||	 |
 | «      z   || |
«      z  }|j                  «       }t        |«      dk(  sJ ‚t        dd	d¬«      }t        d|«      \
  }}}}}}}}}	}
t        d|gdz  t        j                  d«      d«      }t        d|gd
z  t        j                  d«      «      } ||||	«       ||	 |
 | «      z   || |
«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| «      \  }}}}}}t        d| gt        j                  d«      d
«      }t        d| gd
z  t        j                  d«      d
«      }t        d| gdz  t        j                  d«      d
«      } || | «       ||«      z   ||||«      z  }|j                  «       }t        |«      dk(  sJ ‚ |||«       |||«      z   || «      z   ||| | «      z  }|j                  «       }t        |«      d k(  sJ ‚t        d!d"¬«      }t        d#|«      \  }}}}}}t        d$| «      \  }}t        d%|gdz  t        j                  dd«      «      }t        d| |gt        j                  d
«      «      } ||| | «       || | | «      z   || |«      z   || |«      z   |||«      z   |||«      z  }|j                  «       }t        |«      d&k(  sJ ‚y )'Nr:   r;   r<   za,a0,a1,a2,a3,b,d0,d1,d2,d3r@   r?   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)r   rA   z!A(a, L_0)*A(b, L_1)*A(-L_0, -L_1)rB   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
   éÿÿÿÿrZ   z2-A(S_0, S_1, S_2)*A(-S_0, -S_1, S_3)*B(-S_2, -S_3)ÚMatÚM)r[   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ÚGammaéýÿÿÿz4-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))	r   r   r#   r   rD   r$   rE   rF   Údirect_product) r:   rG   Úa0Úa1Úa2Úa3rH   rI   rJ   r\   r]   r@   rK   rL   rB   rb   rd   ÚalphaÚbetaÚgammaÚmuÚnuÚrhorf   ÚGamma2ÚGamma3rh   rQ   rR   ÚeÚffrk   s                                    r6   Útest_canonicalize1r{   µ   se  € Ü˜i°CÔ8€GäÐ4°gÓ>ñ )€A€rˆ2ˆr�2�q˜"˜b " bô
 	�3˜˜	¤>×#=Ñ#=¸aÓ#@ÓA€AÙ	ˆ2ˆ#‹‰q�‹u‰€AØ	
�‰‹€BÜˆr‹7Ð&Ò&Ð&Ð&ñ
 	
ˆ2ˆ#‹‰q�"�‹v‰‘a˜˜“fÑ™Q˜r›UÑ"¡1 R£5Ñ(©¨2«Ñ.€AØ	
�‰‹€BÜˆr‹7ÐDÒDÐDÐDô
 	�3˜˜	¤>×#=Ñ#=¸aÓ#@À!ÓD€AÙ	ˆ2ˆ#‹‰q�"�‹v‰‘a˜˜“fÑ™Q˜r›UÑ"¡1 R£5Ñ(©¨2«Ñ.€AØ	
�‰‹€BØ�Š7€Nˆ7ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆa‹‘�1�r�c“Ñ™1˜R " ›:Ñ%€AØ	
�‰‹€BÜˆr‹7Ð9Ò9Ð9Ð9ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆa‹‘�2˜�s“Ñ™A˜a " ›IÑ%€AØ	
�‰‹€BÜˆr‹7Ð9Ò9Ð9Ð9ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆb�!‹‘Q�q˜2˜# ˜s“^Ñ#€AØ	
�‰‹€BÜˆr‹7Ð7Ò7Ð7Ð7ñ 	
ˆ"ˆb�"‹‘a˜˜R˜C " “oÑ%¡a¨¨R¨C°£nÑ4±Q°r¸2À¸s³^ÑC€AØ	
�‰‹€BÜˆr‹7Ð[Ò[Ð[Ð[ô 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÜ�3˜˜	 !™¤^×%CÑ%CÀBÓ%GÓH€AÙ	ˆ"ˆb�"‹‘a˜˜˜b˜S 2 #Ó&Ñ&¡q¨"¨¨b£zÑ1€AØ	
�‰‹€BØ�Š7€Nˆ7ô
 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÈÓJ€AÜ�3˜˜	 !™¤^×%CÑ%CÀBÓ%GÓH€AÙ	ˆ"ˆb�"‹‘a˜˜˜b˜S 2 #Ó&Ñ&¡q¨"¨¨b£zÑ1€AØ	
�‰‹€BÜˆr‹7ÐIÒIÐIÐIô
 ˜X°#ÀrÔJ€FäÐ4°fÓ=ñ )€A€rˆ2ˆr�2�q˜"˜b " bä�3˜˜ ™
¤N×$BÑ$BÀ1Ó$EÀqÓI€AÜ�3˜˜ ™
¤N×$BÑ$BÀ2Ó$FÓG€AÙ	ˆ"ˆb�"‹‘a˜˜˜b˜S 2 #Ó&Ñ&¡q¨"¨¨b£zÑ1€AØ	
�‰‹€BÜˆr‹7ÐJÒJÐJÐJô ˜%°¸sÔ
C€CäÐ4°cÓ:ñ )€A€rˆ2ˆr�2�q˜"˜b " bä�3˜˜˜a™¤×!?Ñ!?ÀÓ!BÀAÓF€AÜ�3˜˜˜a™¤×!?Ñ!?ÀÓ!CÓD€AÙ	ˆ"ˆb�"‹‘a˜˜˜b˜S 2 #Ó&Ñ&¡q¨"¨¨b£zÑ1€AØ	
�‰‹€BÜˆr‹7ÐIÒIÐIÐIô 	Ð3°WÓ=ñ $€Eˆ4�˜˜B ä�w  	Ü%×5Ñ5°aÓ8¸!ó=€Eä˜ ' ¨1¡Ü&×6Ñ6°rÓ:¸Aó?€Fä˜ ' ¨1¡Ü&×6Ñ6°rÓ:¸Aó?€Fá�ˆs�R�CÓ™˜s›Ñ#¡F¨2¨r°5Ó$9Ñ9€AØ	
�‰‹€BÜˆr‹7ÐLÒLÐLÐLñ 	ˆr�2‹‘v˜d EÓ*Ñ*©5°#°«;Ñ6±v¸eÀbÀSÈ2È#Ó7NÑN€AØ	
�‰‹€BÜˆr‹7Ð_Ò_Ð_Ð_ô ˜X°#Ô6€FÜ& }°fÓ=Ñ€A€qˆ!ˆQ��2Ü˜G WÓ-�F€BˆÜ�3˜˜ ™
¤N×$AÑ$AÀ!ÀRÓ$HÓI€AÜ�3˜ &Ð)¬>×+EÑ+EÀaÓ+HÓI€AÙ	ˆ!ˆaˆR�!�‹‘Q˜�r˜A˜2 ˜r“]Ñ"¡1 b S¨!£9Ñ,©Q°¨s°A«YÑ6±q¸¸Q³xÑ?ÁÀ"ÀaÃÑH€AØ	
�‰‹€BÜˆr‹7ÐqÒqÐqÑqr8   c                  ó†   — t        d«      } t        d| «      }t        |t        t        f«      rJ ‚t        |t
        «      sJ ‚y )Nr@   Úi)r   r   r2   ÚtupleÚlistr   )r@   r}   s     r6   Ú"test_bug_correction_tensor_indicesr€   ?  s>   € ô 	˜Ó€AÜ�s˜AÓ€AÜ˜!œe¤T˜]Ô+Ð+Ð+Ü�aœÔ%Ð%Ñ%r8   c                  óÖ  — t        dd¬«      } t        d| «      \  }}}}}}}}}	}
}}t        d| gdz  t        j                  «       «      } |||| | «      }|j                  «       }t        |«      dk(  sJ ‚ || || |«       ||||| «      z   || | |	 |
 «      z   || | | | «      z   ||||| «      z   ||	|
||«      z  }|j                  «       }t        |«      dk(  sJ ‚y )	Nr:   r;   r<   zd0:12ÚRé   z-R(L_0, L_1, -L_0, -L_1)z“R(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))r   r   r#   r   Úriemannr$   rE   )r:   rI   rJ   r\   r]   Úd4Úd5Úd6Úd7Úd8Úd9Úd10Úd11r‚   rK   rL   s                   r6   Útest_riemann_invariantsr�   H  s1  € Ü˜i°CÔ8€Gä�w Ó(ñ 5€BˆˆB��B˜˜B  B¨¨C°ô 	�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€AÙ	ˆ"ˆb�2�#˜�sÓ€AØ	
�‰‹€BÜˆr‹7Ð0Ò0Ð0Ð0ñ 	
ˆ3ˆ$ˆr�2�#�bÓ™!˜B˜r " b S›/Ñ)©!¨R¨C°°°R°C¸¸Ó*<Ñ<Ù	ˆ3ˆ$�ˆs�B�3˜�sÓñ	Ù˜b  C¨¨Ó,ñ	-Ù-.¨r°"°R¸«_ñ	=€Aà	
�‰‹€BÜˆr‹7ð  lò  lð  lñ  lr8   c                  ón  — t        dd¬«      } t        d| «      \  }}}}}}}t        d| «      \  }}	}
}}}t        d| «      \  }}t        d| gdz  t        j                  «       «      } ||||| «      }|j                  «       }|d	k(  sJ ‚ ||||| «      }|j                  «       }t        |«      d
k(  sJ ‚ ||| || «       |||| |«      z  }|j                  «       }t        |«      dk(  sJ ‚t        d| gdz  t        j                  d«      «      } |||| |«       |||||«      z   || | «      z   || | «      z   || | «      z  }|j                  «       }t        |«      dk(  sJ ‚ ||||
|«       ||| |	|«      z   |||| | «      z  }|j                  «       }t        |«      dk(  sJ ‚y )Nr:   r;   r<   zd0:7za0:6úa,br‚   rƒ   r   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)ÚVrA   zW-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))r   r   r#   r   r„   r$   rE   rF   )r:   rI   rJ   r\   r]   r…   r†   r‡   rm   rn   ro   rp   Úa4Úa5rG   rH   r‚   rK   rL   r�   s                       r6   Útest_riemann_productsr“   _  só  € Ü˜i°CÔ8€GÜ!/°¸Ó!@Ñ€BˆˆB��B˜˜BÜ+¨F°GÓ<Ñ€BˆˆB��B˜Ü˜% Ó)�D€A€qÜ�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€Aá	ˆ!ˆQ��R�CÓ€AØ	
�‰‹€BØ�Š7€Nˆ7ñ 	
ˆ"ˆa��R�CÓ€AØ	
�‰‹€BÜˆr‹7Ð+Ò+Ð+Ð+ñ 	
ˆ"ˆrˆc�1�r�cÓ™1˜R  R C¨Ó,Ñ,€AØ	
�‰‹€BÜˆr‹7ÐCÒCÐCÐCô 	�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ"ˆb�2�#�rÓ™1˜R  R¨Ó,Ñ,©Q°¨s°R°C«[Ñ8¹¸B¸3ÀÀ»ÑDÁQÈÀsÈRÈCÃ[ÑP€AØ	
�‰‹€BÜˆr‹7ÐoÒoÐoÐoñ 	
ˆ"ˆb�"�bÓ™!˜B   R¨Ó,Ñ,©Q¨r°2¸°s¸R¸CÓ-@Ñ@€AØ	
�‰‹€BÜˆr‹7ÐVÒVÐVÑVr8   c                  óh  — t        d«      } t        dd| d¬«      }t        d|«      \  }}}}}}}}	}
}}}}}}t        d|gdz  t	        j
                  d	«      «      } ||||«       || ||«      z   || |	|«      z   || | |«      z   || | |
«      z  }|j                  «       }|d
k(  sJ ‚ ||||«       || ||«      z   || ||«      z   || |	|
«      z   || |	 |«      z   ||
 ||«      z   || | |«      z   || | |«      z   || | |«      z  }|j                  «       }|d
k(  sJ ‚y )NÚDÚEuclr?   ÚE)r[   Údimr=   zi0:15r@   r`   rg   r   )r   r   r   r#   r   rF   r$   )r•   r–   Úi0Úi1Úi2Úi3Úi4Úi5Úi6Úi7Úi8Úi9Úi10Úi11Úi12Úi13Úi14r@   rK   rM   s                       r6   Útest_canonicalize2r¨   ‡  s~  € Üˆs‹€AÜ˜6°1¸!ÈÔL€Dä�w Ó%ñ 6€B€rˆ"ˆR��2�b˜˜B˜r # c¨#¨c°#ä�3˜˜˜q™¤.×"@Ñ"@ÀÓ"DÓE€Añ
 	
ˆ"ˆR�‹‘A�r�c˜"˜R“LÑ ¡ B 3 r¨"£Ñ-©a°°°R°C¸«mÑ;¹A¸r¸cÀ2À#Àb»MÑI€AØ	
�‰‹€BØ�Š7€Nˆ7ñ
 	
ˆ"ˆR�‹‘A�r�c˜"˜R“LÑ ¡ B 3 r¨"£Ñ-©a°°°B°r«lÑ:¹1¸b¸SÀ"ÀÀR»=ÑHÙ	ˆ2ˆ#ˆc�#‹ñ	Ù˜"˜˜c˜T #“ñ	'Ù'(¨"¨¨c¨T°#£ñ	7Ù78¸"¸¸c¸TÀ#³ñ	G€Aà	
�‰‹€BØ�Š7€N‰7r8   c                  óf  — t        d«      } t        d| dd¬«      }t        d|«      \  }}}}}t        d|gt	        j
                  d«      d«      \  }} ||«       ||«      z  }	|	j                  «       }
|
|	k(  sJ ‚ ||«       ||«      z  }	|	j                  «       }
|
 ||«        ||«      z  k(  sJ ‚y )	Nr•   rb   rc   r
   ©r˜   r[   r=   úa0:5úchi,psir?   )r   r   r   r    r   rD   r$   )r•   rb   rm   rn   ro   rp   r‘   ÚchiÚpsirK   rM   s              r6   Útest_canonicalize3r¯   �  s³   € Üˆs‹€AÜ˜X¨1¸bÈSÔQ€FÜ# F¨FÓ3�N€B€rˆ"ˆR�Ü˜I¨ x´×1KÑ1KÈAÓ1NÐPQÓR�H€CˆáˆB‹‘�B“‰€AØ	
�‰‹€BØ�Š7€Nˆ7áˆB‹‘�B“‰€AØ	
�‰‹€BØ‘#�b“'�™#˜b›'Ñ!Ò!Ð!Ñ!r8   c                  ó¾   — t        dd¬«      } t        d| «      }t        d| g«      }t         ||«      d ||«      z  «      }|j	                  «        ||«       k(  sJ ‚y )NÚ	Cartesianr`   ©r˜   ÚpÚKra   )r   r   r#   r   r$   )r±   r³   r´   Úexprs       r6   Útest_canonicalize4r¶   «  sZ   € ä °Ô3€IÜ�s˜IÓ&€AÜ�3˜˜Ó$€AÜ‘A�a“D˜3™q ›t™8Ó%€DØ�=‰=‹?™q ›t˜eÒ#Ð#Ñ#r8   c                  ó^  — t        dd¬«      } t        d| «      }t        d| g«      }t        dt        ¬«      }t        d«      }t         ||«      |d	d
f«       ||«      z  }|j                  «       j                  «       t         ||«      |d	d
f«      j                  «        ||«      z  k(  sJ ‚y )NÚR3r`   r²   r³   r´   rk   )ÚclsÚxr   r?   )r   r   r#   r   r   r   Úas_dummyr$   )r¸   r³   r´   rk   rº   rµ   s         r6   Útest_canonicalize5r¼   ³  s�   € Ü	˜ 1Ô	%€BÜ�s˜BÓ€AÜ�3˜˜Ó€AÜ�œÔ"€AÜ�‹€Aä‘Q�q“T˜A˜a ˜7Ó#¡a¨£dÑ*€DØ�=‰=‹?×#Ñ#Ó%¬±1°Q³4¸!¸A¸a¸Ó)A×)JÑ)JÓ)LÉqÐQRËtÑ)SÒSÐSÑSr8   c                  óä  — t        d«      } t        ddd| d¬«      }t        d|«      \  }}}}}t        j                  d«      }t        t        d«      Ž }||k(  sJ ‚|j                  }	t        |	«      d	k(  sJ ‚|j                  |j                  k(  sJ ‚t        d
d
¬«      }
t        d|
«      \  }}|
j                  }	t        d|
gdz  |«      }t         ||| «      j                  «       «      dk(  sJ ‚y )Nr•   r:   Úgr?   r;   )Úmetric_namer[   r˜   r=   zm0:5rA   zg(Lorentz,Lorentz)ÚTSpacer<   zi0 i1r@   zA(TSpace_0, -TSpace_0))r   r   r   r   rF   r   ÚmetricrE   Úeps_dimr˜   r#   r$   )r•   r:   Úm0Úm1Úm2Úm3Úm4Úsym2Úsym2nr¾   rÀ   r™   rš   r@   s                 r6   Útest_TensorIndexTyperÊ   ½  só   € Üˆs‹€AÜ˜i°SÈ!Ø"#°ô5€Gä'¨°Ó8Ñ€BˆˆB��BÜ×)Ñ)¨!Ó,€DÜÔ3°AÓ6Ð7€EØ�5Š=Ðˆ=Ø�‰€AÜˆq‹6Ð)Ò)Ð)Ð)Ø�?‰?˜gŸk™kÒ)Ð)Ð)ä˜X°HÔ=€FÜ˜G VÓ,�F€BˆØ�‰€AÜ�3˜˜ ™
 DÓ)€AÜ‰q��R�C‹y×!Ñ!Ó#Ó$Ð(@Ò@Ð@Ñ@r8   c            	      ó¾  ‡‡‡‡‡	— t        dd¬«      Št        d‰«      \  ŠŠŠ	} ‰j                  ‰k(  sJ ‚‰‰ k7  sJ ‚t        d‰gdz  t	        j
                  d«      «      \  Š} ‰‰‰«       |‰ ‰	«      z  }|j                  «       }t        d‰«      }|‰|| ‰	gk(  sJ ‚t        t        ˆfd„«       t        t        ˆˆˆˆ	fd	„«       t        d
‰‰g«      Š ‰dd«       ‰t        d‰«      t        d‰«      «      k(  sJ ‚ ‰dd«       ‰t        d‰«      t        d‰d¬«      «      k(  sJ ‚ ‰dt        d‰«      «       ‰t        d‰«      t        d‰«      «      k(  sJ ‚y )Nr:   r;   r<   úa,b,c,dúA BrA   ÚL_0c                  ó   •— t        d‰ «      S )Nr`   )r   )r:   s   €r6   ú<lambda>ztest_indices.<locals>.<lambda>Ù  s   ø€ œ~¨a°Ó9€ r8   c                  ó   •—  ‰ ‰‰‰«      S r1   © ©r@   rG   rH   rQ   s   €€€€r6   rÐ   ztest_indices.<locals>.<lambda>Ú  s   ø€ ™q  1 Q›x€ r8   r@   rG   rH   z-bF©Úis_up)r   r   Útensor_index_typer    r   rF   Úget_indicesr   r,   Ú
ValueErrorr#   )
rR   rB   rK   ÚindicesrÎ   r@   r:   rG   rH   rQ   s
        @@@@@r6   Útest_indicesrÚ   Ï  s}  ü€ Ü˜i°CÔ8€GÜ 	¨7Ó3�J€A€qˆ!ˆQØ×Ñ 'Ò)Ð)Ð)Ø��Š7€Nˆ7Ü˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qÙ	ˆ!ˆA‹‰q�!��A‹w‰€AØ�m‰m‹o€GÜ
�e˜WÓ
%€CØ�q˜# ˜t QÐ'Ò'Ð'Ð'Ü
Œ:Ó9Ô:Ü
Œ:Ö'Ô(ä�3˜ 'Ð*Ó+€AÙˆS�#‹;™!œK¨¨WÓ5Ü'¨¨WÓ5ó7ò 7ð 7ð 7áˆS�$‹<™1œ[¨¨gÓ6Ü(¨¨g¸UÔCóEò Eð Eð EáˆS”+˜c 7Ó+Ó,±´+¸cÀ7Ó2KÜ2=¸cÀ7Ó2Kó1Mò Mð Mñ Mr8   c            	      ó  — t        j                  d«      t        t        d«      «      k(  sJ ‚t        j                  d«      t        t        dd«      «      k(  sJ ‚t        j                  d«      t        j                  d«      k(  sJ ‚t        j                  d«      t        j                  d«      k(  sJ ‚t        j                  ddd«      t        j                  d«      k(  sJ ‚t        t        d«      «      t        t        d«      Ž k(  sJ ‚t        j                  d«      } | j
                  dk(  sJ ‚| j                  t        dd«      k(  sJ ‚| j                  t         t        dd«      dd	«       t        dd«      dd	«      «      k(  sJ ‚y )
NrA   rg   r`   Téüÿÿÿrc   r?   r   rƒ   )
r   rF   r   rl   rD   ÚrankÚbaser   Ú
generatorsr	   )Úsyms    r6   Útest_TensorSymmetryrá   ä  s€  € Ü×)Ñ)¨!Ó,ÜÔ.¨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Ø�8‰8�qŠ=Ðˆ=Ø�8‰8”u˜Q “{Ò"Ð"Ð"Ø�>‰>œUÐ#4¤;¨q°!Ó#4°Q¸Ó#:Ð<M¼KÈÈ1Ó<MÈaÐQRÓ<SÓTÒTÐTÑTr8   c            	      óN  ‡‡‡‡‡‡— t        dd¬«      } t        d| «      \  ŠŠŠŠ| j                  Št        d| gdz  t	        j
                  d«      «      \  Š}t        t        ˆˆˆˆˆfd„«       t        t        ˆˆˆfd„«       t        t        ˆˆˆˆˆˆfd	„«       t        t        ˆˆˆˆfd
„«       t        t        ˆˆˆˆfd„«       t        «       5  t        t        ˆˆˆfd„«       d d d «       t        t        ˆˆˆfd„«       t        t        ˆˆˆfd„«       y # 1 sw Y   Œ4xY w)Nr:   r;   r<   rÌ   rÍ   rA   c                  ó*   •—  ‰‰‰«       ‰‰ ‰«      z  S r1   rÒ   )rG   rH   rQ   rR   r¾   s   €€€€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>ü  ó   ø€ ™q  A›w¡q¨¨A£w™€ r8   c                  ó8   •— t         j                   ‰‰ ‰«      z  S r1   ©r
   ÚOne)rG   rH   r¾   s   €€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>ý  s   ø€ œqŸu™u¡Q q¨!£W™}€ r8   c                  ó>   •—  ‰ ‰‰«       ‰‰‰«      z    ‰‰‰«      z  S r1   rÒ   )r@   rG   rH   rQ   rR   r¾   s   €€€€€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>þ  s#   ø€ ¡ ! Q£©!¨A¨q«'Ñ 1±1°Q¸³7Ñ:€ r8   c                  óL   •— t         j                   ‰ ‰‰«       ‰‰‰«      z   z  S r1   ræ   )r@   rQ   rR   r¾   s   €€€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>ÿ  s!   ø€ œqŸu™u¡a¨¨1£g±°!°Q³Ñ&7Ñ8€ r8   c                  ó*   •—  ‰ ‰‰«       ‰ ‰‰«      z   S r1   rÒ   rÓ   s   €€€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>   s   ø€ ™q  A›w©¨1¨a«Ñ0€ r8   c                  ó   •—  ‰ ‰‰«      dz  S ©NrA   rÒ   ©r@   rG   rH   s   €€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>  s   ø€ ¡1 Q¨£7¨A¡:€ r8   c                  ó   •— d ‰ ‰‰«      z  S rì   rÒ   rí   s   €€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>  s   ø€ ¨©1¨Q°«7©
€ r8   c                  ó(   •— t         ‰ ‰‰«      «      S r1   )Úabsrí   s   €€€r6   rÐ   ztest_TensExpr.<locals>.<lambda>  s   ø€ ¬©A¨a°«G«€ r8   )
r   r   rÁ   r    r   rF   r,   rØ   r.   ÚNotImplementedError)r:   rB   r@   rG   rH   rQ   rR   r¾   s     @@@@@@r6   Útest_TensExprrò   ÷  sË   ý€ Ü˜i°CÔ8€GÜ 	¨7Ó3�J€A€qˆ!ˆQØ�‰€AÜ˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qÜ
Œ:×.Ô/Ü
Œ:Õ,Ô-Ü
Œ:×:Ð:Ô;Ü
Œ:Ö8Ô9Ü
Œ:Ö0Ô1ô 
 Ó	!ñ /äŒzÕ-Ô.÷/ô ÔÕ 2Ô3Ü
ÔÕ 4Õ5÷	/ð /ús   ÃDÄD$c                  ó  — t        dd¬«      } t        d| gdz  «      }|j                  dk(  sJ ‚|j                  | | gk(  sJ ‚|j                  dk(  sJ ‚|j
                  t        j                  d«      k(  sJ ‚|j                  dk(  sJ ‚y )Nr:   r;   r<   r@   rA   r   )	r   r#   ÚnameÚindex_typesrÝ   Úsymmetryr   rD   Úcomm)r:   r@   s     r6   Útest_TensorHeadrø     s„   € ä˜i°CÔ8€GÜ�3˜˜	 !™Ó$€AØ�6‰6�SŠ=Ðˆ=Ø�=‰=˜W gÐ.Ò.Ð.Ð.Ø�6‰6�QŠ;Ðˆ;Ø�:‰:œ×3Ñ3°AÓ6Ò6Ð6Ð6Ø�6‰6�QŠ;Ð‰;r8   c            	      ó$  — t        «       j                  dk(  sJ ‚t        «       j                  «       dk(  sJ ‚t        dd¬«      } t	        d| «      \  }}}}}}}t        d| gdz  t        j                  d«      «      \  }}	 ||| «       |	||«      z  }
t        |
«      j                  |
«      sJ ‚ |	||«       |||«      z   } ||| «      |z  }t        |«      d	k(  sJ ‚|j                  «       }t        |«      d
k(  sJ ‚|j                  «       }t        |«      dk(  sJ ‚||
z   }t        |«      dk(  sJ ‚|j                  «       }t        |«      dk(  sJ ‚t        d| g«      \  }}} ||«      dz  }t        |«      dk(  sJ ‚d ||«      z  }t        |«      dk(  sJ ‚ ||«      d ||«      z  z   }
t        |
«      dk(  sJ ‚ || «      d || «      z  z   }t        |«      dk(  sJ ‚ ||«      }
|
|z  }t        |«      dk(  sJ ‚|j                  «       }t        |«      dk(  sJ ‚||
z  }|j                  «       }t        |«      dk(  sJ ‚|j                  «       }t        |«      dk(  sJ ‚ ||«      d ||«      z  z   }
|
|z  }|j                  «       }t        |«      dk(  sJ ‚ ||«      d ||«      z  z
  }
t        |
«      dk(  sJ ‚ || «      d || «      z  z   }|
|z  }|j                  «       }| ||«       || «      z  d ||«      z   || «      z  z
  k(  sJ ‚ ||«       ||«      z   ||«       ||«      z   z   ||«       ||«       ||«      z   z   ||«      d ||«      z  z
  z  z   }|j                  «       }|d ||«      z   ||«      z   ||«      z  d ||«      z   ||«      z   ||«      z  z
   ||«       ||«      z   ||«      z  z   d ||«      z   ||«      z   ||«      z  z
  k(  sJ ‚ ||«       ||«      z   d ||«      z  z    ||«       ||«      z
  z  }
 ||«       ||«      z   d ||«      z  z    ||«       ||«      z
  z  }|
|z   }|j                  «       }|d ||«      z   ||«      z  d ||«      z   ||«      z  z   d ||«      z   ||«      z  z   d ||«      z   ||«      z  z
  d ||«      z   ||«      z  z
  d ||«      z   ||«      z  z
  k(  sJ ‚ ||«       ||«      z  dz  }d|z   ||«       ||«      z  k(  sJ ‚ ||«       ||«      z   dz  }d|z   ||«       ||«      z   k(  sJ ‚t        j                   ||«       || «      z  z
  }|j                  «       }| || «       ||«      z  z   }|dk7  sJ ‚|j                  «       }|j                  d«      sJ ‚t        j                   ||«       || «      z  z   }| || «       ||«      z  z
  j                  «       j                  d«      sJ ‚ |||«       |	||«      z   }|j                  dk(  sJ ‚| |||«      z
   |	||«      z
  }
|
dk(  sJ ‚d ||| «       |	|| «      z   z
  }d ||| «       |	|| «      z   z   }
||
z   j                  «       j                  d«      sJ ‚d ||| «      z   }|
|k7  sJ ‚|t        j                   dg g g «      k7  sJ ‚t         ||«      t        d ||«      «      «      j                  «        ||«      k(  sJ ‚y )NrÒ   r   r:   r;   r<   úa,b,d0,d1,i,j,kr>   rA   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)rƒ   r`   r?   )r   ÚargsÚdoitr   r   r    r   rF   r3   rE   r   r$   r
   rç   rÝ   r   Ú	from_data)r:   rG   rH   rI   rJ   r}   ÚjÚkr@   rB   rM   Út2aÚt2Út2br³   ÚqÚrrK   Út3Útz1s                       r6   Ú	test_add1r    sU  € Ü‹9�>‰>˜RÒÐÐÜ‹9�>‰>Ó˜qÒ Ð Ð ä˜i°CÔ8€GÜ$Ð%6¸Ó@�O€A€aˆˆ2ˆa��!ä˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qÙ	
ˆ1ˆrˆc‹‘1�R˜“8Ñ	€BÜ�2‹;×Ñ˜bÔ!Ð!Ð!Ù
ˆB�‹(‘Q�r˜1“XÑ
€CÙ	
ˆ1ˆrˆc‹�3‰€BÜˆr‹7Ð:Ò:Ð:Ð:Ø	�‰‹€BÜˆr‹7ÐCÒCÐCÐCØ	�‰‹€BÜˆr‹7ÐCÒCÐCÐCØ
ˆr‰'€CÜˆs‹8Ð[Ò[Ð[Ð[Ø
�,‰,‹.€CÜˆs‹8ÐFÒFÐFÐFÜ˜7 W IÓ.�G€A€qˆ!Ù	ˆ"‹ˆa‰€AÜˆq‹6�YÒÐÐØ	‰!ˆB‹%‰€AÜˆq‹6�YÒÐÐÙ	
ˆ2‹�‘1�R“5‘‰€BÜˆr‹7Ð'Ò'Ð'Ð'Ù	
ˆBˆ3‹�!‘A�r�c“F‘(Ñ	€BÜˆr‹7Ð)Ò)Ð)Ð)Ù	
ˆ2‹€BØ	ˆB‰€BÜˆr‹7Ð4Ò4Ð4Ð4Ø	�‰‹€BÜˆr‹7Ð9Ò9Ð9Ð9Ø	ˆB‰€BØ	�‰‹€BÜˆr‹7Ð9Ò9Ð9Ð9Ø	�‰‹€BÜˆr‹7Ð9Ò9Ð9Ð9Ù	
ˆ2‹�‘1�R“5‘‰€BØ	ˆB‰€BØ	�‰‹€BÜˆr‹7ÐLÒLÐLÐLÙ	
ˆ2‹�‘1�R“5‘‰€BÜˆr‹7Ð(Ò(Ð(Ð(Ù	
ˆBˆ3‹�!‘A�r�c“F‘(Ñ	€BØ	ˆB‰€BØ	�‰‹€BØ‘�2“‘q˜"˜“v‘ ¡! B£%¡©¨2¨#«¡Ñ.Ò.Ð.Ð.Ù	ˆ!‹‰Qˆq‹T‰	‘1�Q“4™!˜A›$‘;Ñ¡! A£$©¨!«©q°«t©Ñ"4±a¸³d¸Q¹qÀ»t¹V±mÑ"DÑD€AØ	�
‰
‹€AØ�‘!�A“$‘‘q˜“t‘™A˜a›DÑ  1¡Q q£T¡6©!¨A«$¡;©q°«tÑ#3Ñ3±a¸³d¹1¸Q»4±iÁÀ!Ã±nÑDÀqÉÈ1ËÁvÉaÐPQËdÁ{ÑSTÐUVÓSWÑGWÑWÒWÐWÐWÙ
ˆA‹$‘�1“‰+˜™!˜A›$™Ñ
¡ 1£©¨!«¡Ñ	-€BÙ
ˆA‹$‘�1“‰+˜™!˜A›$™Ñ
¡ 1£©¨!«¡Ñ	-€BØ
ˆR‰€AØ	�
‰
‹€AØ�‘!�A“$‘‘q˜“t‘˜a¡ !£™f¡Q q£T™kÑ)¨A©a°«d©F±1°Q³4©KÑ7¸!¹A¸a»D¹&ÁÀ1Ã¹+ÑEÈÉ!ÈAË$ÉÉqÐQRËtÉÑSÐVWÑXYÐZ[ÓX\ÑV\Ñ]^Ð_`Ó]aÑVaÑaÒaÐaÐaÙ	ˆ!‹‰Qˆq‹T‰	�!‰€AØˆQ‰3‘!�A“$‘q˜“t‘)ÒÐÐÙ	
ˆ1‹‘�!“‰�a‰€AØˆQ‰3‘!�A“$™˜1›‘+ÒÐÐä	�‰‘�!“‘Q˜�r“U‘
Ñ€AØ	�
‰
‹€AØ
‰a��‹e‘A�a“D‰j‰.€CØ�!Š8€Oˆ8Ø
�,‰,‹.€CØ�:‰:�aŒ=Ðˆ=Ü	�‰‘�!“‘Q˜�r“U‘
Ñ€AØ‘�1�"“‘a˜“d‘
‰N×$Ñ$Ó&×-Ñ-¨aÔ0Ð0Ð0á	ˆ!ˆQ‹‘!�A�q“'Ñ€AØ�6‰6�QŠ;Ðˆ;Ø	
‰Qˆq�!‹W‰‘q˜˜A“wÑ	€BØ�Š7€Nˆ7Ø	‰Qˆq�1�"‹X™˜!˜a˜R›Ñ Ñ!€AØ	
‰a��A�2‹h™˜1˜q˜b›Ñ!Ñ	"€BØ�‰F�?‰?Ó×#Ñ# AÔ&Ð&Ð&Ø	
‰Qˆq�1�"‹X‰€BØ�Š8€Oˆ8Ø”×"Ñ" 1 b¨"¨bÓ1Ò1Ð1Ð1ô ‘1�Q“4œ ¡A a£DÓ)Ó+×0Ñ0Ó2±a¸³dÒ:Ð:Ñ:r8   c                  ó~  — t        dd¬«      } t        d| «      \  }}}}}}}t        d| gdz  t        j                  d«      «      \  }}	t        d| g«      \  }
}}d |||«      z  }t        |d«      sJ ‚t        |t        j                  «      sJ ‚ |
|«       |||«      k7  sJ ‚ ||| «       |||«      k7  sJ ‚d |||«       |	||«      z   z  dk(  sJ ‚d |||«       |	||«      z   z  t        j                  u sJ ‚d	 |||«       |||«      z
  z  t        j                  u sJ ‚ |
|«       ||«      z    |||«      k7  sJ ‚ |
|«       ||«      z    |||«       |	||«      z   k7  sJ ‚ |
|«       |
|«      z
  dk(  sJ ‚ |
|«       |
|«      z
  t        j                  u sJ ‚t         |||«       |||«      «      sJ ‚y )
Nr:   r;   r<   rú   r>   rA   rû   r   r`   )r   r   r    r   rF   r7   r
   ÚZero)r:   rG   rH   rI   rJ   r}   rÿ   r   r@   rB   r³   r  r  rK   s                 r6   Útest_special_eq_ner  q  s×  € ä˜i°CÔ8€GÜ*Ð+<¸gÓFÑ€A€qˆ"ˆb�!�Q˜ä˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qÜ˜7 W IÓ.�G€A€qˆ!à	‰!ˆAˆq‹'‰	€AÜ�Q˜Œ?Ðˆ?Ü�QœŸ™ÔÐÐáˆQ‹4‘1�Q˜“7Š?Ðˆ?ÙˆQ��‹8‘q˜˜A“wÒÐÐØ‰a��1‹g™˜!˜Q›ÑÑ  AÒ%Ð%Ð%Ø‰a��1‹g™˜!˜Q›ÑÑ ¤A§F¡FÑ*Ð*Ð*à‰a��1‹g™˜!˜Q›ÑÑ ¤A§F¡FÑ*Ð*Ð*áˆQ‹4‘!�A“$‰;™!˜A˜q›'Ò!Ð!Ð!ÙˆQ‹4‘!�A“$‰;™!˜A˜q›'¡A a¨£GÑ+Ò+Ð+Ð+áˆQ‹4‘!�A“$‰;˜!ÒÐÐÙˆQ‹4‘!�A“$‰;œ!Ÿ&™&Ñ Ð Ð ä‘Q�q˜!“W™a  1›gÔ&Ð&Ñ&r8   c                  ó¦  — t        dd¬«      } t        d| «      \  }}}}t        d| gdz  t        j                  «       «      }t        d| gdz  t        j
                  d	«      «      }d
 |||||«      z   |||||«      z
   |||||«      z   }| || | | «      z  }|j                  «       }|dk(  sJ ‚t        d
d«       |||||«      z  t        dd«       |||||«      z  z
  t        dd«       |||||«      z  z   }| || | | «      z  }|j                  «       }|dk(  sJ ‚ ||| |«       |||| «      z   }	|	j                  «       }	|	dk(  sJ ‚y )Nr:   r;   r<   zm,n,p,qr‚   rƒ   r@   r`   rg   rA   r   r?   )r   r   r#   r   r„   rF   r$   r   )
r:   ÚmÚnr³   r  r‚   r@   rM   r  rK   s
             r6   Ú	test_add2r  Œ  ss  € Ü˜i°CÔ8€GÜ 	¨7Ó3�J€A€qˆ!ˆQÜ�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€AÜ�3˜˜	 !™¤^×%CÑ%CÀBÓ%GÓH€AØ	
‰1ˆQ��1�a‹=‰™1˜Q  1 a›=Ñ	(©1¨Q°°1°a«=Ñ	8€BØ	‰Aˆqˆb�1�"�q�b‹MÑ	€BØ	�‰‹€BØ�Š7€Nˆ7Ü	�!�Q‹™˜!˜A˜a ›
Ñ	"¤X¨a°£^±A°a¸¸!¸A³JÑ%>Ñ	>ÄÈ!ÈQÃÑPQÐRSÐTUÐVWÐXYÓPZÑAZÑ	Z€BØ	‰Aˆqˆb�1�"�q�b‹MÑ	€BØ	�‰‹€BØ�Š7€Nˆ7Ù	ˆ!ˆaˆR�‹‘a˜˜1˜q˜b“kÑ!€AØ	�
‰
‹€AØ�Š6€M‰6r8   c            
      óö  — t        dd¬«      } t        d| «      \  }}t        d«      \  }}}}t        d| g«      }t        d| g«      } ||«       || «      z  |dz  |dz  z
  |dz  z
  |dz  z
  z
  }	|	j                  |dz   |dz  |dz  |dz   ||«       || «      z  fk(  sJ ‚|dz  |dz  z
  |dz  z
  |dz  z
   ||«       || «      z  z
  }
|
j                  |dz  |dz   |dz   |dz    ||«        || «      z  fk(  sJ ‚ ||«       || «      z  |dz  z
  |dz  z   |dz  z   |dz  z   }|j                  |dz   |dz  |dz  |dz   ||«       || «      z  fk(  sJ ‚ ||«       || «      z  d|dz  z  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z
   ||«       || «      z  z
  }|j                  d|dz  z  d	|dz  z  d	|dz  z  d	|dz  z   ||«       || «      z   ||«        || «      z  fk(  sJ ‚y )
Nr:   r;   r<   zi0:2ú
E px py pzr@   rB   rA   ra   )r   r   r   r#   rü   )r:   r™   rš   r—   ÚpxÚpyÚpzr@   rB   Úexpr1Úexpr2Úexpr3Úexpr4s                r6   Ú	test_add3r  �  sh  € Ü˜i°CÔ8€GÜ˜F GÓ,�F€BˆÜ˜LÓ)�M€A€rˆ2ˆrÜ�3˜˜	Ó"€AÜ�3˜˜	Ó"€Aáˆb‹E‘!�R�C“&‰L˜A˜q™D 2 q¡5™L¨2¨q©5Ñ0°2°q±5Ñ8Ñ9€EØ�:‰:˜1˜a™4˜%  Q¡¨¨A©¨r°1©u±a¸³e¹A¸r¸c»F±lÐCÒCÐCÐCàˆq‰D�2�q‘5‰L˜2˜q™5Ñ  2 q¡5Ñ(©1¨R«5±°B°3³©<Ñ7€EØ�:‰:˜!˜Q™$  Q¡ ¨¨Q©¨°°Q±°¹¸2»¸¹qÀ"À»v¹ÐFÒFÐFÐFáˆb‹E‘!�R�C“&‰L˜1˜a™4Ñ " a¡%Ñ'¨"¨a©%Ñ/°"°a±%Ñ7€EØ�:‰:˜1˜a™4˜%  Q¡¨¨A©¨r°1©u±a¸³e¹A¸r¸c»F±lÐCÒCÐCÐCáˆb‹E‘!�R�C“&‰L˜1˜Q ™T™6Ñ! A b¨!¡e¡GÑ+¨a°°A±©gÑ5¸¸"¸a¹%¹Ñ?Á!ÀBÃ%ÉÈ2È#ËÁ,ÑN€EØ�:‰:˜!˜A˜q™D™& " R¨¡U¡(¨B¨r°1©u©H°b¸¸Q¹±hÁÀ"ÃÁaÈÈÃfÁÉqÐQSËuÈfÑUVÐXZÐWZÓU[ÉmÐ\Ò\Ð\Ñ\r8   c                  ó  ‡‡	‡
‡— ddl m}  t        dd¬«      }t        d|«      \  Š	Š
Š}t	        j
                  t        j                  g g g «      }t        |«      dk(  sJ ‚t        d|gd	z  t        j                  d	«      «      \  Š}d
| z    ‰‰	‰
«      z  }t        |«      dk(  sJ ‚|j                  ||gk(  sJ ‚|j                  d	k(  sJ ‚|j                  g k(  sJ ‚|j                  d
| z   k(  sJ ‚t!        |j"                  «      ‰	df‰
d
fgk(  sJ ‚|j$                  ‰gk(  sJ ‚ ‰‰	‰
«      }t        |«      dk(  sJ ‚|j                  ||gk(  sJ ‚|j                  d	k(  sJ ‚|j                  g k(  sJ ‚|j                  d
k(  sJ ‚t!        |j"                  «      ‰	df‰
d
fgk(  sJ ‚|j$                  ‰gk(  sJ ‚ ‰‰
 ‰	«       |‰	 ‰«      z   ‰‰ |«      z  }t'        |j)                  «       Ž }||k(  sJ ‚t'        g Ž t	        j
                  t        j                  g g g «      k(  sJ ‚t	        j
                  d
g g g «      }t+        dg «      }t         |«       «      dk(  sJ ‚t        |«      dk(  sJ ‚|d
k(  sJ ‚t-        t.        ˆˆ	ˆ
ˆfd„«       y )Nr   )rº   r:   r;   r<   rÌ   Ú1rÍ   rA   r?   z(x + 1)*A(a, b)zA(a, b)rC   c                  ó*   •—  ‰ ‰‰«       ‰ ‰‰«      z  S r1   rÒ   rÓ   s   €€€€r6   rÐ   ztest_mul.<locals>.<lambda>Ô  rä   r8   )Ú	sympy.abcrº   r   r   r   rþ   r
   rç   rE   r    r   rF   rõ   rÝ   ÚdumÚcoeffÚsortedÚfreeÚ
componentsr   Úsplitr#   r,   rØ   )rº   r:   rR   rK   rB   ÚtsrM   rC   r@   rG   rH   rQ   s           @@@@r6   Útest_mulr%  ±  s{  û€ ÝÜ˜i°CÔ8€GÜ 	¨7Ó3�J€A€qˆ!ˆQÜ×Ñœ!Ÿ%™%  R¨Ó,€AÜˆq‹6�SŠ=Ðˆ=Ü˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qØ	
ˆQ‰‘�!�Q“‰€AÜˆq‹6Ð&Ò&Ð&Ð&Ø�=‰=˜W gÐ.Ò.Ð.Ð.Ø�6‰6�QŠ;Ðˆ;Ø�5‰5�BŠ;Ðˆ;Ø�7‰7�a˜!‘eÒÐÐÜ�!—&‘&‹>˜q !˜f q¨! fÐ-Ò-Ð-Ð-Ø�<‰<˜A˜3ÒÐÐá	
ˆ1ˆa‹€BÜˆr‹7�iÒÐÐØ�>‰>˜g wÐ/Ò/Ð/Ð/Ø�7‰7�aŠ<Ðˆ<Ø�6‰6�RŠ<Ðˆ<Ø�8‰8�qŠ=Ðˆ=Ü�"—'‘'‹?  1˜v¨¨1 vÐ.Ò.Ð.Ð.Ø�=‰=˜Q˜CÒÐÐá	ˆ1ˆ"ˆa‹‘�A�2�q“Ñ™!˜Q˜B ›(Ñ"€AÜ	�Q—W‘W“YÐ	€BØ�Š7€Nˆ7Ü�rˆ?œg×/Ñ/´·±°r¸2¸rÓBÒBÐBÐBä×Ñ˜!˜R  RÓ(€AÜ�3˜Ó€AÜ‰q‹s‹8�sŠ?Ðˆ?Üˆq‹6�SŠ=Ðˆ=Ø�Š6€Mˆ6Ü
Œ:Ö.Õ/r8   c                  ó  — t        dd¬«      } t        d| «      \  }}}}}}}}t        d| gdz  t        j                  d«      «      \  }	}
t        d| g«      } ||«      }|j                  ||f«      }||k(  sJ ‚|j                  ||f«      }| ||«      k(  sJ ‚|j                  || f«      }| || «      k(  sJ ‚|j                  | |f«      }| || «      k(  sJ ‚|j                  | | f«      }| ||«      k(  sJ ‚ |	||«      }|j                  ||f|| f«      }| |	|| «      k(  sJ ‚t        |||f|| f«      }| |	|| «      k(  sJ ‚ |	||«       |
| | «      z  }|j                  ||f||f«      } |	||«       |
| | «      z  }||k(  sJ ‚t        |||f||f«      }||k(  sJ ‚ |	||«       |
||«      z   }|j                  || f«      } |	|| «       |
|| «      z   }||k(  sJ ‚t        ||| f«      }||k(  sJ ‚y )Nr:   r;   r<   úi,j,k,l,m,n,p,qr>   rA   r³   )r   r   r    r   rF   r#   r(   )r:   r}   rÿ   r   Úlr  r  r³   r  r@   rB   rK   rM   Út1as                 r6   Útest_substitute_indicesr*  Ö  st  € Ü˜i°CÔ8€GÜ+Ð,=¸wÓGÑ€A€qˆ!ˆQ��1�a˜Ü˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qä�3˜˜	Ó"€AÙ	ˆ!‹€AØ	
×	Ñ	˜q !˜fÓ	%€BØ�Š7€Nˆ7Ø	
×	Ñ	˜q !˜fÓ	%€BØ‘�1“Š:Ðˆ:Ø	
×	Ñ	˜q 1 "˜gÓ	&€BØ‘�A�2“Š;Ðˆ;Ø	
×	Ñ	 ˜r 1˜gÓ	&€BØ‘�A�2“Š;Ðˆ;Ø	
×	Ñ	 ˜r A 2˜hÓ	'€BØ‘�1“Š:Ðˆ:Ù	ˆ!ˆQ‹€AØ	
×	Ñ	˜q !˜f q¨1¨" gÓ	.€BØ‘�1�q�b“Š>Ðˆ>Ü	˜A  1˜v¨¨A¨2 wÓ	/€BØ‘�1�q�b“Š>Ðˆ>á	ˆ!ˆQ‹‘�1�"�q�b“	Ñ€AØ	
×	Ñ	˜q !˜f q¨! fÓ	-€BÙ
ˆAˆq‹'‘!�Q�B˜˜“)Ñ
€CØ�Š9Ðˆ9Ü	˜A  1˜v¨¨1 vÓ	.€BØ�Š9Ðˆ9á	ˆ!ˆQ‹‘!�A�q“'Ñ€AØ	
×	Ñ	˜q 1 "˜gÓ	&€BÙ
ˆA�ˆr‹(‘Q�q˜1˜"“XÑ
€CØ�Š9Ðˆ9Ü	˜A  A 2˜wÓ	'€BØ�Š9Ð‰9r8   c                  óT  — t        dd¬«      } t        d| «      \  }}}}t        d| gdz  t        j                  «       «      } |||||«      }t        |«      }t        dd«       |||||«      z  t        d	d«       |||||«      z  z   t        d
d«       |||||«      z  z   }||k(  sJ ‚y )Nr:   r;   r<   zm:4r‚   rƒ   rc   r`   r?   rA   )r   r   r#   r   r„   r   r   )	r:   rÃ   rÄ   rÅ   rÆ   r‚   rK   rM   r)  s	            r6   Útest_riemann_cyclic_replacer,  û  s¿   € Ü˜i°CÔ8€GÜ# E¨7Ó3�N€BˆˆB�Ü�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€AÙ	ˆ"ˆb�"�bÓ€AÜ	 Ó	"€BÜ
�2�q‹/™!˜B  B¨Ó+Ñ
+¬h°q¸!«n¹Q¸rÀ2ÀrÈ2Ó=NÑ.NÑ
NÔQYÐZ[Ð]^ÓQ_Ñ`aÐbdÐfhÐjlÐnpÓ`qÑQqÑ
q€CØ�Š9Ð‰9r8   c            	      óJ  — t        dd¬«      } t        d| «      \  }}}}}}}}t        d| gdz  t        j                  «       «      }	 |	||||«       |	||||«      z    |	||||«      z    |	||||«      z
   |	||||«      z
   |	||||«      z
  }
|
 |	| | | | «      z  }t        |«      }|dk(  sJ ‚ |	||||«       |	| | | | «      d |	| | | | «      z  z
  z  }
t        |
«      }|dk(  sJ ‚ |	||||«      }
t        |
«      }|t        d	d
«       |	||||«      z  t        dd
«       |	||||«      z  z   t        dd
«       |	||||«      z  z   k(  sJ ‚ |	||||«       |	| | ||«      z   |	| | | | «      d |	| | | | «      z  z   z  }
t        |
«      }|dk(  sJ ‚y )Nr:   r;   r<   r'  r‚   rƒ   r   rA   rc   r`   r?   )r   r   r#   r   r„   r   r   )r:   r}   rÿ   r   r(  r  r  r³   r  r‚   rK   r  r  rM   s                 r6   Útest_riemann_cyclicr.    s  € Ü˜i°CÔ8€GÜ+Ð,=¸wÓGÑ€A€qˆ!ˆQ��1�a˜Ü�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€AÙ	ˆ!ˆAˆa�‹
‘Q�q˜˜1˜Q“ZÑ¡! A a¨¨!£*Ñ,Ù	ˆ!ˆAˆa�‹
ñ	Ù�q˜˜1˜Q“Zñ	 Ù"# A a¨¨!£*ñ	-€Aà	
‰1ˆaˆR���A�2�q�b‹>Ñ	€BÜ	˜Ó	€BØ�Š7€Nˆ7Ù	ˆ!ˆAˆa�‹
‘A�q�b˜!˜˜Q˜B ˜r“N Q¡q¨!¨¨Q¨B°¨r°1°"£~Ñ%5Ñ5Ñ6€AÜ	˜Ó	€BØ�Š7€Nˆ7Ù	ˆ!ˆAˆa�‹
€AÜ	˜Ó	€BØ”˜"˜a“¡ 1 a¨¨A£Ñ.´¸!¸Q³ÁÀ!ÀQÈÈ1ÃÑ1MÑMÔPXÐYZÐ\]ÓP^Ñ_`ÐabÐdeÐghÐjkÓ_lÑPlÑlÒlÐlÐlá	ˆ!ˆAˆa�‹
‘1�a�R˜˜˜1˜Q“<Ñ¡ A 2 q b¨!¨¨Q¨B£°!±A°q°b¸!¸¸Q¸BÀ¸r³NÑ2BÑ!BÑC€AÜ	˜Ó	€BØ�Š7€N‰7r8   c                  ób  — t        dd¬«      } t        d| «      \  }}}}t        d| gdz  t        j                  «       «      } |||| |«      }|t        d«      z  }t        |«      dk(  sJ ‚|j                  «       }|j                  rJ ‚|dz  }|j                  sJ ‚|dz  }|j                  sJ ‚y )Nr:   r;   r<   zm0:4r‚   rƒ   z(1/4)*R(m0, L_0, -L_0, m3))	r   r   r#   r   r„   r
   rE   r$   Ú_is_canon_bp)r:   rÃ   rÄ   rÅ   rÆ   r‚   rK   rM   s           r6   Útest_divr1    s²   € ä˜i°CÔ8€GÜ# F¨GÓ4�N€BˆˆB�Ü�3˜˜	 !™¤^×%;Ñ%;Ó%=Ó>€AÙ	ˆ"ˆR���B‹€AØ	
Œ1ˆQ‹4‰€BÜˆr‹7Ð2Ò2Ð2Ð2Ø	�
‰
‹€AØ�ŠÐÐØ	
ˆ1‰€BØ�?Š?Ðˆ?Ø	ˆA‰€BØ�?Š?Ð‰?r8   c                  ór  — t        d«      } t        d| d¬«      }t        d|«      \  }}}}}|j                  }t	        d|g«      } |||«       || «      z  }	|	j                  |«      }
|
 ||«      k(  sJ ‚t        d|gdz  t        j                  d«      «      \  }} |||«       || |«      z   |||«      z  }
|
j                  |«      }|
|k(  sJ ‚ |||«       || |«      z   || |«      z  }
|
j                  |«      }||  |||«      z   || |«      z  k(  sJ ‚ |||«       || | «      z   |||«      z  }
|
j                  |«      }| |||«       || |«      z  k(  sJ ‚ |||«       || | «      z   ||| «      z  }
|
j                  |«      }t        | |||«       || | «      z  «      sJ ‚ |||«       || | «      z   |||«      z   || | «      z  }
|
j                  |«      }t        | |||«       || | «      z  «      sJ ‚ |||«       || | «      z  }
|
j                  |«      }t        | ||| «      «      sJ ‚|j                  rJ ‚t        dd¬	«      }t        d
|«      \  }}|j                  }t         ||| «      j                  |«      |j                  «      sJ ‚y )Nr•   r:   r;   ©r˜   r=   ú	a,b,c,d,er³   r>   rA   r<   r�   )r   r   r   rÁ   r#   Úcontract_metricr    r   rF   r7   r!  r˜   )r•   r:   rG   rH   rQ   rR   ry   r¾   r³   rK   rM   r@   rB   r  s                 r6   Útest_contract_metric1r6  '  sì  € Üˆs‹€AÜ˜i¨Q¸3Ô?€GÜ" ;°Ó8�M€A€qˆ!ˆQ�Ø�‰€AÜ�3˜˜	Ó"€AÙ	ˆ!ˆQ‹‘�1�"“‰€AØ	
×	Ñ	˜1Ó	€BØ‘�1“Š:Ðˆ:Ü˜ ˜y¨™{¬N×,JÑ,JÈ1Ó,MÓN�D€A€qñ 
ˆ1ˆQ‹‘�1�"�Q“‰™˜!˜Q›Ñ	€BØ	×	Ñ	˜AÓ	€BØ�Š8€Oˆ8ñ 
ˆ1ˆQ‹‘�1�"�Q“‰™˜1˜"˜a›Ñ	 €BØ	×	Ñ	˜AÓ	€BØ�‘1�Q˜“7‘™1˜a˜R ›8Ñ#Ò#Ð#Ð#ñ 
ˆ1ˆQ‹‘�1�"�a�R“‰™˜1˜a›Ñ	 €BØ	×	Ñ	˜AÓ	€BØ‘�1�a“™˜A˜2˜q›Ñ!Ò!Ð!Ð!ñ 
ˆ1ˆQ‹‘�1�"�a�R“‰™˜1˜q˜b›Ñ	!€BØ	×	Ñ	˜AÓ	€BÜ�R™˜1˜a›¡ A 2¨ r£Ñ*Ô+Ð+Ð+á	
ˆ1ˆQ‹‘�1�"�a�R“‰™˜1˜a›Ñ	 ¡ A 2¨ r£Ñ	*€BØ	×	Ñ	˜AÓ	€BÜ�R™˜1˜Q›¡ 1 " a R£™Ô)Ð)Ð)á	
ˆ1ˆQ‹‘�1�"�a�R“‰€BØ	×	Ñ	˜AÓ	€BÜ�R™˜1˜q˜b›Ô"Ð"Ð"Ø�wŠwÐˆ;Ü˜i°CÔ8€GÜ˜% Ó)�D€A€qØ�‰€AÜ‘Q�q˜1˜"“X×-Ñ-¨aÓ0°'·+±+Ô>Ð>Ñ>r8   c                  óX  — t        d«      } t        d| d¬«      }t        d|«      \  }}}}}}|j                  }t	        d|g«      \  }	}
 |||«       |	|«      z   |	| «      z  }d || | «      z   |
|«      z   |
| «      z  }||z  }|j                  |«      }|d| z   |	|«      z   |	| «      z   |
|«      z   |
| «      z  k(  sJ ‚ |||«       |	|«      z   |	| «      z  }d |
| «      z   |
| «      z  }||z  }|j                  |«      }|j                  «       }|d |	|«      z   |	| «      z   |
|«      z   |
| «      z  k(  sJ ‚d |||«      z   |	|«      z   |	| «      z  }d	 || | «      z   |
|«      z   |
| «      z  }||z  }|j                  |«      }d
 |||«      z   || | «      z   |	|«      z   |	| «      z   |
|«      z   |
| «      z  }|j                  |«      }d |||«      z   |	|«      z   |	| «      z  } |
| «       |
| «      z  d || | «      z   |
|«      z   |
| «      z  z   }||z  }|j                  |«      }|dd
| z  z    |	|«      z   |	| «      z   |
|«      z   |
| «      z  k(  sJ ‚ |	|«       |	|«      z   |	|«       |
|«      z  z   d |||«      z   |	|«      z   |	| «      z  z   } |
| «       |
| «      z   || | «       |
|«      z   |
| «      z  z
  }||z  }|j                  |«      }dd| z  z
   |	|«      z   |	| «      z   |
|«      z   |
| «      z   |	|«       |
| «      z   |	|«      z   |
| «      z  z   }t        ||z
  «      dk(  sJ ‚ |||«       |||«      z   || | «      z  }|j                  |«      }| |||«      k(  sJ ‚ |||«       |||«      z   |||«       |||«      z  z    |||«       |||«      z  z   }|j                  || f|| f|| f|| f«      }||z  }|j                  |«      }|j                  d| dz  z  d
| z  z   «      sJ ‚d |	|«      z   ||| «      z  }|j                  |«      }|j                  d| z   |	|«      z  «      sJ ‚d |	|«      z   ||| «      z  }|j                  |«      }|d |	|«      z  k(  sJ ‚t        d«      } |	|«       |	|«      z   |||«      |dz  z  z    || | «      z  | |dz  z  z
  }|j                  |«      }| |	|«       |	| «      z  k(  sJ ‚t        d|gdz  t        j                  d«      «      } |||«       |	|«      z   || | «      z  }|j                  |«      }t        |«      dk(  st        |«      dk(  sJ ‚y y )Nr•   r:   r;   r3  za,b,c,d,e,L_0zp,qr`   rA   rg   é   r?   r   re   r@   zA(L_1, -L_1)*p(L_0)zA(-L_1, L_1)*p(L_0))r   r   r   rÁ   r    r5  r$   r(   r3   r#   r   rF   rE   )r•   r:   rG   rH   rQ   rR   ry   rÎ   r¾   r³   r  rM   r  rK   re   r@   s                   r6   Útest_contract_metric2r9  S  s>  € Üˆs‹€AÜ˜i¨Q¸3Ô?€GÜ'¨¸ÓAÑ€A€qˆ!ˆQ��3Ø�‰€AÜ˜ ˜yÓ)�D€A€qá	
ˆ1ˆQ‹‘�!“‰‘Q˜�r“UÑ	€BØ	
‰1ˆaˆR��‹8‰‘A�a“D‰™˜A˜2›Ñ	€BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ��!‘‘A�a“D‘™˜A˜2›‘™q ›tÑ#¡A q b£EÑ)Ò)Ð)Ð)Ù	
ˆ1ˆQ‹‘�!“‰‘Q˜�r“UÑ	€BØ	
‰1ˆaˆR‹5‰‘�A�2“‰€BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ	�
‰
‹€AØ�‘!�A“$‘‘q˜!˜“u‘™Q˜q›TÑ!¡! Q B£%Ñ'Ò'Ð'Ð'à	
‰1ˆQˆq‹6‰‘!�A“$‰‘q˜!˜“uÑ	€BØ	‰Q�ˆr�1�"‹X‰‘a˜“dÑ	™1˜a˜R›5Ñ	 €BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ	‰!ˆAˆa‹&‰‘�A�2�q�b“Ñ™!˜A›$Ñ™q ! ›uÑ$¡Q q£TÑ)©!¨Q¨B«%Ñ/€AØ	×Ñ˜!Ó€Aà	
‰1ˆQˆq‹6‰‘!�A“$‰‘q˜!˜“uÑ	€BÙ	
ˆAˆ2‹‰q�!�‹u‰�q™˜A˜2˜q˜b›‘z¡! A£$‘¡q¨!¨£uÑ,Ñ	,€BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ��Q�q‘S‘™!˜A›$‘™q ! ›uÑ$¡Q q£TÑ)©!¨Q¨B«%Ñ/Ò/Ð/Ð/á	
ˆ1‹‰a�‹d‰‘Q�q“T™!˜A›$‘YÑ	 ¡1 Q q£6¡©!¨A«$¡©q°!°«uÑ!4Ñ	4€BÙ	
ˆAˆ2‹‰q�!�‹u‰‘q˜!˜˜Q˜B“x¡ !£‘}¡Q¨ r£UÑ*Ñ	*€BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ
ˆa�‰c‰'‘1�Q“4‰™˜1˜"›Ñ	™a ›dÑ	"¡1 a R£5Ñ	(©1¨Q«4±°1°"³©:±a¸³d©?¹1¸a¸R»5Ñ+@Ñ	@€BÜ�A˜‘FÓ˜qÒ Ð Ð á	ˆ!ˆA‹‰q��1‹v‰‘a˜˜˜A˜2“hÑ€AØ	
×	Ñ	˜1Ó	€BØ‘�1�a“Š=Ðˆ=á	
ˆ1ˆQ‹‘�!�A“‰™˜1˜Q›¡ ! A£™Ñ	&©¨1¨Q«±°!°A³©Ñ	6€BØ	×	Ñ	  1 "˜v q¨!¨ f¨a°°¨V°Q¸°r°FÓ	;€BØ
ˆ2‰€AØ	×Ñ˜!Ó€AØ�8‰8�A�a˜‘d‘F˜Q˜q™S‘LÔ!Ð!Ð!à	‰!ˆA‹$‰‰q��A�2‹w‰€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�Q�q‘S™˜1›‘XÔÐÐà	‰!ˆA‹$‰‰q��A�2‹w‰€AØ	
×	Ñ	˜1Ó	€BØ�‘1�Q“4‘Š<Ðˆ<äˆs‹€AÙ	
ˆ1‹‰a�‹d‰‘Q�q˜!“W˜Q ™T‘\Ñ	!¡1 a R¨!¨£9Ñ,¨q°°A±©vÑ5€AØ	
×	Ñ	˜1Ó	€BØ‘�1“‘a˜˜“e‘ÒÐÐä�3˜˜	 !™¤^×%CÑ%CÀAÓ%FÓG€AÙ	ˆ!ˆQ‹‘�#“‰‘q˜!˜˜a˜R“yÑ €AØ	
×	Ñ	˜1Ó	€BÜˆr‹7Ð+Ò+¬s°2«wÐ:OÒ/OÐOÐOÐ/OÐ+r8   c                  ó8  — t        d«      } t        d| dd¬«      }t        d|«      \  }}}}}|j                  }t	        d|gt        j                  d«      d«      \  }}	t        d	|gd
z  t        j                  d
«      «      }
 ||| «      }|j                  |«      }|j                  |  «      sJ ‚ || |«      }|j                  |«      }|j                  | «      sJ ‚ |||«       || | «      z  }|j                  |«      }|j                  | «      sJ ‚ |||«       || | «      z  }|j                  |«      }|j                  |  «      sJ ‚ || |«       ||| «      z  }|j                  |«      }|j                  |  «      sJ ‚ ||| «       ||| «      z  }|j                  |«      }|j                  | «      sJ ‚ |||«       |
| | «      z  }|j                  |«      }|j                  «       }t        | |
|| «      «      sJ ‚ |||«       |
| | «      z  }|j                  |«      }t        | |
|| «       «      sJ ‚ ||| «       |
|| «      z  }|j                  |«      }t        | |
|| «       «      sJ ‚ || |«       |
| |«      z  }|j                  |«      }t        | |
|| «       «      sJ ‚ || | «       |
||«      z  }|j                  |«      }t        | |
|| «      «      sJ ‚ || |«       |
|| «      z  }|j                  |«      }t        | |
|| «      «      sJ ‚ |||«       |	| «      z  }|j                  |«      }t        | |	|«      «      sJ ‚ |||«       |	| «      z  }|j                  |«      }t        | |	|«       «      sJ ‚ |||«       || «      z   |	| «      z  }|j                  |«      }t        | ||«        |	| «      z  «      sJ ‚ |||«       || «      z   |	| «      z  }|j                  |«      }t        | ||«       |	| «      z  «      sJ ‚ || |«       || «      z   |	|«      z  }|j                  |«      }t        | || «       |	|«      z  «      sJ ‚ ||| «       || «      z   |	|«      z  }|j                  |«      }t        | || «        |	|«      z  «      sJ ‚ || | «       ||«      z   |	|«      z  }|j                  |«      }t        | || «       |	|«      z  «      sJ ‚ || | «       ||«      z   |	|«      z  }|j                  |«      }t        | || «        |	|«      z  «      sJ ‚ || | «       |
||«      z   |	|«      z  }|j                  |«      }t        | |
| |«        |	|«      z  «      sJ ‚ |||«       |
| | «      z   |	| «      z  }|j                  |«      }t        | |
| |«       |	| «      z  «      sJ ‚y )Nr•   rb   rc   r
   rª   r«   r¬   r?   rB   rA   )r   r   r   rÁ   r    r   rD   r#   r5  r3   r$   r7   )r•   rb   rm   rn   ro   rp   r‘   rC   r­   r®   rB   rK   rM   s                r6   Útest_metric_contract3r;  –  sk  € Üˆs‹€AÜ˜X¨1¸bÈSÔQ€FÜ'¨°Ó7Ñ€BˆˆB��BØ�‰€AÜ˜I¨ x´×1KÑ1KÈAÓ1NÐPQÓR�H€CˆÜ�3˜˜ ™
¤N×$>Ñ$>¸qÓ$AÓB€Aá	ˆ"ˆbˆS‹	€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�a�RŒ=Ðˆ=á	ˆ2ˆ#ˆb‹	€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�QŒ<Ðˆ<á	ˆ"ˆR‹‘�B�3˜�s“Ñ€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�QŒ<Ðˆ<á	ˆ"ˆR‹‘�B�3˜�s“Ñ€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�a�RŒ=Ðˆ=á	ˆ2ˆ#ˆb‹	‘!�B˜�s“)Ñ€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�a�RŒ=Ðˆ=á	ˆ"ˆbˆS‹	‘!�B˜�s“)Ñ€AØ	
×	Ñ	˜1Ó	€BØ�9‰9�QŒ<Ðˆ<á	ˆ"ˆR‹‘�B�3˜�s“Ñ€AØ	
×	Ñ	˜1Ó	€BØ	�‰‹€BÜ�R™˜2˜r˜c›Ô#Ð#Ð#á	ˆ"ˆR‹‘�B�3˜�s“Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™!˜B ˜s›)˜Ô$Ð$Ð$á	ˆ"ˆbˆS‹	‘!�B˜�s“)Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™!˜B ˜s›)˜Ô$Ð$Ð$á	ˆ2ˆ#ˆb‹	‘!�R�C˜“)Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™!˜B ˜s›)˜Ô$Ð$Ð$á	ˆ2ˆ#ˆrˆc‹
‘1�R˜“8Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜2˜r˜c›Ô#Ð#Ð#á	ˆ2ˆ#ˆr‹
‘1�R˜˜“9Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜2˜r˜c›Ô#Ð#Ð#á	ˆ"ˆR‹‘�b�S“Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜R›Ô!Ð!Ð!á	ˆ"ˆR‹‘�b�S“Ñ€AØ	
×	Ñ	˜1Ó	€BÜ�R™#˜b›'˜Ô"Ð"Ð"á	ˆ"ˆR‹‘�b�S“Ñ™#˜r˜c›(Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™#˜b›'˜¡# r c£(Ñ*Ô+Ð+Ð+á	ˆ"ˆR‹‘�b�S“Ñ™#˜r˜c›(Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜R›¡ b S£Ñ)Ô*Ð*Ð*á	ˆ2ˆ#ˆb‹	‘#�r�c“(Ñ™3˜r›7Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜b˜S›¡# b£'Ñ)Ô*Ð*Ð*á	ˆ"ˆbˆS‹	‘#�r�c“(Ñ™3˜r›7Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™#˜r˜c›(˜¡3 r£7Ñ*Ô+Ð+Ð+á	ˆ2ˆ#ˆrˆc‹
‘3�r“7Ñ™3˜r›7Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜b˜S›¡# b£'Ñ)Ô*Ð*Ð*á	ˆ2ˆ#ˆrˆc‹
‘3�r“7Ñ™3˜r›7Ñ"€AØ	
×	Ñ	˜1Ó	€BÜ�R™#˜r˜c›(˜¡3 r£7Ñ*Ô+Ð+Ð+á	ˆ2ˆ#ˆrˆc‹
‘1�R˜“8Ñ™C ›GÑ#€AØ	
×	Ñ	˜1Ó	€BÜ�R™!˜R˜C ›)˜¡C¨£GÑ+Ô,Ð,Ð,á	ˆ"ˆR‹‘�B�3˜�s“Ñ™C  ›HÑ$€AØ	
×	Ñ	˜1Ó	€BÜ�R™˜B˜3˜r›¡3¨ s£8Ñ+Ô,Ð,Ñ,r8   c                  ó  — t        dd¬«      } t        d| «      \  }}}| j                  }| j                  }t	        d| g«      } ||||«       || «       || «      z   || | «      z   z  }|j                  |«      dk(  sJ ‚y )Nr¸   r`   r²   úp q rr´   r   )r   r   ÚdeltaÚepsilonr#   r5  )r¸   r³   r  r  r>  Úepsr´   rµ   s           r6   Útest_contract_metric4rA  ø  sŒ   € Ü	˜ 1Ô	%€BÜ˜W bÓ)�G€A€qˆ!Ø�H‰H€EØ
�*‰*€CÜ�3˜˜Ó€Añ ˆq��1‹:™˜1˜"›™a  ›e™¡e¨Q¨B°¨r£lÑ2Ñ4€DØ×Ñ Ó&¨!Ò+Ð+Ñ+r8   c                  ó  — t        dd¬«      } t        d| «      \  }}}| j                  }t        d| g«      }t	        d«      }t        d«      }d ||«      z    || «      z   || «      z  }|j                  |«      |k(  sJ ‚y )	Nr¸   r`   r²   r=  r´   ri   rº   rA   )r   r   r>  r#   r   r   r5  )	r¸   r³   r  r  r>  r´   ri   rº   rµ   s	            r6   Útest_contract_metric5rC    s†   € Ü	˜ 1Ô	%€BÜ˜W bÓ)�G€A€qˆ!Ø�H‰H€EÜ�3˜˜Ó€Aä�‹€AÜˆs‹€Að ‰a�‹d‰F‘A�q�b“E‰>™!˜Q˜B›%Ñ€DØ×Ñ Ó&¨$Ò.Ð.Ñ.r8   c                  ó<  — t        ddd¬«      } t        d| «      \  }}}}}| j                  }t        d| g«      \  }}}	}
 |||||«      }|j	                  «       }| |||||«       k(  sJ ‚ |||||«      }|j	                  «       }| |||||«      k(  sJ ‚ |||||«      }|j	                  «       }| |||||«       k(  sJ ‚ |||||«       || «      z   || «      z  }|j	                  «       }| |||||«       || «      z   || «      z  k(  sJ ‚ |||||«       || «      z   || «      z  }|j	                  «       }| |||||«       || «      z   || «      z  k(  sJ ‚ |||||«       || «      z   || «      z  }|j	                  «       }| |||||«        || «      z   || «      z  k(  sJ ‚ |||||«       || «      z   || «      z  }|j	                  «       }|dk(  sJ ‚ |||||«       || «      z   || «      z   |||||«       || «      z   || «      z  z   }|j	                  «       }|d |||||«      z   || «      z   || «      z  k(  sJ ‚t        dt        d«      d¬«      } | j                  }t        |t        «      sJ ‚y )	Nr:   rƒ   r;   r3  r4  zp,q,r,sr   ra   )r   r   r?  r    r$   r   r2   r#   )r:   rG   rH   rQ   rR   ry   r?  r³   r  r  ÚsrK   rM   s                r6   Útest_epsilonrF    sþ  € Ü˜i¨Q¸3Ô?€GÜ" ;°Ó8�M€A€qˆ!ˆQ�Ø�o‰o€GÜ˜i¨'¨Ó3�J€A€qˆ!ˆQá��!�A�aÓ€AØ	
�‰‹€BØ‘'˜!˜A˜a Ó"Ð"Ò"Ð"Ð"á��!�A�aÓ€AØ	
�‰‹€BØ‘˜˜1˜Q˜qÓ!Ò!Ð!Ð!á��!�A�aÓ€AØ	
�‰‹€BØ‘'˜!˜A˜a Ó"Ð"Ò"Ð"Ð"á��!�A�aÓ™˜A˜2›Ñ™q ! ›uÑ$€AØ	
�‰‹€BØ‘˜˜1˜Q˜qÓ!¡! Q B£%Ñ'©¨1¨"«Ñ-Ò-Ð-Ð-á��!�A�aÓ™˜A˜2›Ñ™q ! ›uÑ$€AØ	
�‰‹€BØ‘˜˜1˜Q˜qÓ!¡! Q B£%Ñ'©¨1¨"«Ñ-Ò-Ð-Ð-á��!�A�aÓ™˜A˜2›Ñ™q ! ›uÑ$€AØ	
�‰‹€BØ‘'˜!˜A˜a Ó"Ð"¡1 a R£5Ñ(©¨A¨2«Ñ.Ò.Ð.Ð.á��!�A�aÓ™˜A˜2›Ñ™q ! ›uÑ$€AØ	
�‰‹€BØ�Š7€Nˆ7á��!�A�aÓ™˜A˜2›Ñ™q ! ›uÑ$¡w¨q°°1°QÓ'7¹¸1¸"»Ñ'=¹aÀÀ»eÑ'CÑC€AØ	
�‰‹€BØ�‘G˜A˜a  !Ó$Ñ$¡Q¨ r£UÑ*©1¨a¨R«5Ñ0Ò0Ð0Ð0ô ˜i¬W°Q«ZÀCÔH€GØ�o‰o€GÜ�gœzÔ*Ð*Ñ*r8   c            	      óŽ  ‡‡‡‡— t        d«      Št        d‰d¬«      } t        d| «      \  }}}}}}| j                  Šˆfd„Šˆfd„Šˆˆˆfd„}ˆˆfd	„} ||| || «       ||| || «      z  }	|	j	                  ‰«      }
t        |
 ||| || «      z
  «      d
k(  sJ ‚ ||| || «       ||| || «      z  }	|	j	                  ‰«      }
|
 ||| || «      k(  sJ ‚ ||| || «       ||| || «      z  }	|	j	                  ‰«      }
|
d
k(  sJ ‚ ||| || «      }	|	j	                  ‰«      }
|
j                  ‰dz  dz
  «      sJ ‚y )Nr  ÚColorrC   r3  rj   c                 ó’   •— | j                   r|j                   sJ ‚|j                   s|j                   rJ ‚ ‰| |«       ‰||«      z  S r1   rÔ   ©rG   rH   rR   rQ   r>  s       €r6   Úidnz!test_contract_delta1.<locals>.idnD  ó@   ø€ Ø�wŠw˜1Ÿ7š7Ð"Ð"Ø—G’G˜qŸwšwÐ'Ð'Ù�Q�q‹z™%  !›*Ñ$Ð$r8   c                 ó’   •— | j                   r|j                   sJ ‚|j                   s|j                   rJ ‚ ‰| |«       ‰||«      z  S r1   rÔ   rJ  s       €r6   ÚTztest_contract_delta1.<locals>.TI  rL  r8   c                 ó>   •—  ‰| |||«      d‰z   ‰| |||«      z  z
  S ©Nr?   rÒ   )rG   rH   rQ   rR   rN  rK  r  s       €€€r6   ÚP1z test_contract_delta1.<locals>.P1N  s*   ø€ Ù�1�Q�q˜‹|˜a ™c¡! A a¨¨!£*™nÑ,Ð,r8   c                 ó&   •— d‰z   ‰| |||«      z  S rP  rÒ   )rG   rH   rQ   rR   rN  r  s       €€r6   ÚP2z test_contract_delta1.<locals>.P2Q  s   ø€ Ø�‰s‘1�Q�q˜˜1“:‰~Ðr8   r   rA   r?   )r   r   r   r>  Úcontract_deltar$   r3   )rH  rG   rH   rQ   rR   ry   rk   rQ  rS  rK   rM   rN  r>  rK  r  s              @@@@r6   Útest_contract_delta1rU  =  s‡  û€ äˆs‹€AÜ˜G¨°sÔ;€EÜ% m°UÓ;Ñ€A€qˆ!ˆQ��1Ø�K‰K€Eô%ô
%ö
-õñ 	ˆ1ˆqˆb�!�a�RÓ™˜A ˜r 1 q bÓ)Ñ)€AØ	
×	Ñ	˜%Ó	 €BÜ�B™˜A ˜r 1 q bÓ)Ñ)Ó*¨aÒ/Ð/Ð/á
ˆ1ˆqˆb�!�a�RÓ™˜A ˜r 1 q bÓ)Ñ)€AØ	
×	Ñ	˜%Ó	 €BØ‘�A˜�r˜1˜q˜bÓ!Ò!Ð!Ð!á
ˆ1ˆqˆb�!�a�RÓ™˜A ˜r 1 q bÓ)Ñ)€AØ	
×	Ñ	˜%Ó	 €BØ�Š7€Nˆ7á
ˆ1ˆqˆb�!�a�RÓ€AØ	
×	Ñ	˜%Ó	 €BØ�9‰9�Q˜‘T˜A‘XÔÐÑr8   c                  ó   — t        dd¬«      } t        d| «      \  }}| j                  }t        d| g«      }d ||«       ||«      z   || | «      z  z   }|j	                  |«      d ||«       || «      z  z   k(  sJ ‚y )Nr¸   r`   r²   úp qr´   r?   )r   r   r>  r#   rT  )r¸   r³   r  r>  r´   rµ   s         r6   Útest_contract_delta2rX  d  s‡   € Ü	˜ 1Ô	%€BÜ˜% Ó$�D€A€qØ�H‰H€EÜ�3˜˜Ó€Að ‰q�‹t‘A�a“D‰y™ ˜r 1 "›Ñ%Ñ%€DØ×Ñ˜uÓ%¨©Q¨q«T±!°Q°B³%©Z©Ò7Ð7Ñ7r8   c            	      óL  — t        «       5  t        d«      } t        d| d¬«      }t        d|«      \  }}}}}|j                  }t        d|g«      \  }}	 |	|«       ||«      z   |	|«      z   |||«       |||«      z   |	| «      z  z   }
 |
|||«      |
k(  sJ ‚t        |
 |
|||«      z
   |	|«       ||«      z   |	|«      z  z
   |	|«       ||«      z   |	|«      z  z   «      dk(  sJ ‚ |
|||«       |	|«       ||«      z   |	|«      z   |||«       |||«      z   |	| «      z  z   k(  sJ ‚|
j                  ||f||f«      }t        | |	|«       ||«      z   |	|«      z  z
   |||«       |||«      z   |	| «      z  z
  «      dk(  sJ ‚t        d|gd	z  t        j                  d
d«      «      }t        j                   |||«      z   || | | «       || | | «      z    || | | «      z
  z  } || | | «       || | «       ||| | «      z  z
   || | «       ||| | «      z  z
  }
|
j                  |«      }
|
dk(  sJ ‚ |	|«       ||«      z   |	|«      z  }
 |
|||«       |	|«       ||«      z   |	|«      z  k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr•   r:   r;   r3  r4  rW  r   Údgr`   r?   rA   )r.   r   r   r   rÁ   r    r$   r(   r#   r   rl   r
   ÚHalfr5  )r•   r:   rG   rH   rQ   rR   ry   r¾   r³   r  rK   rM   rZ  rs   s                 r6   Útest_funr\  n  sÓ  € Ü	Ó	!ñ *Ü�3‹KˆÜ! )°¸sÔCˆÜ& {°GÓ<‰ˆˆ1ˆa��AØ�N‰Nˆä˜E G 9Ó-‰ˆˆ1Ùˆa‹D‘�1“‰I‘a˜“d‰N™Q˜q ›V¡A a¨£F™]©1¨a¨R«5Ñ0Ñ0ˆÙ��1�Q‹x˜1Š}Ðˆ}Ü˜™A˜a  !›H™¡q¨£t©A¨a«D¡y±°1³¡~Ñ5¹¸!»¹Q¸q»T¹	Á!ÀAÃ$¹ÑFÓGÈ1ÒLÐLÐLÙ��1�Q‹x™1˜Q›4¡ !£™9¡Q q£T™>©A¨a°«F±1°Q°q³6©M¹!¸Q¸B»%Ñ,?Ñ?Ò?Ð?Ð?Ø×!Ñ! 1 Q %¨¨1¨Ó.ˆÜ˜™Q˜q›T¡! A£$™Y¡q¨£t™^Ñ+©a°°!«f±Q°q¸³V©m¹A¸q¸b»EÑ.AÑAÓBÀaÒGÐGÐGô ˜˜w˜i¨™k¬>×+HÑ+HÈÈAÓ+NÓOˆä—‘‘q˜˜1“v‘™r 1 " a R¨¨›|©b°!°°Q°B¸°r«lÑ:¹RÀÀÀAÀ2ÀqÀb»\ÑIÑJˆá�ˆr�1�"�a�R‹L™1˜a˜R  ›8¡E¨!¨Q¨B°¨r£NÑ2Ñ2±Q¸°r¸1¸"³X¹eÀAÀqÀbÈ!È»nÑ5LÑLˆØ×Ñ˜aÓ ˆØ�AŠvˆˆvÙˆa‹D‘�1“‰I‘a˜“d‰NˆÙ��1�Q‹x™1˜Q›4¡ !£™9¡Q q£T™>Ò)Ð)Ñ)÷5*÷ *ñ *ús   ‹JJÊJ#c                  óŠ  ‡— t        dd¬«      } t        dd¬«      }t        d| «      \  }}t        d|«      \  }}t        d| g«      \  }}t        d	|g«      \  }}	t        d
«      }
t        d«      Št	        j
                  |
‰d«       t        d| gt        j                  d«      |
«      }t        j                  |j                     |
k(  sJ ‚t        d|gt        j                  d«      ‰«      } ||«       || «      z  } ||«       || «      z  }||z   }||z  }t        |||z  z
  d|z  |z  z
  ||z  z
  «      dk(  sJ ‚ ||«       || «      z  } ||«       |	| «      z  }t        ||z  ||z  «      sJ ‚t        ||z  ||z  «      rJ ‚t	        j                  |
«      }t	        j                  |«      |
k(  sJ ‚‰t        j                  v sJ ‚t!        t"        ˆfd„«       t	        j$                  |
‰df|
ddf«       t	        j&                  |d«      t	        j&                  d|«      cxk(  rdk(  sJ ‚ J ‚t	        j(                  «        t        j                  ddddœddd dœdd dœgk(  sJ ‚‰t        j                  vsJ ‚t	        j                  ‰«      }t	        j                  |«      ‰k(  sJ ‚‰t        j                  v sJ ‚y )Nr:   r;   r<   ÚLorentzHÚLHzi,jzih,jhrW  zph qhÚGsymbolÚGHsymbolr   ÚGr?   ÚGHrA   c                  ó2   •— t        j                  ‰ dd«      S ©Nr?   rA   )r!   Úset_comm)ra  s   €r6   rÐ   z$test_TensorManager.<locals>.<lambda>¦  s   ø€ œ}×5Ñ5°hÀÀ1ÓE€ r8   )r   r?   rA   )r   r?   )r   r   r    r   r!   rf  r#   r   rD   Ú_comm_i2symbolr÷   r$   r7   Úcomm_symbols2iÚcomm_i2symbolÚ_comm_symbols2ir,   rØ   Ú	set_commsÚget_commÚclear)r:   r^  r}   rÿ   ÚihÚjhr³   r  ÚphÚqhr`  rb  rc  ÚpsÚpshrK   rM   ÚqsÚqshr  Únhra  s                        @r6   Útest_TensorManagerrw  ‹  s¼  ø€ Ü˜i°CÔ8€GÜ˜z°dÔ;€HÜ˜% Ó)�D€A€qÜ˜G XÓ.�F€BˆÜ˜ ˜yÓ)�D€A€qÜ˜' H :Ó.�F€Bˆä�YÓ€GÜ�jÓ!€HÜ×Ñ˜7 H¨aÔ0Ü�3˜˜	¤>×#=Ñ#=¸aÓ#@À'ÓJ€AÜ×'Ñ'¨¯©Ñ/°7Ò:Ð:Ð:Ü	�D˜8˜*¤n×&@Ñ&@ÀÓ&CÀXÓ	N€BÙ	
ˆ1‹‰a��‹e‰€BÙ
ˆR‹&‘�R�C“‰.€CØ
ˆS‰€AØ	
ˆ1‰€BÜ�B˜˜B™‘J  2¡ c¡Ñ)¨C°©GÑ3Ó4¸Ò9Ð9Ð9Ù	
ˆ1‹‰a��‹e‰€BÙ
ˆR‹&‘�R�C“‰.€CÜ�R˜‘V˜S ™VÔ$Ð$Ð$Ü˜˜B™  2¡Ô&Ð&Ð&Ü×$Ñ$ WÓ-€AÜ×&Ñ& qÓ)¨WÒ4Ð4Ð4à”}×4Ñ4Ñ4Ð4Ð4Ü
Œ:ÓEÔFÜ×Ñ˜W X¨aÐ0°'¸!¸A°Ô?Ü×!Ñ! ! QÓ'¬=×+AÑ+AÀ!ÀQÓ+GÔLÈ1ÒLÐLÑLÐLÐLÜ×ÑÔÜ×Ñ Q¨!¨q¡/°a¸1ÀÑ3EÈ!ÈtÁ}Ð!UÒUÐUÐUØœ=×8Ñ8Ñ8Ð8Ð8Ü	×	%Ñ	% hÓ	/€BÜ×&Ñ& rÓ*¨hÒ6Ð6Ð6Ø”}×4Ñ4Ñ4Ð4Ñ4r8   c                  óÜ	  — t        d«      } t        d| d¬«      }t        d|«      \  }}}}}|j                  }t	        d|g«      \  }}	|j
                  d   }
 ||«       |	|«      z  } ||«       ||«      z  }t        |«      t        |«      k7  sJ ‚ ||«       ||«      z   |||«      z   } ||«       ||«      z   |||«      z
  }t        |«      t        |«      k7  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |
j                  |
j
                  Ž |
k(  sJ ‚  ||«      j                   ||«      j
                  Ž  ||«      k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚ |j                  |j
                  Ž |k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |
j                  |
j
                  Ž «      t        |
«      k(  sJ ‚t          ||«      j                   ||«      j
                  Ž «      t         ||«      «      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚d„ } ||«      sJ ‚ ||«      sJ ‚ ||«      sJ ‚ ||«      sJ ‚ ||
«      sJ ‚ | ||«      «      sJ ‚ ||«      sJ ‚ ||«      sJ ‚ ||«      sJ ‚ ||«      sJ ‚t        j                  d	dd
«      } |j                  |j
                  Ž |k(  sJ ‚t         |j                  |j
                  Ž «      t        |«      k(  sJ ‚ ||«      sJ ‚y )Nr•   r:   r;   r3  r4  rW  r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr1   )r2   r   )Ú.0Ú_s     r6   ú	<genexpr>z/test_hash.<locals>.check_all.<locals>.<genexpr>×  s   è ø€ Ò:¨A”:˜a¤×'Ñ:ùs   ‚)Úallrü   )Úobjs    r6   Ú	check_allztest_hash.<locals>.check_allÖ  s   € ÜÑ:°·±Ô:Ó:Ð:r8   ra   r`   )
r   r   r   rÁ   r    rü   ÚhashÚfuncr   rl   )r•   r:   rG   rH   rQ   rR   ry   r¾   r³   r  Úp_typerM   r  r  Út4r€  Ú	tsymmetrys                    r6   Ú	test_hashr†  ±  sy  € Üˆs‹€AÜ˜i¨Q¸3Ô?€GÜ" ;°Ó8�M€A€qˆ!ˆQ�Ø�‰€Aä˜ ˜yÓ)�D€A€qØ�V‰V�A‰Y€FÙ	
ˆ1‹‰a�‹d‰€BÙ	
ˆ1‹‰a�‹d‰€BÜ�‹8”t˜B“xÒÐÐÙ	
ˆ1‹‰a�‹d‰‘Q�q˜“VÑ	€BÙ	
ˆ1‹‰a�‹d‰‘Q�q˜“VÑ	€BÜ�‹8”t˜B“xÒÐÐàˆ1�6‰6�1—6‘6ˆ?˜aÒÐÐØˆ7�<‰<˜Ÿ™Ð&¨'Ò1Ð1Ð1Øˆ1�6‰6�1—6‘6ˆ?˜aÒÐÐØˆ1�6‰6�1—6‘6ˆ?˜aÒÐÐØˆ6�;‰;˜Ÿ™Ð$¨Ò.Ð.Ð.Ø‰1ˆQ‹4�9‰9‘q˜“t—k‘kÐ"¡a¨£dÒ*Ð*Ð*Øˆ2�7‰7�B—G‘GÐ Ò"Ð"Ð"Øˆ2�7‰7�B—G‘GÐ Ò"Ð"Ð"Øˆ2�7‰7�B—G‘GÐ Ò"Ð"Ð"Øˆ2�7‰7�B—G‘GÐ Ò"Ð"Ð"ä��—‘˜Ÿ™�Ó ¤D¨£GÒ+Ð+Ð+Ü��—‘˜gŸl™lÐ+Ó,´°W³Ò=Ð=Ð=Ü��—‘˜Ÿ™�Ó ¤D¨£GÒ+Ð+Ð+Ü��—‘˜Ÿ™�Ó ¤D¨£GÒ+Ð+Ð+Ü��—‘˜VŸ[™[Ð)Ó*¬d°6«lÒ:Ð:Ð:Ü�	‘�!“—	‘	™A˜a›DŸ;™;Ð'Ó(¬D±°1³«JÒ6Ð6Ð6Ü��—‘˜Ÿ™Ð!Ó"¤d¨2£hÒ.Ð.Ð.Ü��—‘˜Ÿ™Ð!Ó"¤d¨2£hÒ.Ð.Ð.Ü��—‘˜Ÿ™Ð!Ó"¤d¨2£hÒ.Ð.Ð.Ü��—‘˜Ÿ™Ð!Ó"¤d¨2£hÒ.Ð.Ð.ò;ñ �QŒ<Ðˆ<Ù�WÔÐÐÙ�QŒ<Ðˆ<Ù�QŒ<Ðˆ<Ù�VÔÐÐÙ‘Q�q“TŒ?Ðˆ?Ù�RŒ=Ðˆ=Ù�RŒ=Ðˆ=Ù�RŒ=Ðˆ=Ù�RŒ=Ðˆ=ä×-Ñ-¨b°!°QÓ7€Iàˆ9�>‰>˜9Ÿ>™>Ð*¨iÒ7Ð7Ð7Ü��	—‘ 	§¡Ð/Ó0´D¸³OÒCÐCÐCÙ�YÔÐÑr8   c                  ól  — t        d«      } t        dd¬«      }| |_        t        d|«      \  }}}}}t	        d«      \  }}}	}
t        d|g«      }|||	|
g|_        t        d|gt        j                  d	«      d
«      }t        d«      |_        t        d|gdz  «      }| |_        t        d«      }t        d|gdz  «      }||_        t        d«      }g d¢|_        t        d|«      \  }}}t        d|g«      }|||	|
g|_        d}t        d«      }||_        t        d|«      \  }}}t        d|g«      }t        dd«      |_        t        d|gdz  «      }t        dd«      D ��cg c]  }t        dd«      D �cg c]  }||z   ‘Œ	 c}‘Œ! c}}|_        t        d|gdz  «      }t        dd«      D ���cg c]<  }t        d	d«      D ��cg c]"  }t        dd«      D �cg c]
  }||z   |z   ‘Œ c}‘Œ$ c}}‘Œ> c}}}|_        |||||||||	|
|||||||||||| |||||||fS c c}w c c}}w c c}w c c}}w c c}}}w )N)©r?   r   r   r   ©r   rc   r   r   ©r   r   rc   r   ©r   r   r   rc   r:   rƒ   r²   úi0:5r  r@   rB   r?   ÚGcommÚABrA   )©r?   rA   r`   rƒ   ©é   r8  é   é   ©é	   r   rc   ra   ©rg   rÜ   éûÿÿÿéúÿÿÿÚBAÚLorentzD©rc   r?   r?   r?   zmu0:3rC   )©r?   r?   r   )r?   r   r?   ©r   r?   r   Úndmzn0:3ÚNAé
   é   ÚNBÚNCr`   r‘  r’  )	r   r   Údatar   r   r#   r   rD   Úrange) Ú	minkowskir:   r™   rš   r›   rœ   r�   r—   r  r  r  r@   rB   rŽ  Ú	ba_matrixr™  rš  Úmu0Úmu1Úmu2rC   Ú
ndm_matrixrž  Ún0Ún1Ún2rŸ  r¢  r}   rÿ   r£  r   s                                    r6   Ú_get_valued_base_test_variablesr¯  î  sS  € Üð ó €Iô ˜i¨QÔ/€GØ€G„Lä'¨°Ó8Ñ€BˆˆB��Bä˜LÓ)�M€A€rˆ2ˆrÜ�3˜˜	Ó"€AØ��R˜ˆ_€A„FÜ�3˜˜	¤>×#=Ñ#=¸aÓ#@À'ÓJ€AÜ�1‹X€A„FÜ	�D˜7˜) A™+Ó	&€BØ€B„Gäð ó €Iô 
�D˜7˜) A™+Ó	&€BØ€B„Gô ˜zÓ*€HÚ!€H„MÜ" 7¨HÓ5�M€CˆˆcÜ�3˜˜
Ó#€AØ��R˜ˆ_€A„Fð€Jô
 ˜%Ó
 €CØ€C„HÜ ¨Ó,�J€BˆˆBÜ	�D˜3˜%Ó	 €BÜ�B˜‹m€B„GÜ	�D˜3˜% ™'Ó	"€BÜ5:¸2¸r³]×C°œU 2 r›]Ö+˜��!“Ô+ÓC€B„GÜ	�D˜3˜% ™'Ó	"€BÜLQÐRSÐUVËK×XÐXÀq´e¸A¸q³k×B°¤ a¨£Ö,˜1��1‘�Q“Ô,ÕBÔX€B„Gàˆq�"�b˜!˜W a¨¨R°°X¸sÀCÈÈcÐSUÐWYØ��B˜˜I y°*¸bÀ"ÀbÈ"ÈbðRð Rùò	 ,ùÓCùâ,ùÓBùÔXsB   Å"HÅ5HÆHÆ/H/ÇH)ÇH$Ç%H)Ç*H/ÈHÈ$H)È)H/c                  ó„  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}t        g d¢«      t        g d¢«      t        g d¢«      t        g d¢«      g}t        | «      ||||	gk(  sJ ‚t        |«      g d¢k(  sJ ‚t        |«      |k(  sJ ‚t         | |«      «      ||||	gk(  sJ ‚t         |||«      «      |k(  sJ ‚t        d |||«      z  «      |D �cg c]  }d|z  ‘Œ	 c}k(  sJ ‚t        d |||«      z  «      |D �cg c]  }d|z  ‘Œ	 c}k(  sJ ‚t         | |«       | |«      z   «      d|z  d|z  d|z  d|	z  gk(  sJ ‚ |||«       |||«      z
  d	k(  sJ ‚t         |||«      d |||«      z  z
  «      |D �cg c]  }| ‘Œ c}k(  sJ ‚	 d d d «       y c c}w c c}w c c}w # 1 sw Y   y xY w)
Nr�  r�  r”  r–  )r?   rA   r`   rƒ   r‘  r8  r’  r“  r•  r   rc   ra   rg   rÜ   r—  r˜  r`   r—  rA   r   )r.   r¯  r   r   )r@   rB   rŽ  r™  rC   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_BAr}   s                                  r6   Útest_valued_tensor_iterr²  '  s  € Ü	Ó	!ñ JäQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2äšÓ&¬ªlÓ(;¼UÂ>Ó=RÔTYÒZjÓTkÐlˆä�A‹w˜1˜b " b˜/Ò)Ð)Ð)Ü�I‹Ò"XÒXÐXÐXÜ�B‹x˜7Ò"Ð"Ð"ô ‘A�b“E‹{˜q " b¨"˜oÒ-Ð-Ð-Ü‘B�r˜2“JÓ 7Ò*Ð*Ð*Ü�A™˜2˜r›
‘NÓ#°wÖ'?°!¨¨A«Ò'?Ò?Ð?Ð?Ü�B™˜B ›‘OÓ$¸Ö(A°A¨¨a«Ò(AÒAÐAÐAô ‘A�b“E™A˜b›E‘MÓ" q¨¡s¨A¨b©D°!°B±$¸¸"¹Ð&=Ò=Ð=Ð=Ù�"�b‹z™B˜r 2›JÑ&¨!Ò+Ð+Ð+Ü‘B�r˜2“J ¡R¨¨B£Z¡Ñ/Ó0ÀÖ4I¸A°a²RÒ4IÒIÐIÑI÷)Jð Jùò (@ùÚ(Aùò 5J÷)Jð Jús7   ‹CF6Ã%F'Ã1F6ÄF,ÄA0F6Æ
F1ÆF6Æ'F6Æ6F?c                  óŽ  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} | | «      d    | |«      d   k(  sJ ‚ | | «      d    | |«      d    k(  sJ ‚ |||«      d   dk(  sJ ‚ ||| «      d   dk(  sJ ‚ || | «      d   dk(  sJ ‚ || |«      d   dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr   r?   ©r?   r?   rc   )r.   r¯  ©r@   rB   rŽ  r™  rC   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  € Ü	Ó	!ñ 
&äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2á�"�‹v�a‰y™A˜b›E !™HÒ$Ð$Ð$Ù�"�‹v�a‰y™Q˜r›U 1™X˜IÒ%Ð%Ð%á�"�b‹z˜$Ñ 2Ò%Ð%Ð%Ù�"�r�c‹{˜4Ñ  AÒ%Ð%Ð%Ù�2�#˜�s‹|˜DÑ! RÒ'Ð'Ð'Ù�2�#�r‹{˜4Ñ  AÒ%Ð%Ñ%÷
&÷ 
&ñ 
&ús   ‹B&B;Â;Cc                  óî  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} |||«      j                  «       }|t        g d¢g d¢g d¢g d¢g«      k(  sJ ‚ ||| «      j                  «       t	        d«      k(  sJ ‚ | |«      j                  «       t        ||||	g«      k(  sJ ‚ | | «      j                  «       t        || | |	 g«      k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nrˆ  r‰  rŠ  r‹  rƒ   )r.   r¯  Ú
get_matrixr   r   )r@   rB   rŽ  r™  rC   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(  € Ü	Ó	!ñ AäQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2á�2�r“
×%Ñ%Ó'ˆØœÚ /Ú /Ú /Ú /ð	 "ó #ò #ð 	#ð #ñ �"�r�c‹{×%Ñ%Ó'¬3¨q«6Ò1Ð1Ð1ñ �‹u×ÑÓ!¤V¨Q°°B¸¨OÓ%<Ò<Ð<Ð<Ù�"�‹v× Ñ Ó"¤f¨a°"°°r°c¸B¸3Ð-?Ó&@Ò@Ð@Ñ@÷#A÷ Añ Aús   ‹CC+Ã+C4c                  óæ  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} | |«       | | «      z  j                  |dz  |dz  z
  |dz  z
  |	dz  z
  k(  sJ ‚ | |«       | | «      z  j                  | dz  k(  sJ ‚ | |«       | | «      z  j                   | |«      dz  k(  sJ ‚ | |«       || «      z  j                  | d|z  z
  d|	z  z
  k(  sJ ‚t        d«      D ]=  }t        d«      D ]-  } | |«       || «      z  ||f   ||||	g|   g d¢|   z  k(  rŒ-J ‚ Œ?  ||«       || «      z  j                  |dz   |dz  z   |dz  z   |	dz  z   k(  sJ ‚ | |«       ||| «      z  } | |«      j                  dk(  sJ ‚ ||| «      j                  dk(  sJ ‚|j                  dk(  sJ ‚t        d«      D ]  }||   ||||	g|   k(  rŒJ ‚ 	 d d d «       y # 1 sw Y   y xY w)NrA   r`   rƒ   )r   rc   ra   rg   r?   )r.   r¯  r¤  r¥  rÝ   ) r@   rB   rŽ  r™  rC   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ÿ   Úcontrexps                                    r6   Útest_valued_tensor_contractionr½  a  sc  € Ü	Ó	!ñ 5äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2á�"“™˜2˜#›‘×$Ñ$¨¨Q©°°q±Ñ(8¸2À¹7Ñ(BÀRÈ1ÁWÑ(LÒLÐLÐLÙ�"“™˜2˜#›‘×$Ñ$¨¨Q©Ò.Ð.Ð.Ù�"“™˜2˜#›‘×$Ñ$©¨"«°©
Ò2Ð2Ð2Ù�"“™˜2˜#›‘×$Ñ$¨¨¨a°"©f©°q¸2±vÑ(=Ò=Ð=Ð=ä�q“ò 	YˆAÜ˜1“Xò Y�Ù˜"›¡ 2 #£™¨¨1¨Ñ-°!°R¸¸R°ÀÑ1CÂoÐVWÑFXÑ1XÓXÐXÐXñYð	Yñ
 �#“™˜C˜4›Ñ ×&Ñ&¨1°©6¨'°B¸!±GÑ*;¸bÀA¹gÑ*EÈÈaÉÑ*OÒOÐOÐOá�R“5™2˜b 2 #›;Ñ&ˆÙ�‹u�z‰z˜QŠÐˆÙ�"�r�c‹{×Ñ 1Ò$Ð$Ð$Ø�}‰} Ò!Ð!Ð!Ü�q“ò 	5ˆAØ˜A‘; 1 b¨"¨b /°!Ñ"4Ó4Ð4Ð4ñ	5÷)5÷ 5ñ 5ús   ‹D G'Ä,B-G'ÇG'Ç'G0c                  óø   — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} ||| «      j                  dk(  sJ ‚ ||| «      j                  dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nrƒ   rA   ©r.   r¯  r¤  rµ  s                                r6   Ú#test_valued_tensor_self_contractionrÀ  y  sž   € Ü	Ó	!ñ %äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2á�"�r�c‹{×Ñ 1Ò$Ð$Ð$Ù�"�r�c‹{×Ñ 1Ò$Ð$Ñ$÷%÷ %ñ %ús   ‹AA0Á0A9c                  ór  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}|dz  |dz   |dz  z   |dz  z   |	dz  z   k(  sJ ‚|dz  t        |dz   |dz  z   |dz  z   |	dz  z   «      k(  sJ ‚ ||«      dz  |dz  k(  sJ ‚ ||«      dz  |dz  k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)NrA   r?   )r.   r¯  r   rµ  s                                r6   Útest_valued_tensor_powrÂ  ‚  s  € Ü	Ó	!ñ !äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2à�!‰t˜˜1™�u˜r 1™u‘} r¨1¡uÑ,¨r°1©uÑ4Ò4Ð4Ð4Ø�!‰t”t˜Q ™T˜E B¨¡E™M¨B°©EÑ1°B¸±EÑ9Ó:Ò:Ð:Ð:Ù�‹v�q‰y˜A˜q™DÒ Ð Ð Ù�‹v�q‰y˜A˜q™DÒ Ð Ñ ÷!÷ !ñ !ús   ‹BB-Â-B6c                  ó^  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}t        d«      \  }}}| | |«      z   ||«      z  } | d   ||z  k(  sJ ‚| d   d|	z  |z  k(  sJ ‚| | |«      z   || «      |z  z  j                  }!|!j	                  «       | |z  |z  d|z  |z  |z  z
  d|	z  |z  |z  z
  k(  sJ ‚ | |«       ||«      z   }"|"d   |k(  sJ ‚|"d   |dz   k(  sJ ‚|"d   |dz   k(  sJ ‚|"d   |	dz   k(  sJ ‚ | |«       ||«      z
  }#|#d   |k(  sJ ‚|#d   |dz
  k(  sJ ‚|#d   |dz
  k(  sJ ‚|#d   |	dz
  k(  sJ ‚|" || «      z  j                  | d|z  z
  d|	z  z
  dz
  k(  sJ ‚| | |«      z  | ||«      z  z   }$|$ ||«      z  d	z  }%|%d|z   |||«      z  z   }&|&dz  }'|'dz  |&k(  sJ ‚|' || | «      z  }(|(j                  j	                  «       d
|z  |z  d|z  |z  z   d|z  |z  z   d
|	z  |z  z   d|z  z   d|z  z   k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nzx1:4r´  )r`   r`   r`   rA   r   r?   é   rÜ   é   é   é   éˆ   )r.   r¯  r   r¤  r   ))r@   rB   rŽ  r™  rC   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ÿ  € Ü	Ó	!ñ %_äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ä˜V“_‰
ˆˆB�ð ™!˜B›%‘Z¡! B£%Ñ'ˆ
Ø˜$Ñ 2¨¡7Ò*Ð*Ð*Ø˜$Ñ 1 r¡6¨B¡;Ò.Ð.Ð.Ø™A˜b›E‘z¡a¨¨£f¨r¡kÑ2×8Ñ8ˆ
à× Ñ Ó" r c¨"¡f¨R¡i°!°B±$°r±'¸"±*Ñ&<¸qÀ¹tÀB¹wÀr¹zÑ&IÒIÐIÐIá�R“5™1˜R›5‘=ˆà˜‰{˜aÒÐÐØ˜‰{˜b 1™fÒ$Ð$Ð$Ø˜‰{˜b 1™fÒ$Ð$Ð$Ø˜‰{˜b 1™fÒ$Ð$Ð$á�R“5™1˜R›5‘=ˆà˜‰{˜aÒÐÐØ˜‰{˜b 1™fÒ$Ð$Ð$Ø˜‰{˜b 1™fÒ$Ð$Ð$Ø˜‰{˜b 1™fÒ$Ð$Ð$à™1˜b˜S›6Ñ!×'Ñ'¨B¨3°°2±©:¸¸"¹Ñ+<¸rÑ+AÒAÐAÐAà‘1�R“5‘˜2™a ›e™8Ñ#ˆØ™˜"›‘ Ñ$ˆØ˜˜"™™R  B›Z™Ñ'ˆØ˜‘	ˆØ�q‰y˜EÒ!Ð!Ð!Ø™˜R˜C " ›Ñ%ˆà�z‰z× Ñ Ó" b¨¡d¨2¡g°°2±°b±Ñ&8¸2¸b¹5À¹8Ñ&CÀbÈÁeÈBÁhÑ&NÐQTÐUWÑQWÑ&WÐZ[Ð\^ÑZ^Ñ&^Ò^Ð^Ñ^÷K%_÷ %_ñ %_ús   ‹HH#È#H,c                  óª  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} | |«       | | «      z  |dz  |dz  z
  |dz  z
  |	dz  z
  z
  }|j                  dk(  sJ ‚|dz  |dz  z
  |dz  z
  |	dz  z
   | |«       | | «      z  z
  }|j                  dk(  sJ ‚ | |«       | | «      z  |dz  z
  |dz  z   |dz  z   |	dz  z   }|j                  dk(  sJ ‚ ||«       || «      z  d|dz  z  z   d|dz  z  z
  d|dz  z  z
  d|	dz  z  z
   | |«       | | «      z  z
  } | j                  dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)NrA   r   r¿  )!r@   rB   rŽ  r™  rC   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­  € Ü	Ó	!ñ äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ñ �"“‘a˜˜“f‘  1¡ r¨1¡u¡¨r°1©uÑ 4°r¸1±uÑ <Ñ=ˆØ�z‰z˜QŠÐˆð �1‘�r˜1‘u‘˜r 1™uÑ$ r¨1¡uÑ,©q°«u±Q¸°s³V©|Ñ;ˆØ�z‰z˜QŠÐˆñ �2“‘q˜"˜“v‘  1¡Ñ$ r¨1¡uÑ,¨r°1©uÑ4°r¸1±uÑ<ˆØ�z‰z˜QŠÐˆñ �#“‘q˜#˜“w‘  1 a¡4¡Ñ'¨!¨B°©E©'Ñ1°A°b¸!±e±GÑ;¸aÀÀAÁ¹gÑEÉÈ"ËÉaÐQSÐPSËfÉÑTˆØ�z‰z˜QŠÐ‰÷%÷ ñ ús   ‹D4E	Å	Ec                  óV  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}t        d«      }ddg|_        t	        d|«      \  }}}t        dd¬«      \  }}} }!t        d|gdz  «      }"||g| |!fg|"_        t        d	|gdz  «      }#|| g||!gg|#_         |"||«       |#| | «      z  }$|$j                  |dz  |dz  z   | dz  z   |!dz  z   k(  sJ ‚|$j                  |dz  d|z  | z  z   |!dz  z   k7  sJ ‚ |"||«       |"| | «      z  }%|%j                  |dz  || z  z   | |z  z   |!dz  z   k(  sJ ‚|%j                  |dz  d|z  | z  z   |!dz  z   k7  sJ ‚| |"|| «      z  j                  }&|&j                  «       ||z  ||!z  z   k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)
NÚ	Euclideanr?   zi1:4za b c dF)ÚcommutativeÚV1rA   ÚV2)r.   r¯  r   r¤  r   r   r#   r   )'r@   rB   rŽ  r™  rC   r:   r—   r  r  r  rš  r¨  r©  rª  rž  r¬  r­  r®  rŸ  r¢  r£  r¦  r§  r«  r™   rš   r›   rœ   r�   ÚeuclidrG   rH   rQ   rR   r×  rØ  ÚvtpÚvtp2ÚVcs'                                          r6   Útest_noncommuting_componentsrÝ  Ë  s  € Ü	Ó	!ñ ,äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ä  Ó-ˆØ˜!�fˆŒÜ# F¨FÓ3‰
ˆˆB�ä˜Y°EÔ:‰
ˆˆ1ˆa�Ü˜˜v˜h q™jÓ)ˆØ�q�6˜A˜q˜6Ð"ˆŒÜ˜˜v˜h q™jÓ)ˆØ�q�6˜A˜q˜6Ð"ˆŒá��R‹j™2˜r˜c B 3›<Ñ'ˆà�x‰x˜1˜a™4 ! Q¡$™;¨¨A©Ñ-°°1±Ñ4Ò4Ð4Ð4Ø�x‰x˜1˜a™4 ! A¡# a¡%™<¨!¨Q©$Ñ.Ò.Ð.Ð.á�"�b‹z™"˜b˜S 2 #›,Ñ&ˆà�y‰y˜A˜q™D 1 Q¡3™J¨¨1©Ñ,¨q°!©tÑ3Ò3Ð3Ð3Ø�y‰y˜A˜q™D 1 Q¡3 q¡5™L¨1¨a©4Ñ/Ò/Ð/Ð/à‘"�R˜"˜“+‰o×#Ñ#ˆØ�y‰y‹{˜a !™e a¨!¡e™mÒ+Ð+Ñ+÷3,÷ ,ñ ,ús   ‹F
FÆF(c                  ób  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}t        |«      } ||«       || «      z  j                   ||«      j	                  «       j
                  |z   ||«      j	                  «       z  d   k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)N)r   r   )r.   r¯  r   r¤  r¸  rN  )r@   rB   rŽ  r™  rC   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Æ   € Ü	Ó	!ñ fäQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ä˜Ó$ˆÙ�2“‘r˜2˜#“w‘×$Ñ$©¨B«×):Ñ):Ó)<×)>Ñ)>ÀÑ)HÉ2ÈbË6×K\ÑK\ÓK^Ñ)^Ð`dÑ(eÒeÐeÑe÷f÷ fñ fús   ‹BB%Â%B.c                  ó(  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}|dz   |dz
  ||	g}t        |«      | _        t	        d«      D ]  } | |«      j                  |   ||   k(  rŒJ ‚ t        d«      \  }} }!t        ||| |!g«       | | «      _        t	        d«      D ]D  } | |«      j                  |   || |  |! g|   k(  sJ ‚| j                  |   || |  |! g|   k(  rŒDJ ‚ t	        d«      D �"�cg c]-  }"t	        d«      D �cg c]  }|dz  d|dz  z  z
  |"dz   z  ‘Œ c}‘Œ/ }#}"}|# || | «      _        t	        d«      D ]¾  }t	        d«      D ]®  }" |||«      j                  ||"f   |#|   |"   |rdndz  |"rdndz  k(  sJ ‚ || |«      j                  ||"f   |#|   |"   |"rdndz  k(  sJ ‚ ||| «      j                  ||"f   |#|   |"   |rdndz  k(  sJ ‚ || | «      j                  ||"f   |#|   |"   k(  rŒ®J ‚ ŒÀ |# || |«      _        t	        d«      D ]¾  }t	        d«      D ]®  }" |||«      j                  ||"f   |#|   |"   |rdndz  k(  sJ ‚ || |«      j                  ||"f   |#|   |"   k(  sJ ‚ ||| «      j                  ||"f   |#|   |"   |rdndz  |"rdndz  k(  sJ ‚ || | «      j                  ||"f   |#|   |"   |"rdndz  k(  rŒ®J ‚ ŒÀ 	 d d d «       y c c}w c c}}"w # 1 sw Y   y xY w)Nr?   rƒ   zqx qy qzr`   rA   r’  rc   )r.   r¯  r   r¤  r¥  r   )$r@   rB   rŽ  r™  rC   r:   r—   r  r  r  rš  r¨  r©  rª  rž  r¬  r­  r®  rŸ  r¢  r£  r¦  r§  r«  r™   rš   r›   rœ   r�   Úarrr}   ÚqxÚqyÚqzrÿ   Úrandom_4x4_datas$                                       r6   Ú test_valued_assign_numpy_ndarrayrç  ñ  sè  € Ü	Ó	!ñ "YäQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ð �‰s�B�q‘D˜"˜bÐ!ˆÜ�s“ˆŒÜ�q“ò 	/ˆAÙ˜“u—z‘z !‘}¨¨A©Ó.Ð.Ð.ð	/ô ˜ZÓ(‰
ˆˆB�Ü˜Q  B¨˜OÓ,‰ˆ2ˆ#‹ŒÜ�q“ò 	6ˆAÙ�R“5—:‘:˜a‘= Q¨¨¨b¨S°2°#Ð$6°qÑ$9Ò9Ð9Ð9Ø—6‘6˜!‘9  R C¨"¨¨r¨cÐ 2°1Ñ 5Ó5Ð5Ð5ð	6ô
 MRÐRSËH×UÀq¼¸q»ÖB°A˜Q ™T ! A q¡D¡&™[¨1¨Q©3Ó/ÔBÐUˆÑUØ+‰ˆBˆ3��‹Ôä�q“ò 	HˆAÜ˜1“Xò H�Ù˜"˜b“z—‘ q¨! tÑ,°ÀÑ0BÀ1Ñ0EÉQÁrÐTUÑ0VÑ^_ÑXZÐefÑ0gÒgÐgÐgÙ˜2˜#˜r“{×'Ñ'¨¨1¨Ñ-°ÀÑ1CÀAÑ1FÉaÉÐUVÑ1WÒWÐWÐWÙ˜"˜r˜c“{×'Ñ'¨¨1¨Ñ-°ÀÑ1CÀAÑ1FÉaÉÐUVÑ1WÒWÐWÐWÙ˜2˜# ˜s“|×(Ñ(¨¨A¨Ñ.°/À!Ñ2DÀQÑ2GÓGÐGÐGñ	Hð	Hð +‰ˆBˆ3�‹ÔÜ�q“ò 	YˆAÜ˜1“Xò Y�Ù˜"˜b“z—‘ q¨! tÑ,°ÀÑ0BÀ1Ñ0EÉQÁrÐTUÑ0VÒVÐVÐVÙ˜2˜#˜r“{×'Ñ'¨¨1¨Ñ-°ÀÑ1CÀAÑ1FÒFÐFÐFÙ˜"˜r˜c“{×'Ñ'¨¨1¨Ñ-°ÀÑ1CÀAÑ1FÉaÉÐUVÑ1WÑ_`ÑY[ÐfgÑ1hÒhÐhÐhÙ˜2˜# ˜s“|×(Ñ(¨¨A¨Ñ.°/À!Ñ2DÀQÑ2GÉqÉÐVWÑ2XÓXÐXÐXñ	Yñ	Y÷;"Yð "Yùò$ CùÓU÷%"Yð "YúsK   ‹A.LÁ:A;LÃ6LÄLÄK=Ä4LÄ9CLÈCLË.LË=LÌLÌLc                  óœ  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}}g d¢g d¢g d¢g d¢g}||_        t        |«      }|j                  }|j                  «       } t        d«      }!|j                  «       }"t        d«      D �]  }#t        d«      D �]  }$ |||«      j                  |#|$f   ||#|$f   k(  sJ ‚ || | «      j                  |#|$f   | |#|$f   k(  sJ ‚ ||| «      j                  |#|$f   |!|#|$f   k(  sJ ‚ || |«      j                  |#|$f   |!|#|$f   k(  sJ ‚ |||«      |#|$f   ||#|$f   k(  sJ ‚ || | «      |#|$f   | |#|$f   k(  sJ ‚ ||| «      |#|$f   |!|#|$f   k(  sJ ‚ || |«      |#|$f   |!|#|$f   k(  sJ ‚ |"|| «      |#|$f   |!|#|$f   k(  r�ŒJ ‚ �Œ! 	 d d d «       y # 1 sw Y   y xY w)N)rA   rA   rA   r?   )rA   r`   r?   r   )rA   r?   rA   r`   )r?   r   r`   rA   rƒ   )	r.   r¯  r¤  r   rÁ   Úinvr   Úget_kronecker_deltar¥  )%r@   rB   rŽ  r™  rC   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ÚKDr}   rÿ   s%                                        r6   Útest_valued_metric_inverserï    sR  € Ü	Ó	!ñ 7äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2ò
 šLª,ºÐEˆØˆŒÜ�2‹JˆØ—‘ˆØ�u‰u‹wˆä�1‹vˆð ×(Ñ(Ó*ˆä�q“ó 	7ˆAÜ˜1“Xó 
7�Ù˜b "“~×*Ñ*¨1¨a¨4Ñ0°A°a¸°d±GÒ;Ð;Ð;Ù˜r˜c B 3Ó'×,Ñ,¨Q°¨TÑ2°d¸1¸a¸4±jÒ@Ð@Ð@Ù˜b 2 #“×+Ñ+¨A¨q¨DÑ1°T¸!¸Q¸$±ZÒ?Ð?Ð?Ù˜r˜c 2“×+Ñ+¨A¨q¨DÑ1°T¸!¸Q¸$±ZÒ?Ð?Ð?Ù˜b "“~ a¨ dÑ+¨q°°A°©wÒ6Ð6Ð6Ù˜r˜c B 3Ó'¨¨1¨Ñ-°°a¸°d±Ò;Ð;Ð;Ù˜b 2 #“ q¨! tÑ,°°Q¸°T±
Ò:Ð:Ð:Ù˜r˜c 2“ q¨! tÑ,°°Q¸°T±
Ò:Ð:Ð:á˜"˜r˜c“{ 1 a 4Ñ(¨D°°A°©JÔ6Ð6Ð6ò
7ñ	7÷%7÷ 7ñ 7ús   ‹F%GÆ2GÇGc                  ó>  — t        «       5  t        «       \  } }}}}}}}}}	}
}}}}}}}}}}}}}}}}}} | |«       | |«      z  }|j                  «       }| | |«       | |«      z  k(  sJ ‚t        d«      D ]#  }t        d«      D ]  } ||| f   || |f   k(  rŒJ ‚ Œ%  ||«       | |«      z   ||«      z  }!|!j                  «       }"t        d«      D ]5  }t        d«      D ]%  } t        d«      D ]  }#|!|| |#f   |"| ||#f   k(  rŒJ ‚ Œ' Œ7 	 d d d «       y # 1 sw Y   y xY w)Nrƒ   )r.   r¯  r$   r¥  )$r@   rB   rŽ  r™  rC   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Úe2r}   rÿ   Úo1Úo2r   s$                                       r6   Útest_valued_canon_bp_swapaxesrõ  8  sb  € Ü	Ó	!ñ 6äQpÓQrñ	OˆˆAˆr�2�q˜' 1 b¨"¨b°(¸CÀÀcÈ3ÐPRÐTVØ	ˆR��R˜ I¨z¸2¸rÀ2ÀrÈ2áˆr‹U‘1�R“5‰[ˆØ�[‰[‹]ˆØ‘Q�r“U™1˜R›5‘[Ò Ð Ð Ü�q“ò 	,ˆAÜ˜1“Xò ,�Ø˜!˜Q˜$‘x 2 a¨ d¡8Ó+Ð+Ð+ñ,ð	,ñ ˆr‹U‘1�R“5‰[™˜2›ÑˆØ�[‰[‹]ˆÜ�q“ò 	6ˆAÜ˜1“Xò 6�Ü˜q›ò 6�AØ˜a  A˜g™;¨"¨Q°°1¨W©+Ó5Ð5Ð5ñ6ñ6ñ	6÷6÷ 6ñ 6ús   ‹BDÂA*DÄDÄDc                  óä  ‡‡‡‡	‡
‡— t        «       5  t        dd¬«      } t        d| «      \  }}}}g d¢| _        t	        d| gdz  «      }t	        d| gdz  t        j                  d«      «      Št	        d| gdz  t        j                  d«      «      Št        g d	¢g d
¢g d¢g«      Š
‰
‰
j                  z   Š‰
‰
j                  z
  Š	‰
|_        ‰|_        ‰	|_        d„ Š‰‰_        t        t        ˆˆˆ
fd„«       t        t        ˆˆˆ	fd„«       ‰	‰_        t        t        ˆˆˆfd„«       t        t        ˆˆˆ
fd„«       g d¢g d¢g d¢g‰_        g d¢g d¢g d¢g‰_        d d d «       y # 1 sw Y   y xY w)NÚITr`   r²   úi0:4©r?   r?   r?   r@   rA   ra   )r?   rA   r`   )rƒ   r‘  r8  )r’  r“  r•  c                 ó   — || _         y r1   )r¤  )r@   Údats     r6   Úassignz:test_valued_components_with_wrong_symmetry.<locals>.assign\  s	   € ØˆA�Fr8   c                  ó   •—  ‰‰ ‰«      S r1   rÒ   )ÚA_symrü  Ú	mat_nosyms   €€€r6   rÐ   z<test_valued_components_with_wrong_symmetry.<locals>.<lambda>`  s   ø€ ¡6¨%°Ó#;€ r8   c                  ó   •—  ‰‰ ‰«      S r1   rÒ   )rþ  rü  Úmat_antisyms   €€€r6   rÐ   z<test_valued_components_with_wrong_symmetry.<locals>.<lambda>a  s   ø€ ¡6¨%°Ó#=€ r8   c                  ó   •—  ‰‰ ‰«      S r1   rÒ   )Ú	A_antisymrü  Úmat_syms   €€€r6   rÐ   z<test_valued_components_with_wrong_symmetry.<locals>.<lambda>d  s   ø€ ¡6¨)°WÓ#=€ r8   c                  ó   •—  ‰‰ ‰«      S r1   rÒ   )r  rü  rÿ  s   €€€r6   rÐ   z<test_valued_components_with_wrong_symmetry.<locals>.<lambda>e  s   ø€ ¡6¨)°YÓ#?€ r8   )r   r   r   )r.   r   r   r¤  r#   r   rF   r   rN  r,   rØ   )r÷  r™   rš   r›   rœ   ÚA_nosymr  rþ  rü  r  rÿ  r  s         @@@@@@r6   Ú*test_valued_components_with_wrong_symmetryr  K  s4  ý€ Ü	Ó	!ñ ;Ü˜T qÔ)ˆÜ'¨°Ó3‰ˆˆB��BÚˆŒÜ˜S 2 $ q¡&Ó)ˆÜ˜3   Q¡¬×(FÑ(FÀqÓ(IÓJˆÜ˜s R D¨¡F¬N×,JÑ,JÈ2Ó,NÓOˆ	äšG¢GªGÐ4Ó5ˆ	Ø˜iŸk™kÑ)ˆØ )§+¡+Ñ-ˆà ˆŒØˆŒØ"ˆŒò	ð ˆŒ
ÜŒzÕ;Ô<ÜŒzÕ=Ô>à$ˆ	ŒÜŒzÕ=Ô>ÜŒzÕ?Ô@â¢ªIÐ6ˆŒ
Ú#¢Y²	Ð:ˆ	Œ÷9;÷ ;ñ ;ús   ‘EE&Å&E/c                  óx  — t        «       5  t        dddd¬«      } ddg| _        t        d| «      \  }}}}t	        d| g«      }dd	g|_        t	        d
| gdz  t        j                  d«      «      }d	dgdd	gg|_         |||«       || «      z   |||«      z   || «      z  }|j                  t        d	d	gd	dgg«      k(  sJ ‚ |||«       |||«      z   || «      z   || «      z  }|j                  |j                  k(  sJ ‚||z   j                  d|j                  z  k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr:   r?   r}   rA   ©r[   r=   r˜   rc   ú\mu, \nu, \alpha, \betaÚur   ri   ra   )r.   r   r¤  r   r#   r   rF   r   )	r:   rt   ru   rq   rr   r  ri   Úmul_1Úmul_2s	            r6   Útest_issue_10972_TensMul_datar  j  sW  € Ü	Ó	!ñ 8Ü! )¸QÈ3ÐTUÔVˆØ˜A�wˆŒä,Ð-JØ-4ó6ÑˆˆB��tô �s˜W˜IÓ&ˆØ�Q�ˆŒä�s˜W˜I a™K¬×)GÑ)GÈÓ)KÓLˆØ�a�&Ø�q�'ðˆŒñ �"�e“™q % ›yÑ(©1¨R°«;Ñ6¹¸D¸5»ÑAˆØ—
‘
œe a¨ V¨a°¨VÐ$4Ó5Ò5Ð6Ð5á�"�e“™q  T›{Ñ*©Q°¨v«YÑ6¹¸D¸5»ÑAˆØ—
‘
˜eŸj™jÒ(Ð)Ð(à˜‘×$Ñ$¨¨E¯J©J©Ò6Ð7Ñ6÷)8÷ 8ñ 8ús   ‹DD0Ä0D9c                  ó¼  — t        «       5  t        dddd¬«      } g d¢| _        t        d| «      \  }}}}t	        d| g«      }g d	¢|_        t	        d
| gdz  t        j                  d«      «      }t        d«      \  }}}	}
}}d|||	g| d|| g| | d|
g|	 ||
 dgg|_         |||«       || «      z  } ||«       ||«      z  j                  t        g d¢d|dz  ||z  ||	z  gd||z  |dz  ||	z  gd||	z  ||	z  |	dz  gg«      k(  sJ ‚ ||«       ||«      z  j                  «       j                   ||«       ||«      z  j                  k(  sJ ‚ |||«       |||«      z   || «      z   || «      z  j                   ||«       ||«      z  j                   k(  sJ ‚ |||«       |||«      z   || «      z   || «      z  j                   ||«       ||«      z  j                  k(  sJ ‚t	        d| gdz  t        j                  d«      «      }| j                  |_         ||«       ||«      z   |||«      z   } || «       |||«      z  }|j                  t        g d¢«      k(  sJ ‚ || «       |||«      z   |||«      z  }|j                  t        j                  ddd«      k(  sJ ‚ |||«       |||«      z   || | «      z  }|j                  dd d …f   t        g d¢«      k(  sJ ‚|j                  d d …df   t        g d¢«      k(  sJ ‚ || «       |||«      z  }|j                  t        g d¢«      k(  sJ ‚|`d d d «       y # 1 sw Y   y xY w)Nr:   r?   r;   rƒ   r	  r›  r
  r  rˆ  ri   rA   ra   zE_x E_y E_z B_x B_y B_zr   )r   r   r   r   r¾   )r.   r   r¤  r   r#   r   rF   r   r   r$   Úzeros)r:   rt   ru   rq   rr   r  ri   ÚExÚEyÚEzÚBxÚByÚBzr—   r¾   Úperpr  r  ÚFperpÚmul_3s                       r6   Útest_TensMul_datar  ‚  s¯  € Ü	Ó	!ñ 8Ü! )¸QÈ3ÐTUÔVˆÚ$ˆŒä,Ð-JØ-4ó6ÑˆˆB��tô �s˜W˜IÓ&ˆÚˆŒä�s˜W˜I a™K¬×)GÑ)GÈÓ)KÓLˆÜ!(Ð)BÓ!CÑˆˆB��B˜˜Bà��B˜ˆOØˆS�!�R˜"˜ÐØˆS�2�#�q˜"ÐØˆS�"�r�c˜1Ðð	ˆŒñ ˆb�"‹I™˜2˜#›Ñˆá�2“™˜2›‘×$Ñ$Ü’|Ø  q¡¨"¨r©'°2¸±7Ð;Ø  b¡¨"°©'°2¸±7Ð;Ø  b¡¨"¨r©'°2¸±7Ð;ð=ó >ò>ð 	ð >ñ �2“™˜2›‘×(Ñ(Ó*×/Ñ/±A°b³E¹A¸b»E±M×3GÑ3GÒGÐHÐGá�2�u“¡ $¨£Ñ+©a°°«iÑ7¹!¸T¸E»(ÑB×HÑHÙ�R“5™1˜R›5‘=×&Ñ&Ð&ò'ð 	ð 'ñ �5˜"“¡ $¨£Ñ+©a°°«iÑ7¹!¸T¸E»(ÑB×HÑHÙ�2“™˜2›‘×$Ñ$ò%ð 	ð %ô �s˜W˜I a™K¬×)GÑ)GÈÓ)JÓKˆØ—‘ˆŒñ �‹u‘q˜“u‰}™q  R›yÑ(ˆá�2�#“™˜b "›Ñ%ˆØ—
‘
œe¢LÓ1Ò1Ð2Ð1á�2�#“™˜b %›Ñ(©4°°D«>Ñ9ˆØ—
‘
œeŸk™k¨!¨Q°Ó2Ò2Ð3Ð2á�R˜“¡$ r¨4£.Ñ0±1°e°V¸d¸UÓ3CÑCˆØ—
‘
˜1ša˜4Ñ ¤Eª,Ó$7Ò7Ð8Ð7Ø—
‘
š1˜a˜4Ñ ¤Eª,Ó$7Ò7Ð8Ð7á�2�#“™˜r 2›Ñ&ˆØ—
‘
œe¢LÓ1Ò1Ð2Ð1ð ˆF÷q8÷ 8ñ 8ús   ‹L>MÍMc                  ó¼  — t        «       5  t        dddd¬«      } ddg| _        t        d| «      \  }}}}t        d| «      \  }}t	        d	| gdz  t        j                  d«      «      }| j                  |_        t	        d
| g«      }ddg|_         |||«       |||«      z   || «      z   |||«       ||«      z  z
  }	|	j                  t        j                  ddd«      k(  sJ ‚ |||«       |||«      z   || «      z   |||«       ||«      z  z
  }
|
j                  t        j                  ddd«      k(  sJ ‚ ||«       ||«      z   |||«      z   } || «       |||«      z  }|j                  t        ddg«      k(  sJ ‚ || «       |||«      z   |||«      z  }|j                  t        j                  ddd«      k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr:   r?   r}   rA   r	  rc   rP   zi_0:2r¾   r  r   )	r.   r   r¤  r   r#   r   rF   r   r  )r:   rG   rH   rQ   rR   r™   rš   r¾   r  Úadd_1Úadd_2r  r  r  s                 r6   Útest_issue_11020_TensAdd_datar  ½  sÖ  € Ü	Ó	!ñ 4Ü! )¸QÈ3ÐTUÔVˆØ˜A�wˆŒä# L°'Ó:‰
ˆˆ1ˆa�Ü ¨Ó1‰ˆˆBô �s˜W˜I a™K¬×)GÑ)GÈÓ)JÓKˆØ—‘ˆŒä�s˜W˜IÓ&ˆØ�Q�ˆŒá�!�Q“™!˜A˜r›(Ñ"¡Q¨ s£VÑ+©a°°1«g¹¸!»©nÑ<ˆØ—
‘
œeŸk™k¨!¨Q°Ó2Ò2Ð3Ð2á�!�Q“™!˜A˜r›(Ñ"¡Q¨ s£VÑ+©a°°1«g¹¸!»©nÑ<ˆØ—
‘
œeŸk™k¨!¨Q°Ó2Ò2Ð3Ð2ñ �‹t‘a˜“d‰{™Q˜q !›WÑ$ˆÙ�1�"“™˜Q ›
Ñ"ˆØ—
‘
œe Q¨ F›mÒ+Ð,Ð+á�1�"“™˜Q ›
Ñ"¡T¨!¨Q£ZÑ/ˆØ—
‘
œeŸk™k¨!¨Q°Ó2Ò2Ð3Ñ2÷74÷ 4ñ 4ús   ‹F=GÇGc                  ó  — t        dd¬«      } t        d| «      \  }}}}}t        d| «      }t        d| «      }t        d| | g«      }t        d| | gt        j                  d	«      «      }	 |||«      }
 ||| «      } |||«       |	||«      z  } |||«       |	|| «      z  } |||«       |	| | «      z  }|
|z   }t        |
j                  «      |d
f|dfgk(  sJ ‚t        |
j                  «      g k(  sJ ‚t        |
j                  «      |d
f|dfgk(  sJ ‚t        |j                  «      g k(  sJ ‚t        |j                  «      |d
f| dfgk(  sJ ‚t        |j                  «      |d
f| dfgk(  sJ ‚t        |j                  «      |df|df|df|dfgk(  sJ ‚t        |j                  «      g k(  sJ ‚t        |j                  «      |df|df|df|dfgk(  sJ ‚t        |j                  «      |df|dfgk(  sJ ‚t        |j                  «      |df| dfgk(  sJ ‚t        |j                  «      |df|df|df| dfgk(  sJ ‚t        |j                  «      g k(  sJ ‚t        |j                  «      |df|df| df| dfgk(  sJ ‚t        |j                  «      |df|df| df| dfgk(  sJ ‚t        |j                  «      |df|df|df|dfgk(  sJ ‚t        |j                  «      |df| dfgk(  sJ ‚t        |j                  «      |df|df|df| df|df|dfgk(  sJ ‚|
j                  «       ||gk(  sJ ‚|
j                  «       ||gk(  sJ ‚|j                  «       || gk(  sJ ‚|j                  «       g k(  sJ ‚|j                  «       ||||gk(  sJ ‚|j                  «       ||||gk(  sJ ‚|j                  «       |||| gk(  sJ ‚|j                  «       ||gk(  sJ ‚|j                  «       ||| | gk(  sJ ‚|j                  «       g k(  sJ ‚y )Nr:   r;   r<   rŒ  rÎ   ÚL_1r@   rB   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#   r   rF   r   Ú_iterate_free_indicesÚ_iterate_dummy_indicesÚ_iterate_indicesr×   Úget_free_indices)r;   r™   rš   r›   rœ   r�   ÚL0ÚL1r@   rB   rñ  rò  Úe3Úe4Úe5Úe6s                   r6   Útest_index_iterationr+  Ü  s.  € Ü˜	¨cÔ2€AÜ'¨°Ó2Ñ€BˆˆB��BÜ	˜˜qÓ	!€BÜ	˜˜qÓ	!€BÜ�3˜˜A˜Ó€AÜ�3˜˜A˜¤× >Ñ >¸qÓ AÓB€Aá	
ˆ2ˆb‹€BÙ	
ˆ2ˆrˆc‹€BÙ	
ˆ2ˆb‹‘!�B�r“(Ñ	€BÙ	
ˆ2ˆb‹‘!�B˜�s“)Ñ	€BÙ	
ˆ2ˆb‹‘!�R�C˜˜“*Ñ	€BØ	ˆb‰€Bä�×(Ñ(Ó)¨r°6¨l¸RÀ¸LÐ-IÒIÐIÐIÜ�×)Ñ)Ó*¨bÒ0Ð0Ð0Ü�×#Ñ#Ó$¨"¨f¨¸¸F°|Ð(DÒDÐDÐDä�×(Ñ(Ó)¨RÒ/Ð/Ð/Ü�×)Ñ)Ó*°°F¨|¸r¸cÀ6¸]Ð.KÒKÐKÐKÜ�×#Ñ#Ó$¨"¨f¨¸¸¸V°}Ð(EÒEÐEÐEä�×(Ñ(Ó)¨r°9¨oÀÀI¸ÐQSÐU^ÐP_ÐbdÐfoÐapÐ-qÒqÐqÐqÜ�×)Ñ)Ó*¨bÒ0Ð0Ð0Ü�×#Ñ#Ó$¨"¨i¨¸2¸y¸/ÈBÐPYÈ?Ð]_ÐajÐ\kÐ(lÒlÐlÐlä�×(Ñ(Ó)¨r°9¨oÀÀI¸Ð-OÒOÐOÐOÜ�×)Ñ)Ó*°°I¨À"ÀÀiÐ@PÐ.QÒQÐQÐQÜ�×#Ñ#Ó$¨"¨i¨¸2¸y¸/ÈBÐPYÈ?Ð^`Ð]`ÐbkÐ\lÐ(mÒmÐmÐmä�×(Ñ(Ó)¨RÒ/Ð/Ð/Ü�×)Ñ)Ó*°°I¨ÀÀYÀÐSUÐRUÐW`ÐQaÐegÐdgÐirÐcsÐ.tÒtÐtÐtÜ�×#Ñ#Ó$¨"¨i¨¸2¸y¸/ÈRÈCÐQZÐK[Ð_aÐ^aÐclÐ]mÐ(nÒnÐnÐnä�×(Ñ(Ó)¨r°<Ð.@À2À|ÐBTÐWYÐ[dÐVeÐhjÐluÐgvÐ-wÒwÐwÐwÜ�×)Ñ)Ó*°°LÐ/AÀRÀCÈÐCVÐ.WÒWÐWÐWÜ�×#Ñ#Ó$¨"¨lÐ);¸bÀ,Ð=OÐRTÐVbÐQcÐgiÐfiÐkwÐexÐ{}ð  @Ið  {Jð  MOð  QZð  L[ð  )\ò  \ð  \ð  \à�>‰>Ó  B˜xÒ'Ð'Ð'Ø×ÑÓ  R¨ HÒ,Ð,Ð,Ø�>‰>Ó  R C˜yÒ(Ð(Ð(Ø×ÑÓ  BÒ&Ð&Ð&Ø�>‰>Ó  B¨¨BÐ/Ò/Ð/Ð/Ø×ÑÓ  R¨¨R°Ð$4Ò4Ð4Ð4Ø�>‰>Ó  B¨¨R¨CÐ0Ò0Ð0Ð0Ø×ÑÓ  R¨ HÒ,Ð,Ð,Ø�>‰>Ó  B¨¨¨b¨SÐ1Ò1Ð1Ð1Ø×ÑÓ  BÒ&Ð&Ñ&r8   c                  ó,  — t        d«      } t        d| «      \  }}}t        d| «      }t        d| g«      \  }}}}t	        d«      }	t        d«      }
t        t         ||«       ||«      «      t        «      sJ ‚t        t         ||«       ||«      z   «      t        «      sJ ‚ ||«       || «       || «      z   z  }|j                   ||«       || «       || «      z   fk(  sJ ‚| ||«       || «      z   ||«       || «      z  z   k7  sJ ‚|j                  «        ||«       || «      z   ||«       || «      z  z   k(  sJ ‚t        |«      dk(  sJ ‚ ||«       ||«      z   ||«       ||«      z  z   }t        |«      dk(  sJ ‚ || «       ||«       ||«      z   ||«       ||«      z   ||«      z   || «      z  z   z  }| || «       ||«      z   ||«      z   || «       ||«      z   ||«      z   ||«      z   || «      z  z   k7  sJ ‚|j                  «        || «       ||«      z   ||«      z   || «       ||«      z   ||«      z   ||«      z   || «      z  z   k(  sJ ‚t        |«      d	k(  sJ ‚t        |j                  «       «      d
k(  sJ ‚ || «      d ||«      z   ||«      z   ||«       ||«      z  z   z  }|j                  «       d || «      z   ||«      z   ||«      z   || «       ||«      z   ||«      z  z   k(  sJ ‚d ||«      z   || «      z  }|j                  dk(  sJ ‚ ||«       ||«       ||«      z   ||«       ||«       ||«      z   z  z   z  }t        |«      dk(  sJ ‚t        |j                  «       «      dk(  sJ ‚t        t        d«      t        «      sJ ‚t        d«      j                  «       }|dk(  sJ ‚t        |t         «      sJ ‚ ||«       || «      z   ||«       || «      z  z   } || «      |z  } ||«      |z  }|j                  «        ||«       || «      z   ||«      z   || «      z   ||«       || «      z   ||«      z   || «      z  z   k(  sJ ‚ ||«       || «       || «       ||«       || «      z   ||«       || «      z  z   z  z   z  }|j                  «        ||«       || «      z   ||«       || «      z   ||«      z   || «      z  z    ||«       || «      z   ||«      z   || «      z  z   k(  sJ ‚ || «       ||«       || «      z   ||«       || «      z  z   z  }|j                  «        || «       ||«      z   || «      z   || «       ||«      z   || «      z  z   k(  sJ ‚	 d |	|
«      z    ||«      z  }|j                  «       }t        |t        «      sJ ‚|j                  d ||«      z   |	|
«       ||«      z  fk(  sJ ‚d |	|
«      z    ||«      z   ||«      z   }|j                  «       }t        |t        «      sJ ‚|j                  d ||«      z   |	|
«       ||«      z   ||«      fk(  sJ ‚y )Nr;   zi j krÎ   úA B C Dri   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)rA   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)r`   )r   r   r   r    r   r   r2   r   r   r   rü   rE   r$   r  r   rý   r   )r;   r}   rÿ   r   rÎ   r@   rB   rC   r•   ri   rº   rµ   ÚtmÚp1Úp2Úp3Úexpr_expands                    r6   Útest_tensor_expandr3    s‚  € Ü˜Ó€Aä˜W aÓ(�G€A€qˆ!Ü
�e˜QÓ
€Cä˜i¨!¨Ó-�J€A€qˆ!ˆQä�‹€AÜˆs‹€Aä”c™!˜A›$¡ !£“o¤wÔ/Ð/Ð/Ü”f™Q˜q›T¡! A£$™YÓ'¬Ô1Ð1Ð1áˆQ‹4‘�A�2“‘q˜!˜“u‘Ñ€DØ�9‰9™˜3›¡ C 4£©1¨c¨T«7Ñ!2Ð3Ò3Ð3Ð3Ø‘1�Q“4™˜1˜"›‘:¡ !£¡Q¨ r£U¡
Ñ*Ò*Ð*Ð*Ø�;‰;‹=™A˜a›D¡ A 2£™J©¨1«©a°°«e©Ñ3Ò3Ð3Ð3Üˆt‹9Ð4Ò4Ð4Ð4áˆQ‹4‘�!“‰9‘q˜“t™A˜a›D‘yÑ €DÜˆt‹9Ð/Ò/Ð/Ð/áˆaˆR‹5‘!�A“$‘q˜“t‘)™a ›d¡1 Q£4™i©¨!«™n©Q°¨r«UÑ2Ñ2Ñ3€DØ‘1�a�R“5™˜1›‘:™a ›d‘?¡Q¨ r£U©1¨Q«4¡Z±°!³¡_±Q°q³TÑ%9¹!¸Q¸B»%Ñ%?Ñ?Ò?Ð?Ð?Ø�;‰;‹=™A˜q˜b›E¡! A£$™J¡q¨£t™O©a°°«e±A°a³D©j¹¸1»©o¹aÀ»dÑ.BÁ1ÀaÀRÃ5Ñ.HÑHÒHÐHÐHÜˆt‹9ÐLÒLÐLÐLÜˆt�}‰}‹ÓÐ#]Ò]Ð]Ð]áˆaˆR‹5�!‘A�a“D‘&™˜1›‘+¡ !£¡Q q£T¡	Ñ)Ñ*€DØ�;‰;‹=˜A™a  ›e™G¡A a£D™L©¨1«Ñ-±°1°"³±a¸³d±
¹1¸Q»4±Ñ?Ò?Ð?Ð?à‰Qˆq‹T‰6‘!�Q�B“%‰<€DØ�:‰:˜Š?Ðˆ?áˆQ‹4‘�1“‘a˜“d‘™Q˜q›T¡1 Q£4©!¨A«$¡;Ñ/Ñ/Ñ0€DÜˆt‹9Ð?Ò?Ð?Ð?Üˆt�{‰{‹}ÓÐ!SÒSÐSÐSä”g˜a“j¤'Ô*Ð*Ð*Ü	�‹�‰Ó	€BØ�Š7€Nˆ7Ü�bœ'Ô"Ð"Ð"á	
ˆ1‹‰a��‹e‰‘a˜“d™1˜a˜R›5‘jÑ	 €BÙ	
ˆAˆ2‹ˆr‰€BÙ	
ˆ1‹ˆb‰€BØ�9‰9‹;™!˜A›$™q ! ›u™*¡Q q£T™/©!¨Q¨B«%Ñ/±!°A³$±q¸!¸³u±*¹Q¸q»T±/Á!ÀQÀBÃ%Ñ2GÑGÒGÐGÐGáˆQ‹4‘�A�2“™˜A˜2›¡ !£¡Q¨ r£U¡
©Q¨q«T±!°Q°B³%©ZÑ 7Ñ8Ñ8Ñ9€DØ�;‰;‹=™A˜a›D¡ A 2£™J©¨1«©a°°«e©±A°a³D©¹¸A¸2»Ñ)>Ñ>ÁÀ1ÃÁaÈÈÃeÁÉAÈaËDÁÑQRÐTUÐSUÓQVÑAVÑVÒVÐVÐVáˆaˆR‹5‘!�A“$‘q˜!˜“u‘*™q ›t¡A q b£E™zÑ)Ñ*€DØ�;‰;‹=™A˜q˜b›E¡! A£$™J¡q¨!¨£uÑ,©q°!°«u±Q°q³T©z¹!¸Q¸B»%Ñ/?Ñ?Ò?Ð?Ð?ðð
 ‘�!“‰H‘a˜“d‰?€DØ—+‘+“-€KÜ�k¤7Ô+Ð+Ð+Ø×Ñ ¡! A£$¡©¨!«©Q¨q«T©	Ð2Ò2Ð2Ð2à‘�!“‰H‘a˜“d‰?™Q˜q›TÑ!€DØ—+‘+“-€KÜ�k¤7Ô+Ð+Ð+Ø×Ñ ¡! A£$¡©¨!«©Q¨q«T©	±1°Q³4Ð8Ò8Ð8Ñ8r8   c                  ó>  ‡‡‡— t        d«      } t        d| «      \  }}}}t        d| g«      Št        d«      \  ŠŠ ‰|«       ‰t	        d«      «      k(  sJ ‚ ‰| «       ‰t	        d«       «      k(  sJ ‚t        t        ˆˆˆfd„«       t        t        ˆˆfd„«       y )Nr;   rø  r@   zx yr™   c                  ó   •—  ‰ ‰‰z   «      S r1   rÒ   )r@   rº   Úys   €€€r6   rÐ   z6test_tensor_alternative_construction.<locals>.<lambda>^  s   ø€ ™a  !¡›f€ r8   c                  ó   •—  ‰ d‰z  «      S rì   rÒ   )r@   rº   s   €€r6   rÐ   z6test_tensor_alternative_construction.<locals>.<lambda>_  s   ø€ ™q  1¡›v€ r8   )r   r   r#   r   r   r,   Ú	TypeErrorrØ   )r;   r™   rš   r›   rœ   r@   rº   r6  s        @@@r6   Ú$test_tensor_alternative_constructionr9  V  s‰   ú€ Ü˜Ó€AÜ# F¨AÓ.�N€BˆˆB�Ü�3˜˜Ó€AÜ�5‹>�D€A€qáˆR‹5‘A”f˜T“l“OÒ#Ð#Ð#ÙˆbˆS‹6‘Qœ˜t›�}Ó%Ò%Ð%Ð%Ü
Œ9•nÔ%Ü
Œ:”~Õ&r8   c                  ó  ‡‡‡‡‡‡— t        d«      } t        dd¬«      }t        d| «      \  ŠŠ}}t        d| g«      \  }}}}t        d| | g«      }t        d| gd	z  «      }	 |‰‰«      Š |‰‰ «      d
dgdd	gg| t	        d
d«      iŠ‰j                  ‰«      ‰‰gt        d
dgddgg«      fk(  sJ ‚‰j                  ‰«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰‰g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰‰ g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰t        d«      t        d«       g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰ ‰g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰ ‰ g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰‰g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰‰ g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰ ‰g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰ ‰ g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰«      t        d
dgddgg«      k(  sJ ‚ |‰‰«      Š |‰‰«      d
dgdd	gg| t	        d
d«      iŠ‰j                  ‰«      ‰‰gt        d
dgdd	gg«      fk(  sJ ‚‰j                  ‰«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰‰g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰‰ g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰ ‰g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰ ‰ g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰‰g«      t        d
dgdd	gg«      k(  sJ ‚‰j                  ‰‰‰ g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰ ‰g«      t        d
dgddgg«      k(  sJ ‚‰j                  ‰‰ ‰ g«      t        d
dgdd	gg«      k(  sJ ‚ |‰|«      Š |‰‰«      d
dgdd	gg| t	        d
d«      iŠ‰j                  ‰«      ‰|gt        d
dgdd	gg«      fk(  sJ ‚ |‰«       |‰ «      z  Š |‰«      d
dg| t	        d
d«      iŠ‰j                  ‰«      g dfk(  sJ ‚‰j                  ‰g «      dk(  sJ ‚ |	‰‰‰ |«       |‰ «      z   || «      z  Š |‰«      d
dg |	‰‰||«      t        d
gdz  «      j                  dddd«      | t	        d
d«      iŠ‰j                  ‰«      sJ ‚ |‰|«      Š |‰‰«      d
dgdd	gg| t	        d
d«      iŠt        t        ˆˆfd„«        |‰«      Š |‰«      d
dgiŠt        t        ˆˆfd„«        |‰«      Š |‰«      d
dgdd	ggiŠt        t        ˆˆfd„«        ||«       |‰‰«      z   ||«       |‰‰«      z  z   Š ||«      d
g ||«      d
g |‰‰«      d
dgdd	gg| t	        d
d
«      iŠ‰j                  ‰«      |‰‰gt        dd	gddggg«      fk(  sJ ‚‰j                  ‰|‰‰g«      t        dd	gddggg«      k(  sJ ‚‰j                  ‰|‰‰g«      t        ddgd	dggg«      k(  sJ ‚ ||«       || «      z  dz   Š ||«      ddg| t	        d
d
«      iŠ‰j                  ‰g «      dk(  sJ ‚ |‰‰«       |‰‰«      z   Š |‰‰«      d
dgdd	ggiŠ‰j                  ‰«      ‰‰gt        ddgddgg«      fk(  sJ ‚‰j                  ‰‰‰g«      t        ddgddgg«      k(  sJ ‚‰j                  ‰‰‰g«      t        ddgddgg«      k(  sJ ‚ |‰‰«       |‰‰«      z
  Š |‰‰«      d
dgdd	ggiŠ‰j                  ‰‰‰g«      t        ddgd
dgg«      k(  sJ ‚‰j                  ‰‰‰g«      t        dd
gddgg«      k(  sJ ‚ |	‰‰|| «      Š |	‰‰|| «      d
dgdd	ggiŠ‰j                  ‰«      ‰‰gt        d
dgdd	gg«      fk(  sJ ‚ |‰‰ «      Š |‰‰ «      diŠ‰j                  ‰«      g dfk(  sJ ‚ |‰‰ «      Š |‰ ‰ «      t        g d¢g d¢g d¢g d ¢g«      | t        g d¢g d¢g d¢g d ¢g«      iŠ‰j                  ‰«      g d	fk(  sJ ‚ |‰«       |‰«      z  Š |‰«      d
dgiŠt        t        ˆˆˆfd!„«        |‰«      Š |‰«      d
dggiŠt        t        ˆˆˆfd"„«       t        d#|«      \  ŠŠ}
t        d$|g«      } |‰«       |‰ «      z  Š |‰«      d
ggiŠt        t        ˆˆˆˆfd%„«       y )&Nr;   ÚL2rA   r²   zi j k lr-  ÚHr´   rƒ   r?   r`   rc   ra   rÜ   r}   rÿ   rg   é   c                  ó&   •— ‰ j                  ‰«      S r1   ©Ú_extract_data©rµ   Úrepls   €€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>™  ó   ø€ ˜t×1Ñ1°$Ó7€ r8   c                  ó&   •— ‰ j                  ‰«      S r1   r?  rA  s   €€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>�  rC  r8   c                  ó&   •— ‰ j                  ‰«      S r1   r?  rA  s   €€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>¡  rC  r8   r8  r“  éd   éq   r‘  r   é*   rˆ  r‰  rŠ  r‹  c                  ó*   •— ‰ j                  ‰‰g«      S r1   ©Úreplace_with_arrays)rµ   rÿ   rB  s   €€€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>Î  ó   ø€ ˜t×7Ñ7¸¸q¸cÓB€ r8   c                  ó*   •— ‰ j                  ‰‰g«      S r1   rJ  )rµ   r}   rB  s   €€€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>Ó  rL  r8   zu1:4ÚUc                  ó.   •— ‰ j                  ‰‰‰ g«      S r1   rJ  )rµ   rB  Úu1Úu2s   €€€€r6   rÐ   z)test_tensor_replacement.<locals>.<lambda>Ú  s   ø€ ˜t×7Ñ7¸¸rÀBÀ3¸iÓH€ r8   )r   r   r    r#   r/   r@  r   rK  r   Úreshaper,   rØ   )r;   r;  r   r(  r@   rB   rC   r•   r<  r´   Úu3rN  rµ   r}   rÿ   rB  rP  rQ  s               @@@@@@r6   Útest_tensor_replacementrT  b  sn  ý€ Ü˜Ó€AÜ	˜ 1Ô	%€BÜ 	¨1Ó-�J€A€qˆ!ˆQÜ˜i¨!¨Ó-�J€A€qˆ!ˆQÜ�3˜˜A˜Ó€AÜ�3˜˜˜A™Ó€AáˆQ�‹7€DÙˆa��‹G�q˜�e˜Q˜q˜E�] A¤t¨A¨r£{Ð3€DØ×Ñ˜dÓ#¨¨A¨´¸¸2°wÀÀBÀÐ6HÓ0IÐ'JÒJÐJÐJà×#Ñ# DÓ)¬U°Q¸°G¸aÀ¸WÐ3EÓ-FÒFÐFÐFØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸GÀaÈÀWÐ;MÓ5NÒNÐNÐNØ×#Ñ# D¨1¨q¨b¨'Ó2´e¸aÀ¸VÀaÈÀVÐ<LÓ6MÒMÐMÐMØ×#Ñ# D¬6°#«;¼À»¸Ð*EÓFÌ%ÐRSÐUVÐQWÐZ[Ð]^ÐY_ÐP`ÓJaÒaÐaÐaØ×#Ñ# D¨A¨2¨q¨'Ó2´e¸aÀ¸WÀrÈ1ÀgÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2°¨r¨(Ó3´u¸qÀ!¸fÀrÈ2ÀhÐ=OÓ7PÒPÐPÐPØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀRÈÀHÐ;MÓ5NÒNÐNÐNØ×#Ñ# D¨1¨q¨b¨'Ó2´e¸aÀ¸WÀrÈ1ÀgÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2¨q¨'Ó2´e¸aÀ¸VÀaÈÀVÐ<LÓ6MÒMÐMÐMØ×#Ñ# D¨A¨2°¨r¨(Ó3´u¸qÀ"¸gÈÈ2ÀwÐ=OÓ7PÒPÐPÐPà×#Ñ# DÓ)¬U°Q¸°G¸aÀ¸WÐ3EÓ-FÒFÐFÐFáˆQˆq‹6€DÙˆa�‹F�a˜�U˜A˜a˜5�M 1¤d¨1¨b£kÐ2€DØ×Ñ˜dÓ#¨¨A¨´¸¸1°vÀÀ1¸vÐ6FÓ0GÐ'HÒHÐHÐHà×#Ñ# DÓ)¬U°Q¸°F¸QÀ¸FÐ3CÓ-DÒDÐDÐDØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀQÈÀFÐ;KÓ5LÒLÐLÐLØ×#Ñ# D¨1¨q¨b¨'Ó2´e¸aÀ¸WÀqÈ"ÀgÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2¨q¨'Ó2´e¸aÀ¸VÀbÈ"ÀXÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2°¨r¨(Ó3´u¸qÀ"¸gÈÈAÀwÐ=OÓ7PÒPÐPÐPØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀQÈÀFÐ;KÓ5LÒLÐLÐLØ×#Ñ# D¨1¨q¨b¨'Ó2´e¸aÀ¸WÀqÈ"ÀgÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2¨q¨'Ó2´e¸aÀ¸VÀbÈ"ÀXÐ<NÓ6OÒOÐOÐOØ×#Ñ# D¨A¨2°¨r¨(Ó3´u¸qÀ"¸gÈÈAÀwÐ=OÓ7PÒPÐPÐPñ ˆQˆq‹6€DÙˆa�‹F�a˜�U˜A˜a˜5�M 1¤d¨1¨b£kÐ2€DØ×Ñ˜dÓ#¨¨A¨´¸¸1°vÀÀ1¸vÐ6FÓ0GÐ'HÒHÐHÐHáˆQ‹4‘�1�"“‰:€DÙˆa‹D�1�Q�%˜œD  B›KÐ(€DØ×Ñ˜dÓ#¨¨B xÒ/Ð/Ð/Ø×#Ñ# D¨"Ó-°Ò3Ð3Ð3áˆQ��A�2�q‹>™!˜Q˜B›%Ñ¡ 1 "£Ñ%€DÙˆa‹D�1�a�&™!˜A˜a  !›*¤e¨Q¨C°©H£o×&=Ñ&=¸aÀÀ!ÀAÓ&FÈÌ4ÐPQÐSUË;ÐW€DØ×Ñ˜dÔ#Ð#Ð#áˆQ�‹7€DÙˆa�‹F�a˜�U˜A˜a˜5�M 1¤d¨1¨b£kÐ2€DÜ
Œ:Ô7Ô8áˆQ‹4€DÙˆa‹D�1�a�&ˆ>€DÜ
Œ:Ô7Ô8áˆQ‹4€DÙˆa‹D�A�q�6˜A˜q˜6Ð"Ð#€DÜ
Œ:Ô7Ô8ñ ˆQ‹4‘�!�Q“‰<™!˜A›$™q  A›w™,Ñ&€DÙˆa‹D�1�#‘q˜“t˜a˜S¡! A q£'¨Q°¨F°A°a°5¨>¸1¼TÀ!ÀA»YÐG€DØ×Ñ˜dÓ#¨¨A¨q¨	´5¸A¸q¸6ÀAÀqÀ6Ð:JÐ9KÓ3LÐ'MÒMÐMÐMØ×#Ñ# D¨1¨a°¨)Ó4¼ÀÀAÀÈÈAÈÐ?OÐ>PÓ8QÒQÐQÐQØ×#Ñ# D¨1¨a°¨)Ó4¼ÀÀAÀÈÈAÈÐ?OÐ>PÓ8QÒQÐQÐQáˆQ‹4‘�1�"“‰:˜Ñ€DÙˆa‹D�1�a�&˜!œT ! Q›ZÐ(€DØ×#Ñ# D¨"Ó-°Ò4Ð4Ð4ñ ˆQ�‹7‘Q�q˜!“WÑ€DÙˆa�‹G�q˜!�f˜q !˜fÐ%Ð&€DØ×Ñ˜dÓ#¨¨A¨´¸¸1°vÀÀ1¸vÐ6FÓ0GÐ'HÒHÐHÐHØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀQÈÀFÐ;KÓ5LÒLÐLÐLØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀQÈÀFÐ;KÓ5LÒLÐLÐLñ ˆQ�‹7‘Q�q˜!“WÑ€DÙˆa�‹G�q˜!�f˜q !˜fÐ%Ð&€DØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸GÀaÈÀVÐ;LÓ5MÒMÐMÐMØ×#Ñ# D¨1¨a¨&Ó1´U¸QÀ¸FÀRÈÀGÐ;LÓ5MÒMÐMÐMñ ˆQ��1�q�b‹>€DÙˆa��A˜�r‹N˜a ˜V a¨ VÐ,Ð-€DØ×Ñ˜dÓ#¨¨A¨´¸¸1°vÀÀ1¸vÐ6FÓ0GÐ'HÒHÐHÐHáˆQ��‹8€DÙˆa�!�‹H�bˆ>€DØ×Ñ˜dÓ#¨¨B xÒ/Ð/Ð/áˆQ��‹8€Dá	ˆ1ˆ"ˆqˆb‹	”5š,ª²}ÂmÐTÓUØ	Œ5’,¢ª}ºmÐLÓMð€Dð ×Ñ˜dÓ#¨¨A wÒ.Ð.Ð.ñ ˆQ‹4‘�!“‰9€DÙˆa‹D�1�a�&ˆ>€DÜ
Œ:ÕBÔCñ ˆQ‹4€DÙˆa‹D�A�q�6�(Ð€DÜ
Œ:ÕBÔCô   ¨Ó+�J€BˆˆBÜ�3˜˜Ó€AÙˆR‹5‘�B�3“‰<€DÙˆb‹E�Q�C�5ˆ>€DÜ
Œ:ÖHÕIr8   c                  ó  — t        dd¬«      } t        d| gdz  «      }t        d| g«      }t        d«      \  }}}}t        d«      \  }} |||||«      }	|	j                  t        «      t	        t        d«      ||||«      k(  sJ ‚ ||| ||«      }
|
j                  t        «      t        t	        t        d«      ||||«      |dd	f«      k(  sJ ‚|
 ||||| «      z   }|j                  t        «      t        t	        t        d«      ||||«      |dd	f«      t        t	        t        d«      ||||«      |dd	f«      z   k(  sJ ‚ || «      |	z  }|j                  t        «      t        t	        t        d«      |«      t	        t        d«      ||||«      z  |dd	f«      k(  sJ ‚ || «      |
z  }|j                  t        «      t        t	        t        d«      |«      t	        t        d«      ||||«      z  |dd	f|dd	f«      k(  sJ ‚y )
Nr;   rƒ   r²   r@   rB   rø  zL_0:2r   r`   )r   r#   r   Úrewriter   r   r   )r;   r@   rB   r™   rš   r›   rœ   rÎ   r   rn   ro   rp   Úb1Úb2s                 r6   Útest_rewrite_tensor_to_IndexedrY  Ý  s%  € Ü˜ Ô#€AÜ�3˜˜˜A™Ó€AÜ�3˜˜Ó€Aä˜V“_�N€BˆˆB�Ü�wÓ�H€Cˆá	
ˆ2ˆr�2�rÓ	€BØ�:‰:”gÓ¤'¬&°«+°r¸2¸rÀ2Ó"FÒFÐFÐFá	
ˆ2�ˆs�B˜Ó	€BØ�:‰:”gÓ¤#¤g¬f°S«k¸3ÀÀRÈÓ&LÈsÐTUÐWXÈkÓ"ZÒZÐZÐZà	‰a��B˜˜R˜CÓ Ñ	 €BØ�:‰:”gÓÜŒG”F˜3“K  c¨2¨rÓ2°S¸!¸Q°KÓ@ÜŒG”F˜3“K  R¨¨cÓ2°S¸!¸Q°KÓ@ñ	AòAð Að Añ 
ˆBˆ3‹�‰€BØ�:‰:”gÓ¤#¤g¬f°S«k¸3Ó&?ÄÌÈsËÐUXÐZ\Ð^`ÐbdÓ@eÑ&eÐhkÐmnÐpqÐgrÓ"sÒsÐsÐsá	
ˆBˆ3‹�‰€BØ�:‰:”gÓ¤#¤g¬f°S«k¸3Ó&?ÄÌÈsËÐUXÐZ]Ð_aÐcfÓ@gÑ&gÐjmÐopÐrsÐitÐwzÐ|}ð  @Að  wBó  #Cò  Cð  Cñ  Cr8   c            
      ó`  — t        dd¬«      } t        d| «      \  }}}t        dt        | d¬«      \  }}}t        d| «      }| j                  }| j
                  }	t        d	| g«      }
t        d
| g«      }t        d| | g«      }t        dd¬«      }t        d«      }|j                  |«      ||ik(  sJ ‚|j                  | «      || ik(  sJ ‚|j                  | «      dk(  sJ ‚|j                  |«      ||ik(  sJ ‚ |	|| |«      j                   |	|||«      «      dk(  sJ ‚ |	|| |«      j                   |	|||«      «      ||| |ik(  sJ ‚ |	|| |«      j                   |	|||«      d«      dk(  sJ ‚ |«       j                   |
|«       ||«      z  «       |«        |
|«       ||«      z  ik(  sJ ‚ ||«      j                   |
|«      «      || ||«      j                  t         |
|«      «      ik(  sJ ‚ |||«      j                   |
|«       ||«      z  «      || |||«      j                  t         |
|«       ||«      z  «      ik(  sJ ‚ |||«      j                   |
|«       ||«      z  «       |||«      j                  t         |
|«       ||«      z  «      ik(  sJ ‚ |||«      j                   |||«      «       |||«      j                  t         |||«      «      ik(  sJ ‚ |||«      j                   |||«      «      dk(  sJ ‚ |
|«       |
|«      z  j                   |||«      d«      dk(  sJ ‚ |||«      j                   |||«      «      i k(  sJ ‚ |	|||«      j                   |	|||«      «      �J ‚ |	|||«      j                   |	|||«      «      i k(  sJ ‚y)zY
    Test match and replace with the pattern being a WildTensor or a WildTensorIndex
    r¸   r`   r²   r=  za b cT©r¹   rÖ   Úignore_updownr¾   r´   r�   r@   ÚW©Úunordered_indicesrN  Nr?   )r   r   r   r)   r>  r?  r#   r*   ÚmatchesÚreplaceÚheadr+   )r¸   r³   r  r  rG   rH   rQ   r¾   r>  r@  r´   r�   r@   r]  rN  s                  r6   Útest_tensor_matchingrc  ö  sž  € ô 
˜ 1Ô	%€BÜ˜W bÓ)�G€A€qˆ!Ü�G¤?ÀbÐX\Ô]�E€A€aˆÜ˜˜RÓ €AØ�H‰H€EØ
�*‰*€CÜ�3˜˜Ó€AÜ�3˜˜Ó€AÜ�3˜˜R˜Ó!€AÜ�s¨dÔ3€AÜ�sÓ€Aà�9‰9�Q‹<˜A˜a˜5Ò Ð Ð Ø�9‰9�a�R‹=˜Q ˜r˜FÒ"Ð"Ð"Ø�9‰9�a�R‹=˜DÒ Ð Ð Ø�9‰9�Q‹<˜A˜a˜5Ò Ð Ð Ùˆq�!��A‹;×Ñ¡ A a¨£
Ó,°Ò4Ð4Ð4Ùˆq�!��A‹;×Ñ¡ A a¨£
Ó,°°A¸°r¸1°Ò=Ð=Ð=Ùˆq�!��A‹;×Ñ™s 1 Q q›z¨1Ó-°Ò2Ð2Ð2Ù‹3�;‰;™˜!›™Q˜q›T™	Ó#©«©Q¨q«T±!°A³$©YÐ'7Ò7Ð7Ð7ÙˆQ‹4�<‰<™˜1›Ó A a©¨1«¯©´MÁ!ÀAÃ$Ó4GÐ#HÒHÐHÐHÙˆQˆq‹6�>‰>™1˜Q›4¡ !£™9Ó&¨1¨Q±°!°A³·±¼]É1ÈQË4ÑPQÐRSÓPTÉ9Ó=UÐ*VÒVÐVÐVÙˆQˆq‹6�>‰>™1˜Q›4¡ !£™9Ó&©1¨Q¨q«6¯;©;¼ÁaÈÃdÉ1ÈQË4ÁiÓ8PÐ*QÒQÐQÐQÙˆQˆq‹6�>‰>™1˜Q˜q›6Ó#©¨!¨A«¯©´]Á1ÀQÈÃ7Ó5KÐ'LÒLÐLÐLÙˆQˆq‹6�>‰>™1˜Q˜q›6Ó# tÒ+Ð+Ð+Ùˆq‹T‘!�A“$‰Y× Ñ ¡! A a£&¨!Ó,°Ò1Ð1Ð1ñ ��1‹:×Ñ™e A a›jÓ)¨RÒ/Ð/Ð/Ùˆq��1‹:×Ñ™c ! A a›jÓ)Ð1Ð1Ð1Ùˆq��1‹:×Ñ™c ! A a›jÓ)¨RÒ/Ð/Ñ/r8   c                  óÖ  — t        dd¬«      } t        d| «      \  }}t        d| g«      }t        d| g«      }t        dd¬	«      } ||«       ||«      z   ||«       ||«      z  z   j	                   ||«       ||«      z   ||«       ||«      z  z   «      i k(  sJ ‚ ||«       ||«      z   ||«       ||«      z  z   j	                   ||«       ||«      z   ||«       ||«      z  z    ||«       ||«      z  z    ||«       ||«      z  z   «      �J ‚ ||«       ||«      z   ||«       ||«      z  z    ||«       ||«      z  z    ||«       ||«      z  z   j                   |||«       ||«       ||«      z  z    ||«       ||«      z  z    |||«      d ||«      z   ||«      z  z   «      j                  «        ||«       ||«      z  d ||«      z   ||«      z  z   k(  sJ ‚y
)zA
    Test match and replace with the pattern being a TensAdd
    r¸   r`   r²   rW  r´   r�   r]  Tr^  Nrƒ   )r   r   r#   r*   r`  ra  rý   )r¸   r³   r  r´   r�   r]  s         r6   Útest_TensAdd_matchingre    sæ  € ô 
˜ 1Ô	%€BÜ˜% Ó$�D€A€qÜ�3˜˜Ó€AÜ�3˜˜Ó€AÜ�s¨dÔ3€Aáˆq‹T‘!�A“$‰Y™˜1›™a ›d™Ñ"×,Ñ,©a°«d±1°Q³4©i¹!¸A»$¹qÀ»t¹)Ñ.CÓEÈÒKÐKÐKÙˆq‹T‘!�A“$‰Y™˜1›™a ›d™Ñ"×,Ñ,©a°«d±1°Q³4©i¹!¸A»$¹qÀ»t¹)Ñ.CÁaÈÃdÉ1ÈQË4ÁiÑ.OÑRSÐTUÓRVÑWXÐYZÓW[ÑR[Ñ.[Ó]ÐeÐeÐeÙˆq‹T‘!�A“$‰Y™˜1›™a ›d™Ñ"¡Q q£T©!¨A«$¡YÑ.±°1³±a¸³d±Ñ:×DÑDÙ	ˆ!ˆA‹‘�1“‘a˜“d‘Ñ™Q˜q›T¡! A£$™YÑ&Ù	ˆ!ˆA‹�‘1�Q“4‘™˜!›‘Ñó
÷ ‰$‹&‘A�a“D™˜1›‘I ¡! A£$¡¡q¨£t¡Ñ+ò,ð ,ñ ,r8   c            	      óB  — t        dd¬«      } t        d| «      \  }}}}}t        d«      }t        dt        | d¬«      \  }}}	}
}}| j
                  }| j                  }t        d	| g«      }t        d
| g«      }t        dd¬«      }t        d«      }t        d	«      }| ||«      z  j                   ||«      «      |dik(  sJ ‚| ||||«      z  j                   ||||«      «      |dik(  sJ ‚ ||«       || «      z  j                   ||«       || «      z  d«      dk(  sJ ‚ ||«       ||«      z   || «      z  j                   |||«       || «      z  d«      dk(  sJ ‚ ||«       || «      z  j                   || «       ||«      z  d«      dk(  sJ ‚ ||«       ||«      z   || «      z  j                   ||«       ||«      z   || «      z  d«      dk(  sJ ‚ ||«       ||«      z  j                   |«        ||«      z   ||«      z   |«        ||«      z   ||«      z  «      j                  «        ||«       ||«      z  k(  sJ ‚ ||||«       || | | «      z  j                   ||||«       || |	|
«      z   |||	«       |||
«      z   |||
«       |||	«      z  z
  «      j                  «       j                  «        ||| «       ||| «      z   ||| «       ||| «      z  z
  k(  sJ ‚ ||||«       || | | «      z  j                   ||	||«       ||	 |
|«      z   |||
«       |||«      z   |||«       |||
«      z  z
  «      j                  |«      j                  «       dk(  sJ ‚ || «       ||«      z   || «      z  j                  | |«       z   ||«      z   || «      z  | |«       z  «      j                  «        || «      k(  sJ ‚|dz   ||«      z   || «      z  j                  | |«       z   ||«      z   || «      z  | |«       z  |dz  z  «      j                  «       |dz  k(  sJ ‚ ||«       ||«      z  j                   ||«       ||«      z   ||«       ||«      z  «       ||«       ||«      z  k(  sJ ‚ ||«       ||«      z   ||«      z  j                   |||«       ||«      z   |||«       |||«      z   || «      z  «       ||«       ||«      z   ||«      z   ||«      z   || «      z  k(  sJ ‚t        d| «      \  }}}} || | «       ||«      z   ||«      z   || «      z  } |«        ||«      z   || «      z  j                  |«      }||j                  «       vsJ ‚y)zA
    Test match and replace with the pattern being a TensMul
    r¸   r`   r²   z	p q r s tÚwiza b c d e fTr[  r´   r�   r]  r^  rN  r?   rc   r8  rƒ   rA   zR_0 R_1 R_2 R_3N)r   r   r   r   r)   r>  r?  r#   r*   r   r`  ra  rý   r$   rT  Úvalues)r¸   r³   r  r  rE  rK   rg  rG   rH   rQ   rR   ry   rk   r>  r@  r´   r�   r]  rN  r   ÚD0ÚD1ÚD2ÚD3rµ   r  s                             r6   Útest_TensMul_matchingrm  +  sÉ  € ô 
˜ 1Ô	%€BÜ" ;°Ó3�M€A€qˆ!ˆQ�Ü	ˆd‹€BÜ˜-¬ÐRTÐdhÔi�K€A€aˆˆ!ˆAˆaØ�H‰H€EØ
�*‰*€CÜ�3˜˜Ó€AÜ�3˜˜Ó€AÜ�s¨dÔ3€AÜ�sÓ€AÜˆs‹€Aà‘�!“‰W×Ñ¡ !£Ó&¨2¨q¨'Ò1Ð1Ð1Ø‘#�a˜˜!“*‰_×&Ñ&¡s¨1¨Q¨q£zÓ2°r¸"°gÒ=Ð=Ð=Ùˆq‹T‘!�Q�B“%‰Z×!Ñ!¡1 Q£4©¨1¨"«¡:¨qÓ1°QÒ6Ð6Ð6Ùˆq‹T‘!�A“$‰Y‘q˜!˜“u‰_×&Ñ&©¨!¨A«©q°!°«u©°aÓ8¸AÒ=Ð=Ð=Ùˆq‹T‘!�Q�B“%‰Z×!Ñ!¡1 a R£5©¨1«¡:¨qÓ2°aÒ7Ð7Ð7Ùˆq‹T‘!�A“$‰Y‘q˜!˜“u‰_×&Ñ&©¨!«©Q¨q«T©	±!°Q°B³%©¸Ó;¸qÒ@Ð@Ð@á	
ˆ1‹‰a�‹d‰×Ñ™A›C¡ !£™H¡Q q£T™M©1«3©q°«t©8±A°a³D©=Ó9×>Ñ>Ó@ÙˆQ‹4‘�!“‰9ò	ð
ð	ñ ˆa��!‹*‘S˜!˜˜Q˜B ˜r“]Ñ
"×,Ñ,Ù��!�A‹J‘s˜A˜2˜a “{Ñ"Ù�!�A‹J‘u˜Q˜q“zÑ!¡E¨!¨A£J©u°Q°q«zÑ$9Ñ9ó	÷ ‰d‹f—X‘X“ZÙ��A�2‹;‘u˜Q ˜r“{Ñ"¡U¨1¨a¨R£[±°q¸!¸³Ñ%<Ñ<ò		=ð
ð	=ñ ˆa��!‹*‘S˜!˜˜Q˜B ˜r“]Ñ
"×,Ñ,Ù��!�A‹J‘s˜A˜2˜a “{Ñ"Ù�!�A‹J‘u˜Q˜q“zÑ!¡E¨!¨A£J©u°Q°q«zÑ$9Ñ9ó	÷ ‰n˜UÓ#§D¡D£FØò		ð
ð	ñ �ˆr‹U‘1�Q“4‰Z™˜1˜"›Ñ×'Ñ'¨©A«C©±°!³©±Q¸°r³UÑ):¸B¹q»s¹FÓD×IÑIÓKÉqÐRSÐQSËuÒTÐTÐTØ�‰T‘!�A“$‰Y‘q˜!˜“u‰_×&Ñ&¨©1«3©©q°«t©±A°q°b³EÑ(9¸2¹a»c¹6À!ÀQÁ$¹;ÓH×MÑMÓOÐSTÐVWÑSWÒWÐWÐWñ ˆA‹$‰q�‹t‰)×Ñ™a ›d¡1 Q£4™i©¨1«©a°«d©Ó3ÙˆQ‹4‘�!“‰9ò	ð
ð	ñ ˆA‹$‰q�‹t‰)‘A�a“D‰.×"Ñ"¡1 Q q£6©!¨A«$¡;±°!°A³±q¸¸1³v±¹aÀÀ»eÑ0CÓEÙˆQ‹4‘�!“‰9‘Q�q“T‰>™!˜A›$Ñ™q ! ›uÑ$ò	%ð
ð	%ô
 $Ð$5°rÓ:�N€BˆˆB�Ù�"��r�c‹?™1˜R›5Ñ ¡ 2£Ñ&¡q¨"¨£vÑ-€DÙ
‹#‰a�‹d‰(‘1�a�R“5‰.×"Ñ" 4Ó(€AØ�Q—X‘X“ZÑÐÑr8   c            	      óž  — t        dd¬«      } t        d| «      \  }}}t        d| g«      }t        d| g«      }t        d| | g«      }t        | j                  dz   | d	«      }t        d
| d	¬«      } ||«       ||«      z   || «      z  j                   ||«       ||«       || «      z  i«       ||«       ||«      z   || «      z   || «      z  k(  sJ ‚ ||«       ||«      z   || «      z  j                   ||«       ||«       || «      z  i«       ||«       ||«      z   || «      z   || «      z  k(  sJ ‚ ||«       ||«      z  j                  || ||«       ||«       || «      z  i«       ||«       ||«      z   || «      z  k(  sJ ‚ ||«       ||| «      z   || «      z  j                  «        ||«       ||| «      z   || «      z  k(  sJ ‚ ||«       || «      z  j                   ||«       ||«       ||«      z   || «      z  «       ||«       ||«      z   || «      z   || «      z  k(  sJ ‚y)z;
    Test subs and xreplace in TensMul. See bug #24337
    r¸   r`   r²   r=  r´   r�   r@   Ú_0TrG   )r\  N)
r   r   r#   r   r=   r)   ÚsubsÚxreplacerý   ra  )	r¸   r³   r  r  r´   r�   r@   ÚC0rG   s	            r6   Útest_TensMul_subsrs  f  sM  € ô 
˜ 1Ô	%€BÜ˜W bÓ)�G€A€qˆ!Ü�3˜˜Ó€AÜ�3˜˜Ó€AÜ�3˜˜R˜Ó!€AÜ	�R—]‘] TÑ)¨2¨tÓ	4€BÜ˜˜R¨tÔ4€Aáˆq‹T‘!�A“$‰Y‘q˜!˜“u‰_×#Ñ#¡Q q£T©1¨Q«4±°1°"³©:Ð$6Ó7¹1¸Q»4ÁÀ!Ã¹9ÁQÈÀrÃU¹?É1ÈaÈRË5Ñ;PÒPÐPÐPÙˆq‹T‘!�A“$‰Y‘q˜!˜“u‰_×'Ñ'©¨1«©q°«t±A°q°b³E©zÐ(:Ó;¹qÀ»tÁAÀaÃD¹yÉÈAÈ2Ë¹ÉqÐRSÐQSËuÑ?TÒTÐTÐTÙˆq‹T‘!�A“$‰Y×!Ñ! 1 b©!¨A«$±°!³±Q¸°r³U±
Ð";Ó<ÁÀ"ÃÁaÈÃdÁ
É1ÈaÈRË5Ñ@PÒPÐPÐPÙˆq‹T‘!�A�q�b“'‰\™!˜Q˜B›%Ñ×&Ñ&Ó(©A¨a«D±°1°a°R³©L¹¸A¸2»Ñ,>Ò>Ð>Ð>Ùˆq‹T‘!�Q�B“%‰Z×!Ñ!¡1 Q£4©¨1«©a°«d©±1°a°R³5©Ó:¹aÀ»dÁ1ÀQÃ4¹iÉÈ1È"Ë¹oÉaÐQRÐPRËeÑ>SÒSÐSÑSr8   c                  ó`   — t        «       5  t        dgdz  «       d d d «       y # 1 sw Y   y xY wre  )r.   r&   rÒ   r8   r6   Útest_tensorsymmetryru  y  s+   € Ü	Ó	!ñ Ü˜�s˜1‘uÔ÷÷ ñ ús   ‹$¤-c                  óZ   — t        «       5  t        dg «       d d d «       y # 1 sw Y   y xY w)Nr@   )r.   r%   rÒ   r8   r6   Útest_tensorheadrw  }  s'   € Ü	Ó	!ñ Ü�3˜Ô÷÷ ñ ús   ‹!¡*c                  óÈ   — t        «       5  t        j                  d«      } t        d«      }t	        |gdz  | «      }t        |t        «      sJ ‚	 d d d «       y # 1 sw Y   y xY w)NrA   r:   )r.   r   rF   r   r'   r2   )rÈ   r:   ÚS2s      r6   Útest_TensorTyperz  �  sY   € Ü	Ó	!ñ *Ü×-Ñ-¨aÓ0ˆÜ! )Ó,ˆÜ˜˜	 !™ TÓ*ˆÜ˜"œjÔ)Ð)Ñ)÷	*÷ *ñ *ús   ‹AAÁA!c                  ó\   — t        «       5  t        dd¬«       d d d «       y # 1 sw Y   y xY w)Nr:   r;   )Ú	dummy_fmt)r.   r   rÒ   r8   r6   Útest_dummy_fmtr}  ˆ  s'   € Ü	Ó	!ñ 2Ü˜	¨SÕ1÷2÷ 2ñ 2ús   ‹"¢+c            	      ó¶  — t        dd¬«      } t        d| «      }t        d| g«      }t        d«      \  }}}t	        |dz  j                  | ||«      i«      t        «      sJ ‚t	        |dz   j                  | ||«       || «      z  i«      t        «      sJ ‚t	        |dz  j                  | ||«      i«      t        «      sJ ‚t	        |dz   j                  | ||«       || «      z  i«      t        «      sJ ‚t	        |dz  j                  | ||«      «      t        «      sJ ‚t	        |dz   j                  | ||«       || «      z  «      t        «      sJ ‚y)	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`   r²   r}   r´   zx y zrA   N)
r   r   r#   r   r2   rq  r   r   rp  ra  )r¸   r}   r´   rº   r6  Úzs         r6   Útest_postprocessorr€  Œ  s2  € ô
 
˜ 1Ô	%€BÜ�s˜BÓ€AÜ�3˜˜Ó€AÜ�GÓ�E€A€aˆä�q˜‘s—n‘n a©¨1« YÓ/´Ô9Ð9Ð9Ü�q˜‘s—n‘n a©¨1«©a°°«e© _Ó5´wÔ?Ð?Ð?ä�q˜‘s—j‘j !¡Q q£T Ó+¬WÔ5Ð5Ð5Ü�q˜‘s—j‘j !¡Q q£T©!¨Q¨B«%¡Z Ó1´7Ô;Ð;Ð;ä�q˜‘s—m‘m A¡q¨£tÓ,¬gÔ6Ð6Ð6Ü�q˜‘s—m‘m A¡q¨£t©A¨q¨b«E¡zÓ2´GÔ<Ð<Ñ<r8   c                  óÞ   — t        dd¬«      } t        d| «      \  }}t        d| g«      }t        d| g«      }t        d ||«       ||«      «      }|j                  |j
                  z  |k(  sJ ‚y)	zQ
    Ensure that for any TensMul instance, self.coeff * self.nocoeff == self
    r¸   r`   r²   zi jr´   ÚPrA   N)r   r   r#   r   r  Únocoeff)r¸   r}   rÿ   r´   r‚  rµ   s         r6   Útest_TensMul_nocoeffr„  Ÿ  sm   € ô
 
˜ 1Ô	%€BÜ˜% Ó$�D€A€qÜ�3˜˜Ó€AÜ�3˜˜Ó€Aä�1‘a˜“d™A˜a›DÓ!€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   rN   rS   rX   r^   r{   r€   r�   r“   r¨   r¯   r¶   r¼   rÊ   rÚ   rá   rò   rø   r  r  r  r  r%  r*  r,  r.  r1  r6  r9  r;  rA  rC  rF  rU  rX  r\  rw  r†  r¯  r²  r¶  rº  r½  rÀ  rÂ  rÑ  rÓ  rÝ  rà  rç  rï  rõ  r  r  r  r  r+  r3  r9  rT  rY  rc  re  rm  rs  ru  rw  rz  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ò&6ò2òT;òl'ò6ò"]ò(#0òJ#òJòð( ñó ðò*?òXAPòF_-òD	,ò/ò)+òV%òN8ò*ò:#5òL7 òz6RòrJò0&òAò(5ò0%ò!ò&_òRò*,ò:fò#YòL7òB6ò&;ò>8ò09òv4ò>0'òfD9òN	'òxJòvCò2"0òH,ò"9 òvTò&òò*ò2ò=ó&-r8   