Ë
    täi¾š  ã                  óÐ  — d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl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mZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZPmQZQ d dlRmSZS d dlTmUZU d d	lVmWZW dd
„ZXd„ ZYd„ ZZd„ Z[e[ G d„ d«      «       Z\y)é    )ÚannotationsN)Úproduct)ÚAnyÚCallable)FÚMulÚAddÚPowÚRationalÚlogÚexpÚsqrtÚcosÚsinÚtanÚasinÚacosÚacotÚasecÚacscÚsinhÚcoshÚtanhÚasinhÚacoshÚatanhÚacothÚasechÚacschÚexpandÚimÚflattenÚpolylogÚcancelÚexpand_trigÚsignÚsimplifyÚUnevaluatedExprÚSÚatanÚatan2ÚModÚMaxÚMinÚrfÚEiÚSiÚCiÚairyaiÚairyaiprimeÚairybiÚprimepiÚprimeÚisprimeÚcotÚsecÚcscÚcschÚsechÚcothÚFunctionÚIÚpiÚTupleÚGreaterThanÚStrictGreaterThanÚStrictLessThanÚLessThanÚEqualityÚOrÚAndÚLambdaÚIntegerÚDummyÚsymbols)ÚsympifyÚ_sympify)Úairybiprime)Úli)Úsympy_deprecation_warningc                óh   — t        ddd¬«       t        |«      }t        |j                  | «      «      S )NzóThe ``mathematica`` function for the Mathematica parser is now
deprecated. Use ``parse_mathematica`` instead.
The parameter ``additional_translation`` can be replaced by SymPy's
.replace( ) or .subs( ) methods on the output expression instead.z1.11zmathematica-parser-new)Údeprecated_since_versionÚactive_deprecations_target)rQ   ÚMathematicaParserrM   Ú
_parse_old)ÚsÚadditional_translationsÚparsers      úh/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/parsing/mathematica.pyÚmathematicar[      s;   € Üð	Eð "(Ø#;õô Ð6Ó7€FÜ�6×$Ñ$ QÓ'Ó(Ð(ó    c                ó8   — t        «       }|j                  | «      S )a±  
    Translate a string containing a Wolfram Mathematica expression to a SymPy
    expression.

    If the translator is unable to find a suitable SymPy expression, the
    ``FullForm`` of the Mathematica expression will be output, using SymPy
    ``Function`` objects as nodes of the syntax tree.

    Examples
    ========

    >>> from sympy.parsing.mathematica import parse_mathematica
    >>> parse_mathematica("Sin[x]^2 Tan[y]")
    sin(x)**2*tan(y)
    >>> e = parse_mathematica("F[7,5,3]")
    >>> e
    F(7, 5, 3)
    >>> from sympy import Function, Max, Min
    >>> e.replace(Function("F"), lambda *x: Max(*x)*Min(*x))
    21

    Both standard input form and Mathematica full form are supported:

    >>> parse_mathematica("x*(a + b)")
    x*(a + b)
    >>> parse_mathematica("Times[x, Plus[a, b]]")
    x*(a + b)

    To get a matrix from Wolfram's code:

    >>> m = parse_mathematica("{{a, b}, {c, d}}")
    >>> m
    ((a, b), (c, d))
    >>> from sympy import Matrix
    >>> Matrix(m)
    Matrix([
    [a, b],
    [c, d]])

    If the translation into equivalent SymPy expressions fails, an SymPy
    expression equivalent to Wolfram Mathematica's "FullForm" will be created:

    >>> parse_mathematica("x_.")
    Optional(Pattern(x, Blank()))
    >>> parse_mathematica("Plus @@ {x, y, z}")
    Apply(Plus, (x, y, z))
    >>> parse_mathematica("f[x_, 3] := x^3 /; x > 0")
    SetDelayed(f(Pattern(x, Blank()), 3), Condition(x**3, x > 0))
    )rU   Úparse)rW   rY   s     rZ   Úparse_mathematicar_       s   € ôd Ó €FØ�<‰<˜‹?Ðr\   c                 ó  — t        | «      dk(  r¹| d   }t        d«      }|j                  |«      }|D �cg c]  }|j                  d   ‘Œ }}t	        |«      }t        |t        «      rUt        d|› �t        ¬«      }t        ||j                  t        |«      D ��	ci c]  \  }}	 ||dz   «      |	“Œ c}	}«      «      S t        d|«      S t        | «      dk(  r| d   }| d   }
t        ||
«      S t        d«      ‚c c}w c c}	}w )	Né   r   ÚSlotzdummy0:©Úcls© é   z&Function node expects 1 or 2 arguments)Úlenr>   ÚatomsÚargsÚmaxÚ
isinstancerJ   rL   rK   rI   ÚxreplaceÚ	enumerateÚSyntaxError)ri   Úargrb   ÚslotsÚaÚnumbersÚnumber_of_argumentsÚ	variablesÚiÚvÚbodys              rZ   Ú_parse_Functionrx   V   sý   € Ü
ˆ4ƒy�A‚~Ø�1‰gˆÜ˜ÓˆØ—	‘	˜$“ˆÙ&+Ó,¡e �1—6‘6˜!“9 eˆÐ,Ü! '›lÐÜÐ)¬7Ô3Ü 'Ð*=Ð)>Ð ?ÄUÔKˆIÜ˜) S§\¡\ÌIÐV_ÔL`Ô2aÑL`ÁDÀAÀq±4¸¸!¹³9¸a±<ÐL`Ò2aÓ%bÓcÐcÜ�b˜#‹ÐÜ	ˆT‹�aŠØ˜‘Gˆ	Ø�A‰wˆÜ�i Ó&Ð&äÐBÓCÐCùò -ùó 3bs   ´C7ÂC<c                ó&   — | j                  «        | S ©N)Ú_initialize_classrc   s    rZ   Ú_decor|   i   s   € Ø×ÑÔØ€Jr\   c            !      óü  — e Zd ZU dZi dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%d&d'd(d)d*œ¥Z ed+d,d-«      D ]V  \  ZZZeez   ez   d.z   Z	erd/ej                  «       z   ez   d0z   Znej                  «       ez   d0z   Zej                  e	ei«       ŒX d1d2d3d4d5œZ ej                  d6ej                   «      d7f ej                  d8ej                   «      d7f ej                  d9ej                   «      d:f ej                  d;ej                   «      d<fd=œZ ej                  d>ej                   «      Z ej                  d?ej                   «      Zd@Zi ZdAedB<   i ZdAedC<   i ZdAedD<   edE„ «       Z�ddG„ZedH„ «       ZdI„ ZdJ„ ZedK„ «       ZedL„ «       Z edM„ «       Z!edN„ «       Z"dO„ Z#dP„ Z$dQZ%dRZ&dSZ'dTZ(dUZ)dVZ*e'dFdWdX„ ife%e(dWdYife%e)dZd[d\d]d^d_d`œfe%e*dadb„ ife'dFdcddife%e*dedfife%e)dgdhdiœfe%e*djdkife%e(dldmife'dFdndodpœfe%e(dqdrife%e(dsdtife&dFdudvife%e(dwdxdyœfe%e(dzd{d|d}d~dd€œfe%dFd�d‚ife%e(dƒdƒd„œfe%e(d…d…d†œfe%e(d‡dˆife&dFd‰„ dŠ„ d‹œfe%e)dŒd�ife%e)dŽd�d�d‘„ d’œfe'dFd“d”d•d–d—œfe%dFd˜„ d™„ dšœfe&dFd›„ dœ„ d�œfe%dFdždŸife'dFd „ d¡„ d¢„ d£„ d¤œfe%dFd¥d¦„ ife&dFd§d¨d©œfgZ+dªed«<   d¬„ d­„ d©œZ,d®Z-d¯Z.g d°¢Z/g d±¢Z0ed²„ «       Z1ed³„ «       Z2dFZ3d´„ Z4�ddµ„Z5�dd¶„Z6�dd·„Z7�dd¸„Z8�dd¹„Z9�ddº„Z:�dd»„Z;�d�dd¼„Z<�d	d½„Z=�d
d¾„Z>�dd¿„Z?i d…e@“dƒeA“d�eB“dÀeC“dÁdÂ„ “dÃdÄ„ “dÅdÆ„ “dÇeD“dÈeE“dÉeF“dÊeG“dËeH“dÌeI“dÍeJ“dÎeK“dÏeL“dÐeM“i dÑdÒ„ “dÓeN“dÔeO“dÕeP“dÖeQ“d×eR“dØeS“dÙeT“dÚeU“dÛeV“dÜeW“dÝeX“dÞeY“dßeZ“dàe[“dáe\“dâe]“¥i dãe^“däe_j                  “dåe`“dæea“dçeb“dèec“déed“dêee“dëef“dìeg“dídî„ “dïeh“dðei“dñej“dòek“dóel“dôem“¥i dõen“döeo“d÷ep“døeq“dùer“dúes“dûet“düeu“dýev“dþew“dex“d~ey“d}ez“d|e{“dze|“dre}“dte~“¥ddei¥Z€e�e‚dÿœZƒ�d „ Z„�d„ Z…yF(  rU   ap  
    An instance of this class converts a string of a Wolfram Mathematica
    expression to a SymPy expression.

    The main parser acts internally in three stages:

    1. tokenizer: tokenizes the Mathematica expression and adds the missing *
        operators. Handled by ``_from_mathematica_to_tokens(...)``
    2. full form list: sort the list of strings output by the tokenizer into a
        syntax tree of nested lists and strings, equivalent to Mathematica's
        ``FullForm`` expression output. This is handled by the function
        ``_from_tokens_to_fullformlist(...)``.
    3. SymPy expression: the syntax tree expressed as full form list is visited
        and the nodes with equivalent classes in SymPy are replaced. Unknown
        syntax tree nodes are cast to SymPy ``Function`` objects. This is
        handled by ``_from_fullformlist_to_sympy(...)``.

    zSqrt[x]zsqrt(x)zRational[x,y]zRational(x,y)zExp[x]zexp(x)zLog[x]zlog(x)zLog[x,y]zlog(y,x)zLog2[x]zlog(x,2)zLog10[x]z	log(x,10)zMod[x,y]zMod(x,y)zMax[*x]zMax(*x)zMin[*x]zMin(*x)zPochhammer[x,y]zrf(x,y)zArcTan[x,y]z
atan2(y,x)zExpIntegralEi[x]zEi(x)zSinIntegral[x]zSi(x)zCosIntegral[x]zCi(x)z	AiryAi[x]z	airyai(x)zAiryAiPrime[x]zairyaiprime(x)z	airybi(x)zairybiprime(x)z li(x)z
primepi(x)zprime(x)z
isprime(x))z	AiryBi[x]zAiryBiPrime[x]zLogIntegral[x]z
PrimePi[x]zPrime[x]z	PrimeQ[x])Ú ÚArc)ÚSinÚCosÚTanÚCotÚSecÚCsc)r~   Úhz[x]rq   z(x)r~   z**Ú[Ú])Ú Ú^Ú{Ú}zñ
                (?:(?<=[a-zA-Z\d])|(?<=\d\.))     # a letter or a number
                \s+                               # any number of whitespaces
                (?:(?=[a-zA-Z\d])|(?=\.\d))       # a letter or a number
                Ú*zÐ
                (?:(?<=[])\d])|(?<=\d\.))       # ], ) or a number
                                                # ''
                (?=[(a-zA-Z])                   # ( or a single letter
                z¬
                (?<=[a-zA-Z])       # a letter
                \(                  # ( as a character
                (?=.)               # any characters
                z*(z¿
                (?:
                \A|(?<=[^a-zA-Z])
                )
                Pi                  # 'Pi' is 3.14159... in Mathematica
                (?=[^a-zA-Z])
                r@   )Ú
whitespaceúadd*_1úadd*_2ÚPizÞ
                (?:
                \A|(?<=[^a-zA-Z])   # at the top or a non-letter
                )
                [A-Z][a-zA-Z\d]*    # Function
                (?=\[)              # [ as a character
                z(
                \{.*\}
                zº
                (?:
                \A|(?<=[^a-zA-Z])
                )
                {arguments}         # model argument like x, y,...
                (?=[^a-zA-Z])
                z%dict[tuple[str, int], dict[str, Any]]ÚTRANSLATIONSÚcache_originalÚcache_compiledc                óp   — | j                  | j                  «      }| j                  j                  |«       y rz   )Ú_compile_dictionaryÚCORRESPONDENCESr’   Úupdate)rd   Úds     rZ   r{   z#MathematicaParser._initialize_class÷   s.   € ð ×#Ñ# C×$7Ñ$7Ó8ˆØ×Ñ×Ñ Õ"r\   Nc                ó�  — i | _         | j                   j                  | j                  «       |€i }| j                  j                  |k7  rNt        |t        «      st        d«      ‚| j                  |«      }|| j                  _        || j                  _	        | j                   j                  | j                  j                  «       y )NzThe argument must be dict type)
Útranslationsr˜   r’   Ú	__class__r“   rk   ÚdictÚ
ValueErrorr–   r”   )ÚselfrX   r™   s      rZ   Ú__init__zMathematicaParser.__init__ý   s¬   € ØˆÔð 	×Ñ× Ñ  ×!2Ñ!2Ô3à"Ð*Ø&(Ð#ð �>‰>×(Ñ(Ð,CÒCÜÐ5´tÔ<Ü Ð!AÓBÐBð ×(Ñ(Ð)@ÓAˆAð -DˆD�N‰NÔ)Ø,-ˆD�N‰NÔ)ð 	×Ñ× Ñ  §¡×!>Ñ!>Õ?r\   c                ó®  — i }|j                  «       D �]¹  \  }}| j                  |«       | j                  |«       | j                  |d«      }| j                  |d«      }| j                  |d«      }| j                  |d«      }| j                  j                  |«      }|€dj                  |¬«      }t        |«      ‚|j                  «       }| j                  |«      \  }}	|j                  «       dk7  s|	t        |«      k7  rdj                  |¬«      }t        |«      ‚|d   d   dk(  rd}
nt        |«      }
||
f}|D �cg c]  }|d   dk7  r|nd|z   ‘Œ }}d	d
j                  |«      z   dz   }| j                  j                  |¬«      }t        j                  |t        j                   «      }i ||<   |||   d<   |||   d<   |||   d<   �Œ¼ |S c c}w )NrŽ   r‰   ú'{f}' function form is invalid.©Úfr   éÿÿÿÿr�   Ú\z(?:(Ú|z)))Ú	argumentsÚfsri   Úpat)ÚitemsÚ_check_inputÚ_apply_rulesÚ_replaceÚ
FM_PATTERNÚsearchÚformatrž   ÚgroupÚ	_get_argsÚstartrg   ÚjoinÚARGS_PATTERN_TEMPLATEÚreÚcompileÚVERBOSE)rd   Údicr™   Úfmr©   ÚmÚerrÚfm_nameri   ÚendÚkey_argÚkeyÚxÚre_argsÚxyzÚpatStrrª   s                    rZ   r–   z%MathematicaParser._compile_dictionary  sñ  € ð ˆà—i‘i—k‰FˆB�à×Ñ˜RÔ Ø×Ñ˜RÔ ð ×!Ñ! " lÓ3ˆBØ×!Ñ! " lÓ3ˆBð —‘˜b #Ó&ˆBØ—‘˜b #Ó&ˆBð —‘×%Ñ% bÓ)ˆAð ˆyØ7×>Ñ>ÀÐ>ÓD�Ü  “oÐ%ð —g‘g“iˆGð Ÿ™ aÓ(‰IˆD�#ð �w‰w‹y˜AŠ~ ¬¨B«¢Ø7×>Ñ>ÀÐ>ÓD�Ü  “oÐ%ð �B‰x˜‰{˜cÒ!Ø‘ä˜d›)�à˜GÐ$ˆCñ @DÓD¹t¸!˜A˜a™D CšK‘q¨T°A©XÑ5¸tˆGÐDð ˜3Ÿ8™8 GÓ,Ñ,¨tÑ3ˆCð ×.Ñ.×5Ñ5ÀÐ5ÓDˆFä—*‘*˜V¤R§Z¡ZÓ0ˆCð ˆAˆc‰FØˆAˆc‰F�4‰LØ!ˆAˆc‰F�6‰NØˆAˆc‰F�5‹Mðo "ðr ˆùò! Es   ÅGc                ó  — | j                   }d}d}	 |j                  |«      }|€||z  }	 |S |j                  «       }| j                  |«      \  }}|j	                  «       }	| j                  ||||	|«      }|	}||d| z  }||d }Œt)z'Parse Mathematica function to SymPy oner~   r   N)r¯   r°   r²   r³   r´   Ú_convert_one_function)
rŸ   rW   rª   ÚscannedÚcurr¼   r»   ri   r¿   Úbgns
             rZ   Ú_convert_functionz#MathematicaParser._convert_functionU  s²   € ð �o‰oˆàˆØˆØØ—
‘
˜1“ˆAàˆyà˜1‘�Øð. ˆð) —‘“ˆBð Ÿ™ qÓ)‰IˆD�#ð —'‘'“)ˆCð ×*Ñ*¨1¨b°$¸¸SÓAˆAð ˆCð �q˜˜#�wÑˆGð �#�$�ˆAð7 r\   c                óÎ  — |t        |«      f| j                  v r5|t        |«      f}| j                  |   d   }t        t        ||«      «      }n‚|df| j                  v rU|df}| j                  |   d   }i }t	        |«      D ].  \  }	}
|
d   dk(  rdj                  ||	d  «      ||
<    n(||	   ||
<   Œ0 ndj                  |¬«      }t        |«      ‚| j                  |   d   }| j                  |   d   }d	}d}	 |j                  |«      }|€||z  }nD|j                  «       }
|j                  «       }||d | ||
   z   z  }|j                  «       }||d  }Œ]|d | |z   ||d  z   }|S )
Nri   r�   r   Ú,z'{f}' is out of the whitelist.r£   r©   rª   r~   )rg   r›   r�   Úziprm   rµ   r±   rž   r°   r²   r´   r¿   )rŸ   rW   r»   ri   rÊ   r¿   rÁ   Úx_argsr™   ru   rÂ   r½   Útemplaterª   rÈ   rÉ   r¼   Úxbgns                     rZ   rÇ   z'MathematicaParser._convert_one_function|  sÀ  € à”�D“	ˆ?˜d×/Ñ/Ñ/Ø”s˜4“y�/ˆCð ×&Ñ& sÑ+¨FÑ3ˆFô ”S˜ Ó&Ó'‰Að �#ˆY˜$×+Ñ+Ñ+Ø�s�)ˆCð ×&Ñ& sÑ+¨FÑ3ˆFð ˆAÜ! &Ö)‘��1Ø�Q‘4˜3’;ØŸ8™8 D¨¨ HÓ-�A�a‘DÙØ˜A‘w��!’ñ	 *ð 3×9Ñ9¸BÐ9Ó?ˆCÜ˜S“/Ð!ð ×$Ñ$ SÑ)¨$Ñ/ˆð ×Ñ Ñ$ UÑ+ˆàˆØˆØØ—
‘
˜8Ó$ˆAàˆyØ˜8Ñ#�Øð —‘“	ˆAð —7‘7“9ˆDð �x  �¨¨1©Ñ-Ñ-ˆGð —%‘%“'ˆCð    �~ˆHð) ð. ˆdˆsˆG�gÑ  # $ Ñ'ˆàˆr\   c                ó¶  — |j                   }|j                  «       dz   }g g }}g }|}t        ||d |«      D ]˜  \  }}	|	dk(  r|s|s|j                  ||| «       |dz   }|	dk(  r|j                  |	«       n|	dk(  r|j	                  «        |	dk(  r|j                  |	«       Œk|	dk(  sŒq|r|j	                  «        Œ„|j                  ||| «        n dz   }
||
fS )z'Get arguments of a Mathematica functionra   NrÍ   r‹   rŒ   r‡   rˆ   )Ústringr¿   rm   ÚappendÚpop)rd   r¼   rW   ÚancÚsquareÚcurlyri   rÉ   ru   ÚcÚfunc_ends              rZ   r³   zMathematicaParser._get_args¾  sè   € ð �H‰HˆØ�e‰e‹g˜‰kˆØ˜B�ˆØˆð ˆÜ˜a  ˜g sÖ+‰DˆAˆqà�CŠx¡±%Ø—‘˜A˜c !˜HÔ%Ø˜!‘e�ð �CŠxØ—‘˜Q•Ø�c’Ø—	‘	”ð �CŠxØ—‘˜aÕ Ø�c“ÙØ—J‘J•Là—K‘K  # a Ô)Ùð) ,ð. �q‘5ˆà�Xˆ~Ðr\   c                óH   — | j                   |   }|j                  ||«      }|S rz   )ÚREPLACEMENTSÚreplace)rd   rW   ÚbefÚafts       rZ   r®   zMathematicaParser._replaceä  s'   € à×Ñ˜sÑ#ˆØ�I‰I�c˜3ÓˆØˆr\   c                óJ   — | j                   |   \  }}|j                  ||«      S rz   )ÚRULESÚsub)rd   rW   rÞ   rª   rß   s        rZ   r­   zMathematicaParser._apply_rulesê  s#   € à—9‘9˜S‘>‰ˆˆSØ�w‰w�s˜A‹Ðr\   c                óÀ   — dD ]H  }|j                  |d   «      |j                  |d   «      k7  sŒ-dj                  |¬«      }t        |«      ‚ d|v rd}t        |«      ‚y )N))r‡   rˆ   )r‹   rŒ   )Ú(Ú)r   ra   r¢   r£   r‹   z Currently list is not supported.)Úcountr±   rž   )rd   rW   Úbracketr½   s       rZ   r¬   zMathematicaParser._check_inputï  sh   € ã;ˆGØ�w‰w�w˜q‘zÓ" a§g¡g¨g°a©jÓ&9Ó9Ø7×>Ñ>ÀÐ>ÓC�Ü  “oÐ%ð <ð
 �!‰8Ø4ˆCÜ˜S“/Ð!ð r\   c                ó"  — | j                  |«       | j                  |d«      }| j                  |d«      }| j                  |d«      }| j                  |d«      }| j                  |«      }| j                  |d«      }| j                  |d«      }|S )NrŽ   r‰   r�   r�   rŠ   r‘   )r¬   r­   r®   rË   )rŸ   rW   s     rZ   rV   zMathematicaParser._parse_oldú  s›   € à×Ñ˜!Ôð ×Ñ˜a Ó.ˆð �M‰M˜!˜SÓ!ˆð ×Ñ˜a Ó*ˆØ×Ñ˜a Ó*ˆð ×"Ñ" 1Ó%ˆð �M‰M˜!˜SÓ!ˆð ×Ñ˜a Ó&ˆð ˆr\   c                ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S rz   )Ú_from_mathematica_to_tokensÚ_from_tokens_to_fullformlistÚ_from_fullformlist_to_sympy)rŸ   rW   Ús2Ús3Ús4s        rZ   r^   zMathematicaParser.parse  s7   € Ø×-Ñ-¨aÓ0ˆØ×.Ñ.¨rÓ2ˆØ×-Ñ-¨bÓ1ˆØˆ	r\   ÚInfixÚPrefixÚPostfixÚFlatÚRightÚLeftÚ;c                óL   — t        | t        «      r| r| d   dk(  r| dgz   S d| dgS )Nr   ÚCompoundExpressionÚNull)rk   Úlist©rÂ   s    rZ   Ú<lambda>zMathematicaParser.<lambda>%  sM   € ¼
À1ÄdÔ8KÑPQÐVWÐXYÑVZÐ^rÒVr¨¨V¨H©ð  )Zð  zNð  PQð  SYð  yZð  )Zr\   rø   ÚSetÚ
SetDelayedÚAddToÚSubtractFromÚTimesByÚDivideBy)Ú=z:=z+=z-=z*=z/=z//c                ó
   — | |gS rz   re   ©rÂ   Úys     rZ   rü   zMathematicaParser.<lambda>(  s   € ¨1¨a©&r\   Ú&r>   z/.Ú
ReplaceAllÚRuleÚRuleDelayed)z->z:>z/;Ú	Conditionr§   ÚAlternativesÚRepeatedÚRepeatedNull)z..z...z||rG   z&&rH   Ú!ÚNotÚSameQÚUnsameQ)z===z=!=ÚEqualÚUnequalÚ	LessEqualÚLessÚGreaterEqualÚGreater)z==z!=z<=Ú<z>=Ú>z;;ÚSpanÚPlus©Ú+Ú-ÚTimes)r�   Ú/Ú.ÚDotc                ó,   — t         j                  | «      S rz   )rU   Ú_get_negrû   s    rZ   rü   zMathematicaParser.<lambda>8  s   € Ô'8×'AÑ'AÀ!Ô'Dr\   c                ó   — | S rz   re   rû   s    rZ   rü   zMathematicaParser.<lambda>9  s   € ¡qr\   )r  r  rŠ   ÚPowerÚApplyÚMapÚMapAllc                ó   — d| |ddggS )Nr(  ÚListÚ1re   r  s     rZ   rü   zMathematicaParser.<lambda>;  s   € ÐZaÐcdÐfgÐjpÐruÐivÑYwr\   )z@@z/@z//@z@@@Ú
DerivativeÚ	FactorialÚ
Factorial2Ú	Decrement)Ú'r  z!!z--c                ó   — | g|¢S rz   re   r  s     rZ   rü   zMathematicaParser.<lambda>=  s
   € ¨!¨¨a©r\   c                ó   — d| g|¢S )NÚPartre   r  s     rZ   rü   zMathematicaParser.<lambda>=  s   € ÀfÈaÀ_ÐRSÁ_r\   )r‡   ú[[c                ó   — dg| ¢S )Nr,  re   rû   s    rZ   rü   zMathematicaParser.<lambda>>  s
   € ¨ |°¡|r\   c                ó   — | d   S )Nr   re   rû   s    rZ   rü   zMathematicaParser.<lambda>>  s   € ÀAÀaÂDr\   )r‹   rä   Ú?ÚPatternTestc                ó   — d| dggS ©NÚPatternÚBlankre   rû   s    rZ   rü   zMathematicaParser.<lambda>A  s   € ˜I q¨7¨)Ñ4r\   c                ó   — dd| dgggS )NÚOptionalr=  r>  re   rû   s    rZ   rü   zMathematicaParser.<lambda>B  s   € ˜Z¨)°Q¸¸	Ð)BÑCr\   c                ó   — d| dggS )Nr=  ÚBlankSequencere   rû   s    rZ   rü   zMathematicaParser.<lambda>C  s   € ˜Y¨¨OÐ+<Ñ=r\   c                ó   — d| dggS )Nr=  ÚBlankNullSequencere   rû   s    rZ   rü   zMathematicaParser.<lambda>D  s   € ˜i¨Ð-@Ð,AÑBr\   )Ú_z_.Ú__Ú___rE  c                ó   — d| d|ggS r<  re   r  s     rZ   rü   zMathematicaParser.<lambda>F  s   € ¨)°Q¸À!¸Ñ)Er\   rb   ÚSlotSequence)Ú#z##z7list[tuple[str, str | None, dict[str, str | Callable]]]Ú_mathematica_op_precedencec                 ó
   — ddgS )Nrb   r-  re   re   r\   rZ   rü   zMathematicaParser.<lambda>K  s   € �f˜c‘]r\   c                 ó
   — ddgS )NrI  r-  re   re   r\   rZ   rü   zMathematicaParser.<lambda>L  s	   € �~ sÑ+r\   z[A-Za-z][A-Za-z0-9]*z (?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+))rä   r‡   r6  r‹   )rå   rˆ   ú]]rŒ   c                ó~   — t        |t        «      r)t        j                  t        j
                  |«      rd|› �S dd|gS )Nr  r   ú-1)rk   Ústrr·   ÚmatchrU   Ú_number©rd   rÂ   s     rZ   r%  zMathematicaParser._get_negU  s;   € ä$ Q¬Ô,´·±Ô:K×:SÑ:SÐUVÔ1W��1�#ˆwÐoÐ^eÐgkÐmnÐ]oÐor\   c                ó   — d|dgS )Nr'  rP  re   rT  s     rZ   Ú_get_invzMathematicaParser._get_invY  s   € à˜˜DÐ!Ð!r\   c                ó0  — | j                   �| j                   S | j                  | j                  g}| j                  d d  | j                  d d  z   }| j
                  D ]  \  }}}|D ]  }|j                  |«       Œ Œ  |j                  d„ ¬«       |j                  t        t        j                  |«      «       |j                  d«       |j                  d«       t        j                  ddj                  |«      z   dz   «      }|| _         | j                   S )Nc                ó   — t        | «       S rz   )rg   rû   s    rZ   rü   z2MathematicaParser._get_tokenizer.<locals>.<lambda>h  s
   € ¬#¨a«&©r\   )rÁ   rÍ   Ú
rä   r§   rå   )Ú_regex_tokenizerÚ_literalrS  Ú_enclosure_openÚ_enclosure_closerK  rÔ   ÚsortÚextendÚmapr·   Úescaper¸   rµ   )rŸ   ÚtokensÚtokens_escapeÚtypÚstratÚsymdictÚkÚ	tokenizers           rZ   Ú_get_tokenizerz MathematicaParser._get_tokenizer_  sô   € Ø× Ñ Ð,à×(Ñ(Ð(Ø—-‘- §¡Ð.ˆØ×,Ñ,©QÐ/°$×2GÑ2GÉÐ2JÑJˆØ#'×#BÔ#BÑˆC�˜Û�Ø×$Ñ$ QÕ'ñ ð $Cð 	×ÑÑ0ÐÔ1Ø�‰”cœ"Ÿ)™) ]Ó3Ô4Ø�‰�cÔØ�‰�dÔÜ—J‘J˜s S§X¡X¨fÓ%5Ñ5¸Ñ;Ó<ˆ	Ø )ˆÔØ×$Ñ$Ð$r\   c                óø  — | j                  «       }g }	 |j                  d«      }|dk(  r t        |«      dkD  r|j                  |«       nŠt	        j
                  d||dz   d  «      }|€t        d«      ‚||j                  «       z   dz   }|dkD  r|j                  |d | «       |j                  d||dz   | j                  dd«      g«       ||dz   d  }ŒÀt        |«      D ]h  \  }}t        |t        «      rŒ	 |j                  d	«      }	|	dk(  rn5|j                  d
«      }
|
dk(  s|
|	k  rt        d«      ‚|d |	 ||
dz   d  z   }ŒL|||<   Œj |D �cg c]6  }t        |t        «      r!|j                  «       r|j                  |«      n|g‘Œ8 }}|D ��cg c]  }|D ]  }|‘Œ Œ }}}|r$|d   dk(  r|j                  d«       |r	|d   dk(  rŒ|r$|d   dk(  r|j                  d«       |r	|d   dk(  rŒ|S c c}w c c}}w )NÚ"r¥   r   z(?<!\\)"ra   z"mismatch in string "  " expressionÚ_Strz\"z(*z*)zmismatch in comment (*  *) coderf   rY  )ri  Úfindrg   rÔ   r·   r°   rn   r´   rÝ   rm   rk   rú   rQ  ÚisasciiÚfindallrÕ   )rŸ   Úcoderh  Úcode_splitsÚstring_startÚ	match_endÚ
string_endru   Ú
code_splitÚpos_comment_startÚpos_comment_endÚtoken_listsÚjrb  s                 rZ   rê   z-MathematicaParser._from_mathematica_to_tokensp  sI  € Ø×'Ñ'Ó)ˆ	ð )+ˆØØŸ9™9 T›?ˆLØ˜rÒ!Ü�t“9˜q’=Ø×&Ñ& tÔ,ØÜŸ	™	 +¨t°LÀ±N°OÐ/DÓEˆIØÐ Ü!Ð"FÓGÐGØ%¨	¯©Ó(9Ñ9¸AÑ=ˆJØ˜aÒØ×"Ñ" 4¨¨Ð#6Ô7Ø×Ñ ¨¨\¸!©^¸JÐ(G×(OÑ(OÐPUÐWZÓ([Ð\Ô]Ø˜
 1™˜Ð&ˆDð ô  ' {Ö3‰MˆAˆzÜ˜*¤dÔ+ØØØ$.§O¡O°DÓ$9Ð!Ø$¨Ò*ØØ",§/¡/°$Ó"7�Ø" bÒ(¨OÐ>OÒ,OÜ%Ð&GÓHÐHØ'Ð(:Ð):Ð;¸jÈÐYZÑIZÐI[Ð>\Ñ\�
ð ð (ˆK˜ŠNð 4ñ epÓpÑdoÐ_`¬z¸!¼SÔ/AÀaÇiÁiÄk�y×(Ñ(¨Ô+ÐXYÐWZÑZÐdoˆÐpÙ(Ô4™[˜³!¨Q’!°!�!˜[ˆÑ4ñ ˜ ™ dÒ*Ø�J‰J�qŒMñ ˜ ™ dÓ*ñ ˜ ™ tÒ+Ø�J‰J�rŒNñ ˜ ™ tÓ+ð ˆùò qùÛ4s   Å;G1ÆG6c                ó°   — t        |t        «      ryt        j                  | j                  |«      ryt        j                  d| j
                  z   |«      ryy)NFz-?T)rk   rú   r·   rR  r[  rS  ©rŸ   Útokens     rZ   Ú_is_opzMathematicaParser._is_opŸ  sA   € Ü�eœTÔ"ØÜ�8‰8�D—M‘M 5Ô)ØÜ�8‰8�D˜4Ÿ<™<Ñ'¨Ô/ØØr\   c                ó0   — |dv ry| j                  |«       S )N)rå   rŒ   T©r}  r{  s     rZ   Ú_is_valid_star1z!MathematicaParser._is_valid_star1¨  ó   € Ø�JÑØØ—;‘;˜uÓ%Ð%Ð%r\   c                ó0   — |dv ry| j                  |«       S )N)rä   r‹   Tr  r{  s     rZ   Ú_is_valid_star2z!MathematicaParser._is_valid_star2­  r�  r\   c                ón  — g g}g }d}|t        |«      k  �rs||   }|| j                  v r8|d   j                  |«       |j                  |«       |j                  g «       �n|dk(  rZt        |d   «      dk(  r|d   d   |d   k(  rt        d|d   z  «      ‚| j	                  |d   «      |d<   |j                  g «       �n´|| j
                  v �r‘| j
                  j                  |«      }| j                  |   |d   k7  rt        d«      }|dk(  rm|d   dk(  re|d   dk(  r|j                  |d	z   d
«       nI|d   dk(  rA||d	z      d
k(  r	d||d	z   <   n-||d	z      dk(  rd||d	z   <   |j                  |dz   d
«       n|‚|‚t        |d   «      dk(  r|d   d   dk(  rt        d«      ‚| j	                  |d   d«      }||d<   g }	|d   d   |d   k7  r.|	j                  |j                  «       «       |d   d   |d   k7  rŒ.|	j                  «        |d   dk(  r%t        |	«      d	k7  rt        dt        |	«      z  «      ‚|d   j                  |	«       |j                  d«       n|d   j                  |«       |d	z  }|t        |«      k  r�Œst        |«      d	k7  rt        d«      ‚| j	                  |d   «      S )Nr   r¥   rÍ   éþÿÿÿz %s cannot be followed by comma ,zunmatched enclosurerN  r‡   ra   rˆ   r6  rf   rä   z( ) not valid syntaxTz1( must be followed by one expression, %i detectedz"Stack should have only one element)rg   r\  rÔ   rn   Ú_parse_after_bracesr]  ÚindexÚinsertrÕ   ÚreverseÚRuntimeError)
rŸ   rb  ÚstackÚopen_seqÚpointerr|  ÚindÚunmatched_enclosureÚ
last_stackÚnew_stack_elements
             rZ   rë   z.MathematicaParser._from_tokens_to_fullformlist²  sè  € Ø˜DˆØˆØˆØœ˜F›Ó#Ø˜7‘OˆEØ˜×,Ñ,Ñ,Ø�b‘	× Ñ  Ô'Ø—‘ Ô&Ø—‘˜RÖ Ø˜#’Ü�u˜R‘y“> QÒ&¨5°©9°R©=¸HÀR¹LÒ+HÜ%Ð&HÈ8ÐTVÉ<Ñ&WÓXÐXØ ×4Ñ4°U¸2±YÓ?��b‘	Ø—‘˜RÖ Ø˜$×/Ñ/Ò/Ø×+Ñ+×1Ñ1°%Ó8�Ø×'Ñ'¨Ñ,°¸±Ò<Ü*5Ð6KÓ*LÐ'Ø ’}¨°"©¸Ò)<Ø# B™<¨3Ò.ð
 #ŸM™M¨'°!©)°SÕ9Ø% b™\¨TÒ1Ø% g¨a¡iÑ0°CÒ7Ø48  w¨q¡yÒ 1Ø!'¨°©	Ñ!2°dÒ!:Ø48  w¨q¡yÑ 1Ø &§¡¨g°a©i¸Õ =à&9Ð 9à1Ð1Ü�u˜R‘y“> QÒ&¨5°©9°R©=¸CÒ+?Ü%Ð&<Ó=Ð=Ø!×5Ñ5°e¸B±iÀÓF�
Ø&��b‘	Ø$&Ð!Ø˜B‘i ‘m x°¡|Ò3Ø%×,Ñ,¨U¯Y©Y«[Ô9ð ˜B‘i ‘m x°¡|Ó3à!×)Ñ)Ô+Ø˜B‘< 3Ò&¬3Ð/@Ó+AÀQÒ+FÜ%Ð&YÔ\_Ð`qÓ\rÑ&rÓsÐsØ�b‘	× Ñ Ð!2Ô3Ø—‘˜RÕ à�b‘	× Ñ  Ô'Ø�q‰LˆGð] œ˜F›Ô#ô^ ˆu‹:˜Š?ÜÐCÓDÐDØ×'Ñ'¨¨a©Ó1Ð1r\   c                ó  — d}t        |«      }||k  rÑ||   }|dk(  r»|r|j                  |«       |dz  }Œ(|dk(  r|j                  d«       |dz  }ŒD|dkD  r	 | j                  |d | |«      }n|d   }t        |«      dkD  r|d   dk(  r|j	                  |dd  «       n|j                  |«       t        |«      D ]  }|j                  d«       Œ ||z  }d}ŒÊ|dz  }||k  rŒÐy y # t        $ r |j                  |«       |dz  }Y Œøw xY w)Nr   rY  ra   rø   )rg   rÕ   r†  rn   r_  rÔ   Úrange)	rŸ   Úlinesrb  Úinside_enclosurer�  Úsizer|  Ú	prev_exprru   s	            rZ   Ú_util_remove_newlinesz'MathematicaParser._util_remove_newlinesé  s,  € ØˆÜ�6‹{ˆØ˜ŠnØ˜7‘OˆEØ˜Š}Ù#à—J‘J˜wÔ'Ø˜A‘I�DØØ˜a’<Ø—J‘J˜q”MØ˜A‘I�DØØ˜Q’;ð!Ø$(×$<Ñ$<¸VÀHÀWÐ=MÐO_Ó$`™	ð !' q¡	�IÜ�y“> AÒ%¨)°A©,Ð:NÒ*NØ—L‘L ¨1¨2 Õ/à—L‘L Ô+Ü˜wž�AØ—J‘J˜q•Mð (à˜‘�Ø�ØØ�q‰LˆGð= ˜�nøô 'ò !ØŸ
™
 7Ô+Ø ™	˜Ù ð!ús   ÁC% Ã%DÄDc                ó  — t        |«      }d}||k  rw|dkD  rf| j                  ||dz
     «      rO| j                  ||   «      r;||   dk(  rd||<   ||dz      d   ||dz   <   n|j                  |d«       |dz  }|dz  }|dz  }||k  rŒvy y )Nr   ra   rä   r�   )rg   r€  rƒ  rˆ  )rŸ   rb  r–  r�  s       rZ   Ú_util_add_missing_asterisksz-MathematicaParser._util_add_missing_asterisks  s¬   € Ü˜“KˆØˆØ˜ŠnØ˜!’Ø×(Ñ(¨°¸!±Ñ)<Ô=Ø×(Ñ(¨°©Ô9ð
 ˜'‘? cÒ)à&)�F˜7‘OØ*0°¸1±Ñ*=¸aÑ*@�F˜7 Q™;Ò'à—M‘M '¨3Ô/Ø˜q‘L�GØ˜A‘I�DØ�q‰LˆGð! ˜�nr\   c                ó8  — d}g }| j                  |||«       t        | j                  «      D �]î  \  }}}d|v r| j                  |«       t	        |«      }d}	|	|k  sŒ0||	   }
t        |
t        «      �r�|
|v �r˜||
   }t        |t        «      r|g}d}ng }d}|
dv r1|| j                  k(  r"|	dkD  r| j                  ||	dz
     «      s|	dz  }	Œu|| j                  k(  rA|	dk(  s6|	|dz
  k(  s.| j                  ||	dz
     «      s| j                  ||	dz      «      r|	dz  }	ŒÅd}|||	<   || j                  k(  �r~|j                  |	dz
  «      }|j                  |	«      }|
dk(  r| j                  |«      }n|
dk(  r| j                  |«      }|	dz  }	|d	z  }|j                  |«       |}|| j                  k(  r¿|	d	z   |k  r¤| j                  ||	dz      |
«      rŒ|j                  |«       |j                  |	dz   «      }|j                  |	dz   «      }|dk(  r| j                  |«      }n|dk(  r| j                  |«      }|d	z  }|	d	z   |k  r| j                  ||	dz      |
«      rŒŒ|j                  |«       �n:|| j                   k(  r|	d	z   |k  rd||	dz      |
k(  rY|j                  ||g«       |d
   }|j                  |	dz   «       |j                  |	dz   «      }|d	z  }|	d	z   |k  r||	dz      |
k(  rŒY|j                  |«       �n¬|| j"                  k(  r’|	dz   |k  rw||	dz      |
k(  rlt        |t        «      r|||   |g||<   n |||   |«      ||<   |j                  |	dz   «       |j                  |	dz   «      }|d	z  }|	dz   |k  r||	dz      |
k(  rŒl|j                  |«       �n|j                  |«       nù|| j                  k(  rm|�t%        d«      ‚|	|dz
  k(  s| j                  ||	dz      «      r | j&                  |
   «       ||	<   n¦|j                  |j                  |	dz   «      «       |dz  }n}|| j(                  k(  rn|�t%        d«      ‚|	dk(  s| j                  ||	dz
     «      r | j&                  |
   «       ||	<   n-|j                  |j                  |	dz
  «      «       |	dz  }	|dz  }t        |t*        «      rVt-        j.                  t*        |«      } ||Ž }|j1                  «        t        |t2        «      r|j5                  |«       n|||	<   |	dz  }	|	|k  r�Œ¿�Œñ t	        |«      dkD  st	        |«      dk(  r-t	        |«      dk(  r|r| j7                  ||«      S t9        d«      ‚t	        |«      dkD  r!|d   r|d   d   dk(  r|d   dd  }dg|¢|¢}|S |d   S )NFr�   r   ra   r  Tr!  r  rf   r¥   z1'Prefix' op_type should not have a grouping stratz0unable to create a single AST for the expressionrø   )r˜  ÚreversedrK  rš  rg   rk   rQ  ÚPREFIXr}  ÚINFIXrÕ   rV  r%  rÔ   ÚFLATÚ_check_op_compatibleÚRIGHTÚLEFTÚ	TypeErrorÚ_missing_arguments_defaultÚPOSTFIXr   ÚtypingÚcastÚclearrú   r_  r†  rn   )rŸ   rb  r•  Úchangedr”  Úop_typeÚgrouping_stratÚop_dictr–  r�  r|  Úop_nameÚnodeÚfirst_indexÚarg1Úarg2Únode_pÚother_opÚop_callÚnew_nodeÚcompound_expressions                        rZ   r†  z%MathematicaParser._parse_after_braces!  s  € àˆØˆà×"Ñ" 5¨&Ð2BÔCä08¸×9XÑ9X×0YÑ,ˆG�^ WØ�g‰~Ø×0Ñ0°Ô8Ü˜F›ˆDØˆGØ˜D“.Ø˜w™�Ü˜e¤SÕ)¨e°wÒ.>Ø.5°e©n�Gô " '¬3Ô/Ø '˜y˜Ø&'™à!˜Ø&'˜Ø 
Ñ*¨w¸$¿+¹+Ò/EÈ'ÐTUÊ+Ð^b×^iÑ^iÐjpÐqxÐ{|Ñq|Ñj}Ô^~ð   1™˜Ø Ø $§*¡*Ò,Ø" aš<¨7°d¸Q±hÒ+>À$Ç+Á+ÈfÐU\Ð_`ÑU`ÑNaÔBbÐfj×fqÑfqÐrxð  zAð  DEñ  zEñ  sFô  gGØ# q™L˜GØ$Ø"�GØ&*�F˜7‘OØ $§*¡*Ó,Ø%Ÿz™z¨'°!©)Ó4˜Ø%Ÿz™z¨'Ó2˜Ø  Cš<Ø#'§=¡=°Ó#6™DØ" cš\Ø#'§=¡=°Ó#6˜DØ 1™˜Ø ™	˜ØŸ™ DÔ)Ø!%˜Ø)¨T¯Y©YÒ6Ø")¨A¡+°Ò"4¸×9RÑ9RÐSYÐZaÐbcÑZcÑSdÐfkÔ9lØ &§¡¨dÔ 3Ø+1¯:©:°g¸a±iÓ+@ Ø'-§z¡z°'¸!±)Ó'< Ø#+¨s¢?Ø+/¯=©=¸Ó+>¡DØ%-°¢_Ø+/¯=©=¸Ó+> DØ $¨¡	 ð #*¨A¡+°Ò"4¸×9RÑ9RÐSYÐZaÐbcÑZcÑSdÐfkÕ9lð #ŸM™M¨$Ö/Ø+¨t¯z©zÒ9Ø")¨A¡+°Ò"4¸ÀÈÁ	Ñ9JÈeÒ9SØ &§¡¨w¸¨oÔ >Ø)/°© Ø &§
¡
¨7°1©9Ô 5Ø'-§z¡z°'¸!±)Ó'< Ø $¨¡	 ð #*¨A¡+°Ò"4¸ÀÈÁ	Ñ9JÈeÓ9Sð #ŸM™M¨$Ö/Ø+¨t¯y©yÒ8Ø")¨A¡+°Ò"4¸ÀÈÁ	Ñ9JÈeÒ9SÜ#-¨g´sÔ#;Ø;BÀFÈ;ÑDWÐY]Ð:^ F¨;Ò$7á:AÀ&ÈÑBUÐW[Ó:\ F¨;Ñ$7Ø &§
¡
¨7°1©9Ô 5Ø'-§z¡z°'¸!±)Ó'< Ø $¨¡	 ð #*¨A¡+°Ò"4¸ÀÈÁ	Ñ9JÈeÓ9Sð #ŸM™M¨$Ö/à ŸK™K¨Õ-Ø  D§K¡KÒ/Ø)Ð5Ü"+Ð,_Ó"`Ð`Ø" d¨Q¡hÒ.°$·+±+¸fÀWÈqÁ[Ñ>QÔ2RØ.T¨d×.MÑ.MÈeÑ.TÓ.V˜F 7šOà ŸK™K¨¯
©
°7¸1±9Ó(=Ô>Ø  A™I™DØ  D§L¡LÒ0Ø)Ð5Ü"+Ð,_Ó"`Ð`Ø" aš<¨4¯;©;°v¸gÈ¹kÑ7JÔ+KØ.T¨d×.MÑ.MÈeÑ.TÓ.V˜F 7šOà ŸK™K¨¯
©
°7¸1±9Ó(=Ô>Ø# q™L˜GØ  A™I˜DÜ! '¬8Ô4Ü,2¯K©K¼À'Ó,J˜Ù#*¨D >˜ØŸ
™
œÜ% h´Ô5Ø ŸK™K¨Õ1à.6˜F 7™OØ˜1‘�ðu ˜D–.ð 1Zô@ ˆv‹;˜Š?œs 5›z¨Qš´3°v³;À!Ò3CÙð ×/Ñ/°Ð8HÓIÐIÜÐPÓQÐQÜˆu‹:˜Š>Ø�aŠy˜V A™Y q™\Ð-AÒAØ ™ 1 2˜�Ø#7Ð"I¸%Ð"IÀ&Ð"IÐØ&Ð&Ø�a‰yÐr\   c                óD   — ||k(  ryddh}ddh}||v r||v ry||v r||v ryy)NTr�   r!  r  r  Fre   )rŸ   Úop1Úop2ÚmuldivÚaddsubs        rZ   r   z&MathematicaParser._check_op_compatibleš  sA   € Ø�#Š:ØØ�s�ˆØ�s�ˆØ�&‰=˜S F™]ØØ�&‰=˜S F™]ØØr\   c                ó€  — g }|g}t        j                  d|«      }d}|D �]  }|€ |d   S |j                  «       }||| j                  dd«      j                  dd«      j                  dd«      j	                  «       }|j                  «       dk(  r|dk7  r‘|d   j                  |«       n||j                  «       dk(  r*|dk7  r|d   j                  |«       |j                  «        n?|j                  «       dk(  r,|d   j                  |g«       |j                  |d   d   «       |j                  «       }�Œ |d   S )zH
        Parses FullForm[Downvalues[]] generated by Mathematica
        z[\[\],]r   rÍ   r~   rˆ   r‡   r¥   )	r·   Úfinditerr´   rÝ   Ústripr²   rÔ   rÕ   r¿   )	rŸ   ÚwmexprÚoutr‹  Ú	generatorÚlast_posrR  ÚpositionÚ	last_exprs	            rZ   Ú_from_fullform_to_fullformlistz0MathematicaParser._from_fullform_to_fullformlist¥  s1  € ð ˆØ�ˆÜ—K‘K 
¨FÓ3ˆ	ØˆÜˆEØˆ}Øð �1‰vˆð —{‘{“}ˆHØ˜x¨Ð1×9Ñ9¸#¸rÓB×JÑJÈ3ÐPRÓS×[Ñ[Ð\_ÐacÓd×jÑjÓlˆIà�{‰{‹} Ò#Ø ’?Ø˜"‘I×$Ñ$ YÕ/Ø—‘“ #Ò%Ø ’?Ø˜"‘I×$Ñ$ YÔ/Ø—	‘	•Ø—‘“ #Ò%Ø�b‘	× Ñ  ) Ô-Ø—‘˜U 2™Y r™]Ô+Ø—y‘y“{ŠHð! ð" �1‰vˆr\   c                ó6   ‡‡‡— ddl mŠmŠ ˆˆˆfd„Š ‰|«      S )Nr   )r>   ÚSymbolc                óö   •— t        | t        «      rAt        | «      dkD  r(| d   }| dd  D �cg c]
  } ‰|«      ‘Œ }}  ‰|«      |Ž S t        d«      ‚t        | t        «      r ‰| «      S t        | «      S c c}w )Nr   ra   zEmpty list of expressions)rk   rú   rg   rž   rQ  rN   )ÚexprÚheadro   ri   r>   rÇ  Ú	converters       €€€rZ   rË  zHMathematicaParser._from_fullformlist_to_fullformsympy.<locals>.converterÃ  s€   ø€ Ü˜$¤Ô%Ü�t“9˜q’=Ø ™7�DØ6:¸1¸2±hÓ?±h¨s™I c�N°h�DÐ?Ø)™8 D›>¨4Ð0Ð0ä$Ð%@ÓAÐAÜ˜D¤#Ô&Ù˜d“|Ð#ä “~Ð%ùò @s   ¬A6)Úsympyr>   rÇ  )rŸ   Úpylistr>   rÇ  rË  s     @@@rZ   Ú#_from_fullformlist_to_fullformsympyz5MathematicaParser._from_fullformlist_to_fullformsympyÀ  s   ú€ ß*ö	&ñ ˜Ó Ð r\   r
   ÚLogc                 ó$   — t        t        | «      Ž S rz   )r   rœ  ©rq   s    rZ   rü   zMathematicaParser.<lambda>×  s   € œ#œx¨›{Ñ+r\   ÚLog2c                ó   — t        | d«      S ©Nrf   ©r   rû   s    rZ   rü   zMathematicaParser.<lambda>Ø  s
   € œ#˜a œ)r\   ÚLog10c                ó   — t        | d«      S )Né
   rÕ  rû   s    rZ   rü   zMathematicaParser.<lambda>Ù  s
   € œ3˜q "œ:r\   ÚExpÚSqrtr€   r�   r‚   rƒ   r„   r…   ÚArcSinÚArcCosÚArcTanc                 óP   — t        | «      dk(  rt        t        | «      Ž S t        | Ž S rÔ  )rg   r*   rœ  r)   rÑ  s    rZ   rü   zMathematicaParser.<lambda>æ  s#   € ´C¸³F¸a²KœU¤H¨Q£KÐ0ÐMÄTÈ1ÀXÐMr\   ÚArcCotÚArcSecÚArcCscÚSinhÚCoshÚTanhÚCothÚSechÚCschÚArcSinhÚArcCoshÚArcTanhÚArcCothÚArcSechÚArcCschÚExpandÚImÚReÚFlattenÚPolylogÚCancelÚ
TrigExpandÚSignÚSimplifyÚDeferÚIdentityrù   c                 ó"   — t         j                  S rz   )r(   ÚZerorÑ  s    rZ   rü   zMathematicaParser.<lambda>  s   € œ1Ÿ6š6r\   r+   r,   r-   Ú
PochhammerÚExpIntegralEiÚSinIntegralÚCosIntegralÚAiryAiÚAiryAiPrimeÚAiryBiÚAiryBiPrimeÚLogIntegralÚPrimePiÚPrimeÚPrimeQr,  )r?   r‘   c                ó"   ‡ ‡— ˆˆ fd„Š ‰|«      S )Nc                óD  •— t        | t        «      rft        | d   t        «      r ‰| d   «      }n+‰j                  j                  | d   t	        | d   «      «      } || dd  D �cg c]
  } ‰|«      ‘Œ c}Ž S ‰j
                  j                  | t        | «      «      S c c}w )Nr   ra   )rk   rú   Ú_node_conversionsÚgetr>   Ú_atom_conversionsrM   )rÉ  rÊ  ro   ÚrecurserŸ   s      €€rZ   r  z>MathematicaParser._from_fullformlist_to_sympy.<locals>.recurse,  s•   ø€ Ü˜$¤Ô%Ü˜d 1™g¤tÔ,Ù" 4¨¡7Ó+‘Dà×1Ñ1×5Ñ5°d¸1±g¼xÈÈQÉÓ?PÓQ�DÙ°d¸1¸2±hÓ?±h¨s™g c�l°hÑ?Ð@Ð@à×-Ñ-×1Ñ1°$¼À»ÓFÐFùò @s   Á%Bre   )rŸ   Úfull_form_listr  s   ` @rZ   rì   z-MathematicaParser._from_fullformlist_to_sympy*  s   ù€ õ	Gñ �~Ó&Ð&r\   c                ó„   — |}| j                   j                  «       D ]   \  }}|j                  t        |«      |«      }Œ" |S rz   )r	  r«   rÝ   r>   )rŸ   ÚmformrÉ  Úmma_formÚ
sympy_nodes        rZ   Ú_from_fullformsympy_to_sympyz.MathematicaParser._from_fullformsympy_to_sympy8  s@   € àˆØ$(×$:Ñ$:×$@Ñ$@Ö$BÑ ˆH�jØ—<‘<¤¨Ó 2°JÓ?‰Dð %Càˆr\   rz   )rp  rQ  )r|  z
str | listÚreturnÚbool)rb  rú   )r”  rú   rb  rú   r•  r  )F)rb  rú   r•  r  )r¸  rQ  r¹  rQ  )r¿  rQ  )rÍ  rú   )†Ú__name__Ú
__module__Ú__qualname__Ú__doc__r—   r   ÚarcÚtrir†   r»   Úlowerr©   r˜   rÜ   r·   r¸   r¹   rá   r¯   ÚARG_MTRX_PATTERNr¶   r’   Ú__annotations__r“   r”   Úclassmethodr{   r    r–   rË   rÇ   r³   r®   r­   r¬   rV   r^   rž  r�  r¥  rŸ  r¡  r¢  rK  r¤  r[  rS  r\  r]  r%  rV  rZ  ri  rê   r}  r€  rƒ  rë   r˜  rš  r†  r   rÅ  rÎ  r   r   r	   r
   r   r   r   r   r   r8   r9   r:   r   r   r   r   r   r   r   r   r=   r<   r;   r   r   r   r   r   r   r   r    rÌ  r!   r"   r#   r$   r%   r&   r'   r(   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   rO   rP   r5   r6   r7   rA   rC   rB   rD   rE   rF   rG   rH   rx   r	  r?   r@   r  rì   r  re   r\   rZ   rU   rU   n   sæ	  … ñð(Ø�9ðà˜ðð 	�(ðð 	�(ð	ð
 	�Jðð 	�:ðð 	�Kðð 	�Jðð 	�9ðð 	�9ðð 	˜)ðð 	�lðð 	˜Gðð 	˜'ðð 	˜'ðð  	�[ð!ð" 	Ð*ð#ð$ !Ø*Ø!Ø"ØØ!ò/€Oñ6 ˜{ð -6Ø7@öB‰ˆˆS�!à�3‰Y˜‰]˜UÑ"ˆÙØ�s—y‘y“{Ñ" QÑ&¨Ñ.‰Bà—‘“˜q‘ 5Ñ(ˆBØ×Ñ  B˜xÕ(ðBð ØØØñ	€Lð ˆB�J‰Jð ð —Z‘Zó	!ð
 ðð ˆB�J‰Jð ð —Z‘Zó	!ð
 ðð ˆB�J‰Jð ð —Z‘Zó	!ð
 ðð ˆB�J‰Jð ð —Z‘Zó!ð ðñ;&€EðR �—‘ð ð —Z‘Zó!€Jð "�r—z‘zð #à—Z‘Zó!Ðð
Ðð ;=€LÐ7Ó<ð =?€NÐ9Ó>ð =?€NÐ9Ó>àñ#ó ð#ô
@ð0 ñ=ó ð=ò~%òN@ðD ñ#ó ð#ðJ ñó ðð
 ñó ðð ñ"ó ð"òò:ð €EØ€FØ€GØ€DØ€EØ€Dð 
�$˜ñ  Zð  [ð  	\Ø	��sÐ0Ð1Ð2Ø	�˜U¨,¸gÈ^ÐclÐt~Ñð  	AØ	��tÑ0Ð1Ð2Ø	�$˜˜jÐ)Ð*Ø	��t˜\Ð*Ð+Ø	�˜f¨MÑ:Ð;Ø	��t˜[Ð)Ð*Ø	��s˜NÐ+Ð,Ø	�$˜z°.ÑAÐBØ	��t˜T�lÐ#Ø	��t˜U�mÐ$Ø	�˜˜U�|Ð$Ø	�˜g¨iÑ8Ð9Ø	�˜W¨I¸[ÈvÐ]kÐr{Ñ|Ð}Ø	��t˜V�nÐ%Ø	�˜F¨Ñ0Ð1Ø	�˜G¨'Ñ2Ð3Ø	��s˜E�lÐ#Ø	�ÑDÙ(ñ*ð 	+à	�˜˜W�~Ð&Ø	�˜g¨U¸8ÑLwÑxÐyØ	�$˜l°ÀLÐXcÑdÐeØ	�Ñ0Ñ8TÑUÐVØ	�Ñ3¹.ÑIÐJØ	��s˜MÐ*Ð+Ø	�$Ù4ÙCÙ=ÙBñ	
ð 	ð 
��sÑEÐFÐGØ	�˜V¨>Ñ:Ð;ðG$[ÐÐ Wó $ñN #Ù+ñ"Ðð
 '€HØ1€Gâ+€OÚ,Ðàñpó ðpð ñ"ó ð"ð Ðò%ô"-ô^ô&ô
&ô
52ôn!ôFö*wôr	ôô6!ð$QØ�ðQà�ðQð 	�ðQð 	�Hð	Qð
 	Ñ+ðQð 	Ñ#ðQð 	Ñ%ðQð 	ˆsðQð 	�ðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð 	ˆsðQð  	ˆsð!Qð$ 	�$ð%Qð& 	�$ñ'Qð( 	ÑMð)Qð* 	�$ð+Qð, 	�$ð-Qð. 	�$ð/Qð2 	�ð3Qð4 	�ð5Qð6 	�ð7Qð8 	�ð9Qð: 	�ð;Qð< 	�ð=Qð@ 	�5ðAQðB 	�5ðCQðD 	�5ðEQðF 	�5ðGQðH 	�5ðIQðJ 	�5ðKQðN 	�&òOQðP 	ˆbðQQðR 	ˆe�h‰hðSQðT 	�7ðUQðV 	�7ðWQðX 	�&ðYQð\ 	�kð]Qð^ 	�ð_Qð` 	�HðaQðb 	�ðcQðd 	�AðeQðl 	Ñ!ðmQðn 	ˆsðoQðp 	ˆsðqQðr 	ˆsðsQðt 	�bðuQðv 	˜ðwQðx 	�ròyQðz 	�rð{Qð| 	�&ð}Qð~ 	�{ðQð@ 	�&ðAQðB 	�{ðCQðD 	�rðEQðF 	�7ðGQðH 	�ðIQðJ 	�'ðKQðN 	�ðOQðP 	Ð$ðQQðR 	˜ðSQðT 	�ðUQðV 	�XðWQðX 	�ðYQðZ 	ˆbð[Qð\ 	ˆsñ]Qð` 	�OñaQÐðh ØñÐó
'ôr\   rU   rz   )]Ú
__future__r   r·   r¦  Ú	itertoolsr   r   r   rÌ  r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   Úsympy.core.sympifyrM   rN   Úsympy.functions.special.besselrO   Ú'sympy.functions.special.error_functionsrP   Úsympy.utilities.exceptionsrQ   r[   r_   rx   r|   rU   re   r\   rZ   Ú<module>r%     sÃ   ðÝ "Û 	Û Ý ß  ã ÷A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷ A÷
 1Ý 6Ý 6Ý @ó
)ò3òlDò&ð
 ÷Nð Nó ñNr\   