
    \hd                         S SK r S SKrS SKJr  S SKJr  \" S5      r\(       a  S SKJrJrJ	r	  O " S S5      r " S S	5      r " S
 S5      r	 " S S\5      r
g)    N)import_module)LaTeXParsingErrorlark)TransformerTokenTreec                       \ rS rSrS rSrg)r      c                     g N )selfargss     \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/parsing/latex/lark/transformer.py	transformTransformer.transform   s        r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    	r   r   c                       \ rS rSrSrg)r      r   Nr   r   r   r   r   r   r   r   r   r          r   r   c                       \ rS rSrSrg)r      r   Nr   r   r   r   r   r      r   r   r   c                   |   \ rS rSrSr\R                  r\R                  R                  R                  rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S) r2S* r3S+ r4S, r5S- r6S. r7S/ r8S0 r9S1 r:S2 r;S3 r<S4 r=S5 r>S6 r?S7 r@S8 rAS9 rBS: rCS; rDS< rES= rFS> rGS? rHS@ rISA rJSB rKSC rLSD rMSE rNSF rOSG rPSH rQSI rRSJ rSSK rTSL rUSM rVSN rWSO rXSP rYSQ rZSR\[4SS jr\ST r]SU r^SV r_SW r`SX raSY rbSZrcg[)\TransformToSymPyExpr   a  Returns a SymPy expression that is generated by traversing the ``lark.Tree``
passed to the ``.transform()`` function.

Notes
=====

**This class is never supposed to be used directly.**

In order to tweak the behavior of this class, it has to be subclassed and then after
the required modifications are made, the name of the new class should be passed to
the :py:class:`LarkLaTeXParser` class by using the ``transformer`` argument in the
constructor.

Parameters
==========

visit_tokens : bool, optional
    For information about what this option does, see `here
    <https://lark-parser.readthedocs.io/en/latest/visitors.html#lark.visitors.Transformer>`_.

    Note that the option must be set to ``True`` for the default parser to work.
c                 "    [         R                  $ r   )sympyoor   tokenss     r   	CMD_INFTYTransformToSymPyExpr.CMD_INFTY5   s    xxr   c                 d    [         R                  " SSUSS  5      n[        R                  " U5      $ )Nvar    )resubr#   Symbol)r   r&   variable_names      r   GREEK_SYMBOL_WITH_PRIMES-TransformToSymPyExpr.GREEK_SYMBOL_WITH_PRIMES8   s+     ub&*5||M**r   c                     UR                   R                  S5      u  p#UR                  S5      (       a!  [        R                  " U< SUSS < S35      $ [        R                  " U< SU< S35      $ )N_{_{r,   })valuesplit
startswithr#   r/   )r   r&   baser.   s       r   !LATIN_SYMBOL_WITH_LATIN_SUBSCRIPT6TransformToSymPyExpr.LATIN_SYMBOL_WITH_LATIN_SUBSCRIPT?   sU    LL&&s+	>>#<<T3q9 =>><<T3 788r   c                    UR                   R                  S5      u  p#[        R                  " SSUSS  5      nUR	                  S5      (       a!  [
        R                  " U< SUSS < S35      $ [
        R                  " U< SU< S35      $ )	Nr4   r*   r+   r,   r5   r6   r7   r8   r9   r:   r-   r.   r;   r#   r/   r   r&   r<   r.   greek_letters        r   !GREEK_SYMBOL_WITH_LATIN_SUBSCRIPT6TransformToSymPyExpr.GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTF   sm    LL&&s+	vveRab2>>#<<\3q9 EFF<<\3 ?@@r   c                     UR                   R                  S5      u  p#UR                  S5      (       a  USS nOUSS  n[        R                  " SSU5      n[
        R                  " U< SU< S	35      $ )
Nr4   r5      r7   r,   r*   r+   r6   r8   )r9   r:   r;   r-   r.   r#   r/   rA   s        r   !LATIN_SYMBOL_WITH_GREEK_SUBSCRIPT6TransformToSymPyExpr.LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTO   sc    LL&&s+	>>#q9Lqr7LvveR6|||<==r   c                     UR                   R                  S5      u  p#[        R                  " SSUSS  5      nUR	                  S5      (       a  USS nOUSS  n[        R                  " SSU5      n[
        R                  " U< SU< S	35      $ )
Nr4   r*   r+   r,   r5   rF   r7   r6   r8   r@   )r   r&   r<   r.   
greek_base	greek_subs         r   !GREEK_SYMBOL_WITH_GREEK_SUBSCRIPT6TransformToSymPyExpr.GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTZ   s{    LL&&s+	VVE2tABx0
>>#Ab	IABIFF5"i0	||Y?@@r   c                     [        U5      S:X  a  [        R                  " US   5      $ [        U5      S:X  a  [        R                  " US   US   -   5      $ g )N   rF      )lenr#   r/   r%   s     r   multi_letter_symbol(TransformToSymPyExpr.multi_letter_symbolf   sN    v;!<<q	**v;!<<q	F1I 566 r   c                 
   US   R                   S:X  a  [        R                  $ SUS   ;   a,  [        R                  R                  R                  US   5      $ [        R                  R                  R                  US   5      $ )Nr   CMD_IMAGINARY_UNIT.)typer#   IcorenumbersFloatIntegerr%   s     r   numberTransformToSymPyExpr.numberl   sf    !9>>1177N&)::%%++F1I66::%%--fQi88r   c                     US   $ Nr   r   r%   s     r   latex_string!TransformToSymPyExpr.latex_stringu       ayr   c                     US   $ Nr,   r   r%   s     r   group_round_parentheses,TransformToSymPyExpr.group_round_parenthesesx   rc   r   c                     US   $ re   r   r%   s     r   group_square_brackets*TransformToSymPyExpr.group_square_brackets{   rc   r   c                     US   $ re   r   r%   s     r   group_curly_parentheses,TransformToSymPyExpr.group_curly_parentheses~   rc   r   c                 <    [         R                  " US   US   5      $ Nr   rF   )r#   Eqr%   s     r   eqTransformToSymPyExpr.eq       xxq	6!9--r   c                 <    [         R                  " US   US   5      $ ro   )r#   Ner%   s     r   neTransformToSymPyExpr.ne   rs   r   c                 <    [         R                  " US   US   5      $ ro   )r#   Ltr%   s     r   ltTransformToSymPyExpr.lt   rs   r   c                 <    [         R                  " US   US   5      $ ro   )r#   Ler%   s     r   lteTransformToSymPyExpr.lte   rs   r   c                 <    [         R                  " US   US   5      $ ro   )r#   Gtr%   s     r   gtTransformToSymPyExpr.gt   rs   r   c                 <    [         R                  " US   US   5      $ ro   )r#   Ger%   s     r   gteTransformToSymPyExpr.gte   rs   r   c                    [        U5      S:X  a  US   $ [        U5      S:X  ab  US   nUS   nU R                  U5      (       d  U R                  U5      (       a  [        R                  " X#5      $ [        R                  " X#5      $ g )NrF   r,      r   )rQ   _obj_is_sympy_Matrixr#   MatAddAddr   r&   lhrhs       r   addTransformToSymPyExpr.add   sz    v;!!9v;!BB((,,0I0I"0M0M||B++99R$$ r   c                    [        U5      S:X  a5  US   nU R                  U5      (       a  [        R                  " SU5      $ U* $ [        U5      S:X  ay  US   nUS   nU R                  U5      (       d  U R                  U5      (       a,  [        R                  " U[        R                  " SU5      5      $ [        R
                  " X4* 5      $ g )NrF   r,   r7   r   r   )rQ   r   r#   MatMulr   r   )r   r&   xr   r   s        r   r.   TransformToSymPyExpr.sub   s    v;!q	A((++||B**2Iv;!BB((,,0I0I"0M0M||BR(<==99R%% r   c                     US   nUS   nU R                  U5      (       d  U R                  U5      (       a  [        R                  " X#5      $ [        R                  " X#5      $ ro   )r   r#   r   Mulr   s       r   mulTransformToSymPyExpr.mul   sS    AYAY$$R((D,E,Eb,I,I<<''yy  r   c                 2    U R                  US   US   5      $ ro   )_handle_divisionr%   s     r   divTransformToSymPyExpr.div   s    $$VAYq	::r   c                    SSK JnJn  [        US   U5      (       a)  [        US   U5      (       a  SSK Jn  U" US   US   5      $ US   [
        R                  " S5      :X  a
  US   US   4$ [        US   [        5      (       a   [
        R                  " US   US   S   5      $ [
        R                  " US   US   5      $ )Nr   )BraKetr,   )OuterProductd)
sympy.physics.quantumr   r   
isinstancer   r#   r/   tuple
Derivativer   )r   r&   r   r   r   s        r   adjacent_expressions)TransformToSymPyExpr.adjacent_expressions   s     	3fQi%%*VAY*D*D:q	6!955AY%,,s++!9fQi''q	5))##F1Ivay|<<99VAYq	22r   c                    S nS nS nS nUS   n[        U5      S:X  a  US   n[        U5      S:X  a  US   nU R                  U5      (       Ga  W[        R                  " S	5      :X  a  [        R                  " U5      $ U[        R                  " S
5      :X  a  [        R
                  " U5      $ U" U5      (       a6  UR                  n[        U5      S-  S:X  a  U$ [        R                  " U5      $ U" U5      (       aB  UR                  n[        U5      [        S5      -  S-  S:X  a  U$ [        R                  " U5      $ U" U5      (       aD  UR                  n[        U5      S-  S:X  a  UR                  5       $ [        R
                  " U5      $ U" U5      (       aP  UR                  n[        U5      [        S5      -  S-  S:X  a  UR                  5       $ [        R
                  " U5      $ U" W5      (       d'  U" U5      (       d  U" U5      (       d  U" U5      (       a  [        U SU S35      e[        R                  " Xg5      $ )Nc                 N    [        U [        5      =(       a    U R                  S:H  $ )NPRIMESr   r   rW   r   s    r   isprime1TransformToSymPyExpr.superscript.<locals>.isprime   s    a'>AFFh,>>r   c                 z    [        U [        5      =(       a%    U R                  S:H  =(       d    U R                  S:H  $ )NPRIMES_VIA_CMD	CMD_PRIMEr   r   s    r   
iscmdprime4TransformToSymPyExpr.superscript.<locals>.iscmdprime   s6    a' GQVV7G-G .F01+0EGr   c                 N    [        U [        5      =(       a    U R                  S:H  $ )NSTARSr   r   s    r   isstar0TransformToSymPyExpr.superscript.<locals>.isstar   s    a'=AFFg,==r   c                 z    [        U [        5      =(       a%    U R                  S:H  =(       d    U R                  S:H  $ )NSTARS_VIA_CMDCMD_ASTERISKr   r   s    r   	iscmdstar3TransformToSymPyExpr.superscript.<locals>.iscmdstar   s5    a' JQVV-F .I01.0HJr   r   r   rF   rP   THz\primez\astz with superscript  is not understood.)
rQ   r   r#   r/   	Transposeadjointr9   doitr   Pow)r   r&   r   r   r   r   r<   sups           r   superscript TransformToSymPyExpr.superscript   s   	?	G	>	J ayv;!)Cv;!
 )C$$T**ell3''t,,ell3''}}T**s||iis8a<1$Kt,,#iiHS^+q0A5Kt,,c{{ii s8a<1$99;&}}T**~~iiHS\)Q.!399;&}}T**3<<:c??fSkkYs^^#tf,>seCV$WXXyy##r   c                     US   nUS   R                   nU R                  U5      (       d  [        SU SU S35      e[        U5      S-  S:X  a  U$ [        R
                  " U5      $ )Nr   r,   ()r   rF   )r9   r   r   rQ   r#   r   r   r&   r<   primess       r   matrix_prime!TransformToSymPyExpr.matrix_prime  sh    ay((..#avQvh6I$JKKv;?aKt$$r   c                 r    US   nUS   R                   n[        R                  " UR                   U 35      $ )Nr   r,   )r9   r#   r/   namer   s       r   symbol_prime!TransformToSymPyExpr.symbol_prime  s4    ay||tyyk&233r   c                 ~    US   n[        US   [        5      (       a  US   u  p4SU4$ US   nU R                  X%5      $ )Nr,   rF   
derivative)r   r   r   )r   r&   	numeratorr4   variabledenominators         r   fractionTransformToSymPyExpr.fraction  sN    1I	fQi'' )KA  )) )K((@@r   c                 <    [         R                  " US   US   5      $ )Nr,   rF   )r#   binomialr%   s     r   r   TransformToSymPyExpr.binomial&  s    ~~fQi33r   c                    S nS nSU;   a  UR                  S5      nSU;   a  UR                  S5      nU(       a  XS-      OS nU(       a  XS-      OS nU R                  U5      nUc  [        S5      eUR                  U5      S-   nX   nUb  Uc  [        S5      eUb  Uc  [        S5      eUb  X'S-
  :X  a  Sn	OUb  X7S-
  :X  a  Sn	OUS:X  a  Sn	OXS-
     n	Ub  [        R                  " XXE45      $ [        R                  " X5      $ )	Nr4   ^r,   ztDifferential symbol was not found in the expression.Valid differential symbols are "d", "\text{d}, and "\mathrm{d}".FLower bound for the integral was found, but upper bound was not found.FUpper bound for the integral was found, but lower bound was not found.r   rF   )index_extract_differential_symbolr   r#   Integral)
r   r&   underscore_indexcaret_indexlower_boundupper_bounddifferential_symboldifferential_variable_indexdifferential_variable	integrands
             r   normal_integral$TransformToSymPyExpr.normal_integral)  sW   &=  &||C0&= !,,s+K6Ff12D1<f1_-$"??G&# %n o o '-ll3F&G!&K# & C "{':#$lmm"{':#$lmm ',<^_@_,_ I$VW8W)W I(A- I Q>?I"
 >>)[-^__ >>)CCr   c                 b    [        U5      S:X  a  SUS   4$ [        U5      S:X  a
  US   US   4$ g )Nr   r,   rO   rF   )rQ   r%   s     r   group_curly_parentheses_int0TransformToSymPyExpr.group_curly_parentheses_intl  sB     v;!fQi<[A!9fQi'' r   c                 v    US   u  p#US   n[         R                  " U[         R                  " US5      5      U4$ )Nr,   rF   r7   )r#   r   r   )r   r&   r   r   r   s        r   special_fraction%TransformToSymPyExpr.special_fractionu  s:    $Qi	Qi yyEIIk2$>?IIr   c                 Z   S nS nSU;   a  UR                  S5      nSU;   a  UR                  S5      nU(       a  XS-      OS nU(       a  XS-      OS nUb  Uc  [        S5      eUb  Uc  [        S5      eUS   u  pgUb  [        R                  " XgXE45      $ [        R                  " Xg5      $ )Nr4   r   r,   r   r   r7   )r   r   r#   r   )r   r&   r   r   r   r   r   r   s           r   integral_with_special_fraction3TransformToSymPyExpr.integral_with_special_fraction|  s    &=  &||C0&= !,,s+K6Ff12D1<f1_-$ "{':#$lmm"{':#$lmm+1":(	"
 >>)[-^__ >>)CCr   c                     UR                  S5      nUR                  S5      nUR                  SU5      nUR                  SU5      nXS-   U nXS-   S  nUS   nUS   n	US   n
XU
4$ )Nr4   r   r5   r8   r,   r   r7   r   )r   r&   r   r   left_brace_indexright_brace_indexbottom_limit	top_limitindex_variablelower_limitupper_limits              r   group_curly_parentheses_special4TransformToSymPyExpr.group_curly_parentheses_special  s    !<<,ll3' "<<-=>"LL.>?24EF ?+,	 &a"2&l K77r   c                 <    [         R                  " US   US   5      $ NrF   r,   )r#   Sumr%   s     r   	summationTransformToSymPyExpr.summation  s    yyF1I..r   c                 <    [         R                  " US   US   5      $ r  )r#   Productr%   s     r   productTransformToSymPyExpr.product  s    }}VAYq	22r   c                     UR                  S5      nSU;   a  UR                  SU5      nXS-      nOXS-      nUS:X  a  US   S4$ US:X  a  US   S4$ US   S4$ )Nr   r5   r,   +r   -+-r   )r   r&   r   left_curly_brace_index	directions        r   limit_dir_expr#TransformToSymPyExpr.limit_dir_expr  s{    ll3'&=%+\\#{%C"9:IQ/I!9c>!#!9c>!!9d?"r   c                 b    US   n[        US   [        5      (       a  US   u  p4OUS   nSnX#U4$ )Nr,   r   r  )r   r   r   r&   limit_variabledestinationr  s        r   group_curly_parentheses_lim0TransformToSymPyExpr.group_curly_parentheses_lim  sC    fQi''%+AY"K )KII55r   c                 H    US   u  p#n[         R                  " US   X#U5      $ NrF   r7   )r#   Limitr  s        r   limitTransformToSymPyExpr.limit  s'    17.Y{{6":~INNr   c                     US   $ re   r   r%   s     r   differential!TransformToSymPyExpr.differential  rc   r   c                 <    [         R                  " US   US   5      $ )Nr7   rP   )r#   r   r%   s     r   r   TransformToSymPyExpr.derivative  s    r
F1I66r   c                 @    [        U5      S:X  a  U$ S n[        X!5      $ )Nr,   c                 f    [        U [        5      (       a  U R                  S:w  a  [        S5      egg)NCOMMAzAA comma token was expected, but some other token was encountered.FT)r   r   rW   r   )r   s    r   remove_tokens?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens  s-    dE**yyG+/0stt r   )rQ   filter)r   r&   r&  s      r   list_of_expressions(TransformToSymPyExpr.list_of_expressions  s'    v;! M -00r   c                 @    [         R                  " US   5      " US   6 $ ro   )r#   Functionr%   s     r   function_applied%TransformToSymPyExpr.function_applied  s    ~~fQi(&)44r   c                 .    [         R                  " US   6 $ NrF   )r#   Minr%   s     r   minTransformToSymPyExpr.min      yy&)$$r   c                 .    [         R                  " US   6 $ r0  )r#   Maxr%   s     r   maxTransformToSymPyExpr.max  r4  r   c                 $    SSK Jn  U" US   5      $ )Nr   )r   r,   )r   r   )r   r&   r   s      r   braTransformToSymPyExpr.bra
      -6!9~r   c                 $    SSK Jn  U" US   5      $ )Nr   )r   r,   )r   r   )r   r&   r   s      r   ketTransformToSymPyExpr.ket  r<  r   c                 L    SSK JnJnJn  U" U" US   5      U" US   5      5      $ )Nr   )r   r   InnerProductr,   r   )r   r   r   rA  )r   r&   r   r   rA  s        r   inner_product"TransformToSymPyExpr.inner_product  s%    @@Cq	NCq	N;;r   c                 4    [         R                  " US   5      $ re   )r#   sinr%   s     r   rE  TransformToSymPyExpr.sin      yy##r   c                 4    [         R                  " US   5      $ re   )r#   cosr%   s     r   rI  TransformToSymPyExpr.cos  rG  r   c                 4    [         R                  " US   5      $ re   )r#   tanr%   s     r   rL  TransformToSymPyExpr.tan  rG  r   c                 4    [         R                  " US   5      $ re   )r#   cscr%   s     r   rO  TransformToSymPyExpr.csc  rG  r   c                 4    [         R                  " US   5      $ re   )r#   secr%   s     r   rR  TransformToSymPyExpr.sec"  rG  r   c                 4    [         R                  " US   5      $ re   )r#   cotr%   s     r   rU  TransformToSymPyExpr.cot%  rG  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   asinr   rE  r   r&   exponents      r   	sin_powerTransformToSymPyExpr.sin_power(  C    !9r>::fRj))99UYYvbz2H==r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   acosr   rI  rY  s      r   	cos_powerTransformToSymPyExpr.cos_power/  r]  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   atanr   rL  rY  s      r   	tan_powerTransformToSymPyExpr.tan_power6  r]  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   acscr   rO  rY  s      r   	csc_powerTransformToSymPyExpr.csc_power=  r]  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   asecr   rR  rY  s      r   	sec_powerTransformToSymPyExpr.sec_powerD  r]  r   c                     US   nUS:X  a  [         R                  " US   5      $ [         R                  " [         R                  " US   5      U5      $ r  )r#   acotr   rU  rY  s      r   	cot_powerTransformToSymPyExpr.cot_powerK  r]  r   c                 4    [         R                  " US   5      $ re   )r#   rX  r%   s     r   arcsinTransformToSymPyExpr.arcsinR      zz&)$$r   c                 4    [         R                  " US   5      $ re   )r#   r_  r%   s     r   arccosTransformToSymPyExpr.arccosU  ru  r   c                 4    [         R                  " US   5      $ re   )r#   rc  r%   s     r   arctanTransformToSymPyExpr.arctanX  ru  r   c                 4    [         R                  " US   5      $ re   )r#   rg  r%   s     r   arccscTransformToSymPyExpr.arccsc[  ru  r   c                 4    [         R                  " US   5      $ re   )r#   rk  r%   s     r   arcsecTransformToSymPyExpr.arcsec^  ru  r   c                 4    [         R                  " US   5      $ re   )r#   ro  r%   s     r   arccotTransformToSymPyExpr.arccota  ru  r   c                 4    [         R                  " US   5      $ re   )r#   sinhr%   s     r   r  TransformToSymPyExpr.sinhd  ru  r   c                 4    [         R                  " US   5      $ re   )r#   coshr%   s     r   r  TransformToSymPyExpr.coshg  ru  r   c                 4    [         R                  " US   5      $ re   )r#   tanhr%   s     r   r  TransformToSymPyExpr.tanhj  ru  r   c                 4    [         R                  " US   5      $ re   )r#   asinhr%   s     r   r  TransformToSymPyExpr.asinhm      {{6!9%%r   c                 4    [         R                  " US   5      $ re   )r#   acoshr%   s     r   r  TransformToSymPyExpr.acoshp  r  r   c                 4    [         R                  " US   5      $ re   )r#   atanhr%   s     r   r  TransformToSymPyExpr.atanhs  r  r   c                 4    [         R                  " US   5      $ re   )r#   Absr%   s     r   absTransformToSymPyExpr.absv  rG  r   c                 4    [         R                  " US   5      $ re   )r#   floorr%   s     r   r  TransformToSymPyExpr.floory  r  r   c                 4    [         R                  " US   5      $ re   )r#   ceilingr%   s     r   ceilTransformToSymPyExpr.ceil|  s    }}VAY''r   c                 4    [         R                  " US   5      $ r`   )r#   	factorialr%   s     r   r  TransformToSymPyExpr.factorial      vay))r   c                 4    [         R                  " US   5      $ re   )r#   	conjugater%   s     r   r  TransformToSymPyExpr.conjugate  r  r   c                     [        U5      S:X  a  [        R                  " US   5      $ [        U5      S:X  a  [        R                  " US   US   5      $ g )NrF   r,   r   )rQ   r#   sqrtrootr%   s     r   square_root TransformToSymPyExpr.square_root  sK    v;!::fQi(([A::fQi33 r   c                 4    [         R                  " US   5      $ re   )r#   expr%   s     r   exponential TransformToSymPyExpr.exponential  rG  r   c                 T   US   R                   S:X  a  [        R                  " US   S5      $ US   R                   S:X  a  [        R                  " US   5      $ US   R                   S:X  a<  SU;   a  [        R                  " US   US	   5      $ [        R                  " US   5      $ g )
Nr   FUNC_LGr,   
   FUNC_LNFUNC_LOGr4   r   rF   )rW   r#   logr%   s     r   r  TransformToSymPyExpr.log  s    !9>>Y& 99VAY++AY^^y(99VAY''AY^^z)f}yyF1I66 yy++ *r   sc                 <   ^ 1 Skn[        U4S jU 5       S 5      nU$ )N>   r   \text{d}
\mathrm{d}c              3   6   >#    U  H  oT;   d  M
  Uv   M     g 7fr   r   ).0symbolr  s     r   	<genexpr>DTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>  s     #]9Mv[\Q\FF9Ms   		)next)r   r  differential_symbolsr   s    `  r   r   1TransformToSymPyExpr._extract_differential_symbol  s$    @"#]9M#]_cd""r   c                    S nS nUS   R                   n[        R                  " U VVs/ s H<  oR" U5      (       d  M  UR                    Vs/ s H  oc" U5      (       d  M  UPM     snPM>     snn5      $ s  snf s  snnf )Nc                 N    [        U [        5      =(       a    U R                  S:H  $ )N
matrix_row)r   r   datar   s    r   is_matrix_row2TransformToSymPyExpr.matrix.<locals>.is_matrix_row  s    q$'BAFFl,BCr   c                 X    [        U [        5      (       + =(       d    U R                  S:g  $ )NMATRIX_COL_DELIMr   )ys    r   is_not_col_delim5TransformToSymPyExpr.matrix.<locals>.is_not_col_delim  s!    "1e,,L:L0LMr   r,   )childrenr#   Matrix)r   r&   r  r  matrix_bodyr   r  s          r   matrixTransformToSymPyExpr.matrix  s}    	D	N Qi((||&1G&1]15E LKA7G7JaK&1G H 	HK Gs"   A;
A;
A6!A6'A;
6A;
c                     [        U5      S:X  a7  U R                  US   5      (       d  [        S5      eUS   R                  5       $ [        U5      S:X  a  U R	                  U5      R                  5       $ g )NrF   r,   z&Cannot take determinant of non-matrix.r   )rQ   r   r   detr  r%   s     r   determinant TransformToSymPyExpr.determinant  sh    v;!,,VAY77'(PQQ!9==?"v;!;;v&**,, r   c                 |    U R                  US   5      (       d  [        S5      e[        R                  " US   5      $ )Nr,   z Cannot take trace of non-matrix.)r   r   r#   Tracer%   s     r   traceTransformToSymPyExpr.trace  s6    ((33#$FGG{{6!9%%r   c                     U R                  US   5      (       d  [        S5      eUS   R                  5       R                  5       $ )Nr,   z#Cannot take adjugate of non-matrix.)r   r   r   adjugater%   s     r   r  TransformToSymPyExpr.adjugate  s?    ((33#$IJJ ay~~((**r   c                 p    [        US5      (       a  UR                  $ [        U[        R                  5      $ )N	is_Matrix)hasattrr  r   r#   r  )r   objs     r   r   )TransformToSymPyExpr._obj_is_sympy_Matrix  s*    3$$== #u||,,r   c                     U R                  U5      (       a  [        S5      eU R                  U5      (       a,  [        R                  " U[        R                  " US5      5      $ [        R
                  " U[        R                  " US5      5      $ )NzCannot divide by matrices like this since it is not clear if left or right multiplication by the inverse is intended. Try explicitly multiplying by the inverse instead.r7   )r   r   r#   r   r   r   )r   r   r   s      r   r   %TransformToSymPyExpr._handle_division  ss    $$[11# %J K K
 $$Y//<<	599["+EFFyyEIIk2$>??r   r   N)dr   r   r   r   __doc__r#   r/   SYMBOLrY   rZ   r\   DIGITr'   r1   r=   rC   rG   rL   rR   r]   ra   rf   ri   rl   rq   rv   rz   r~   r   r   r   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r   r)  r-  r2  r7  r:  r>  rB  rE  rI  rL  rO  rR  rU  r[  r`  rd  rh  rl  rp  rs  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  strr   r  r  r  r  r   r   r   r   r   r   r    r       s   . \\FJJ&&E+9A>
A79......
%&"!;3 :$x
%4
A4ADF(J%DN!8F/3# 6O
71 5%%<$$$$$$>>>>>>%%%%%%%%%&&&$&(**4$,"#c #	H-&+-
@r   r    )r-   r#   sympy.externalr   sympy.parsing.latex.errorsr   r   r   r   r   r    r   r   r   <module>r     sR    	  ( 8V-- 
  
@@; @@r   