+
    ‹°³jc  ã                   óz   € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHt R t	R t
R tR	 tR
 tR tR tR tR R ltR# )é    N)Údefaultdict)ÚPermutation)ÚTuple)ÚIntegerc                 óv   € / p^ p\        V 4       F%  w  r4\        V4       F  pW53W&   V^,          pK  	  K'  	  V# )r   )Ú	enumerateÚrange)ÚsubranksÚmappingÚcounterÚiÚrankÚjs   &     Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/tensor/array/expressions/utils.pyÚ_get_mapping_from_subranksr   	   sE   € Ø€GØ€GÜ˜XÖ&‰ˆÜ�t–ˆAØ !˜vˆGÑØ�q�LŠGó ñ 'ð €Nó    c           	      ó.  € \        V4      pV UUu. uF  qD Uu. uF  qSV,          NK  	  upNK  	  ppp\        \        4      pV F6  p\        V4      ^8X  g   K  Vw  w  ršw  r¼W¼3Wy,          V
&   Wš3W{,          V&   K8  	  V \        V4      3# u upi u uppi )é   )r   r   ÚdictÚlen)Úargsr
   Úcontraction_indicesr   r   r   Úcontraction_tuplesÚdlinksÚlinksÚarg1Úpos1Úarg2Úpos2s   &&*          r   Ú_get_contraction_linksr       s›   € Ü(¨Ó2€GÙ;NÔOÑ;N°a¨qÓ1©q¨! 1Ÿ:˜:©qÔ1Ñ;NÐÑOÜœÓ€FÛ#ˆÜˆu‹:˜Ž?Ø).Ñ&‰LˆT™,˜4Ø"& ˆF�L˜ÑØ"& ˆF�L˜ÑÙñ $ð ”�f“ÐÐùò 2ùÓOs   ‘B™BªBÂBc                 óx   € V  Uu. uF  p\        \        V4      !  NK  	  p pV P                  R  R7       V # u upi )c                 ó   € \        V 4      # ©N)Úmin)Úxs   &r   Ú<lambda>Ú+_sort_contraction_indices.<locals>.<lambda>#   s   € ¤s¨1¤vr   ©Úkey)r   ÚsortedÚsort)Úpairing_indicesr   s   & r   Ú_sort_contraction_indicesr-   !   s=   € Ù2AÓB±/¨Q”uœf Q›iÔ(±/€OÐBØ×ÑÑ-ÐÔ.ØÐùò Cs   …7c                 ó  a € \        \        4      p\        S 4       F:  w  r#\        V\        \
        34      '       d   K#  W,          P                  V4       K<  	  VP                  4        UUu/ uF  w  rE\        V4      ^8”  g   K  WEbK  	  pppS  Uu. uF  q"V9  g   K  VNK  	  pp\        V4      pVP                  V 3R lR7       V Uu. uF  p\        W,          4      NK  	  ppWg,          p\        V4      pW†3# u uppi u upi u upi )é   c                 ó&   <€ SP                  V 4      # r#   )Úindex)r%   Úflattened_indicess   &€r   r&   Ú'_get_diagonal_indices.<locals>.<lambda>2   s   ø€ Ð$5×$;Ñ$;¸AÔ$>r   r(   )r   Úlistr   Ú
isinstanceÚintr   ÚappendÚitemsr   r+   Útuple)	r2   Úaxes_contractionr   ÚindÚkÚvÚret_indicesÚdiag_indicesÚdiagonal_indicess	   f        r   Ú_get_diagonal_indicesrA   '   sú   ø€ Ü"¤4Ó(ÐÜÐ-Ö.‰ˆÜ�cœC¤˜>×*Ò*áØÕ×$Ñ$ QÖ'ñ	 /ð
 *:×)?Ñ)?Ô)AÔPÑ)A¡ ÄSÈÃVÈaÁZœ˜šÑ)AÐÑPá/ÓMÑ/˜Ð<LÑ3L—1�1Ñ/€KÐMÜÐ(Ó)€LØ×ÑÔ>ÐÔ?Ù<HÓI¹L°qœÐ.Õ1Ö2¹LÐÐIØÕ€KÜ˜Ó$€KØÐ(Ð(ùó QùâMùò Js   Á-C?ÂC?ÂDÂ DÃD
c                 ó²   € \        V 4       F7  w  r#W8X  d   Vu # \        V\        \        34      '       g   K-  W9   g   K5  Vu # 	  \	        V: R V : 24      h)z not found in )r   r5   ÚsetÚ	frozensetÚ
IndexError)Ú
subindicesr;   r   Úsinds   &&  r   Ú_get_argindexrH   9   sJ   € Ü˜ZÖ(‰ˆØŒ;ØŠHÜ�dœS¤)Ð,×-Ô-°#¶+ØŠHñ	 )ô
 «S²*Ð=Ó
>Ð>r   c                 ó&  a € \        V\        \        \        34      '       d3   \        ;QJ d    . V 3R  lV 4       F  NK  	  5# ! V 3R  lV 4       4      # \        V\        4      '       d!   \        P                  ! V 3R lV 4       4      # S ! V4      # )c              3   ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir#   ©Ú$_apply_recursively_over_nested_lists©Ú.0r   Úfuncs   & €r   Ú	<genexpr>Ú7_apply_recursively_over_nested_lists.<locals>.<genexpr>D   s   øé € ÐPÉCÀqÔ9¸$À×BÐBËCùó   ƒc              3   ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir#   rK   rM   s   & €r   rP   rQ   F   s   øé € ÐYÑUXÐPQÔBÀ4È×KÐKÓUXùrR   )r5   r9   r4   r   Úfromiter)rO   Úarrs   f&r   rL   rL   B   sf   ø€ Ü�#œœt¤UÐ+×,Ò,ßŒuÔPÉCÓP�uÐPˆuÔPÉCÓPÓPÐPÜ	�Cœ×	Ò	Ü�~Š~ÔYÑUXÓYÓYÐYá�C‹yÐr   c                 óT  a aaa€ ^ ^ /o^ p^ pV\        S 4      8  de   ^pW,           \        S 4      8  d/   S V,          V,           S W,           ,          8w  d   MV^,          pKD  W#,          pVSS V,          &   W,          pKt  \        SP                  4       4      oVV3R loV V3R lpV# )r   c                 ó\   <€ SS\         P                  ! SV 4      ^,
          ,          ,          # )r/   )ÚbisectÚbisect_right)ÚidxÚ
shift_keysÚshiftss   &€€r   rO   Ú8_build_push_indices_up_func_transformation.<locals>.funcZ   s%   ø€ Ø�j¤×!4Ò!4°ZÀÓ!EÀaÕ!GÕHÕIÐIr   c                 ó4   <€ V S9   d   R # V S! V 4      ,
          # r#   © )r   Úflattened_contraction_indicesrO   s   &€€r   Ú	transformÚ=_build_push_indices_up_func_transformation.<locals>.transform]   s   ø€ ØÐ-Ô-Ùà‘t˜A“w•;Ðr   )r   r*   Úkeys)r`   r   Ú
cumulativer   ra   rO   r[   r\   s   f    @@@r   Ú*_build_push_indices_up_func_transformationre   K   s¢   û€ Ø�ˆV€FØ	€AØ€JØ
ŒcÐ/Ó0Ô
0ØˆØ�c”CÐ5Ó6Ô6Ø,¨QÕ/°!Õ3Ð7TÐUVÕUXÕ7YÔYØØ��FŠAØ�ˆ
Ø3=ˆÐ,¨QÕ/Ñ0Ø	�ŠÜ˜Ÿ™›Ó&€JöJöð Ðr   c                 ó„   a€ V R,          ^,           p\        V4       Uu. uF  q"V 9  g   K  VNK  	  upoV3R lpV# u upi )r/   c                 ó„   <€ V \        S4      8  d
   SV ,          # V SR,          ,           \        S4      ,
          ^,           # )r/   éÿÿÿÿ)r   )r   r\   s   &€r   ra   Ú?_build_push_indices_down_func_transformation.<locals>.transformk   s4   ø€ ØŒs�6‹{Œ?Ø˜!•9Ðà�v˜b•z•>¤C¨£KÕ/°!Õ3Ð3r   rh   )r	   )r`   ÚNr   ra   r\   s   &   @r   Ú,_build_push_indices_down_func_transformationrk   f   sE   ø€ Ø% bÕ)¨!Õ+€Aä˜qœÓL™�AÐ.KÑ%K�aˆa™ÑL€Fõ4ð Ðùò Ms   Ÿ=¬=c                ó0   € V ^8„  d   QhR\         R\        /# )r   ÚpermÚtarget_list)r   r4   )Úformats   "r   Ú__annotate__rp   t   s   € ÷ ñ ¤[ð ¼tñ r   c                ó”   € \        V P                  4       Uu. uF  pRNK  	  pp\        V4       F  w  r$WCV ! V4      &   K  	  V# u upi )z4
Permute a list according to the given permutation.
N)r	   Úsizer   )rm   rn   r   Únew_listÚes   &&   r   Ú_apply_permutation_to_listru   t   sJ   € ô $ D§I¡IÔ.Ó/Ñ.˜“Ñ.€HÐ/Ü˜+Ö&‰ˆØ‘�a“Óñ 'à€Oùò 0s   ˜A)rX   Úcollectionsr   Úsympy.combinatoricsr   Úsympy.core.containersr   Úsympy.core.numbersr   r   r    r-   rA   rH   rL   re   rk   ru   r_   r   r   Ú<module>rz      sA   ðÛ Ý #å +Ý 'Ý &òòòò)ò$?òòò6÷r   