o
    oÇhV ã                   @  sô   d 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 ddlmZmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZmZmZ G dd„ deƒZG dd„ deƒZG dd„ deƒZ eeƒddd„ƒZ!ddd„Z"eZ#dS )z
A MathML printer.
é    )Úannotations)ÚAny)ÚMul)ÚS)Údefault_sort_key)Úsympify)Úsplit_super_subÚrequires_partial)Úprecedence_traditionalÚ
PRECEDENCEÚPRECEDENCE_TRADITIONAL)Úgreek_unicode)ÚPrinterÚprint_function)Úprec_to_dpsÚrepr_dpsÚto_strc                   @  sN   e Zd ZU dZddddddddddddi d	d
œZded< ddd„Zdd„ ZdS )ÚMathMLPrinterBasez^Contains common code required for MathMLContentPrinter and
    MathMLPresentationPrinter.
    Nzutf-8FÚabbreviatedú[ÚplainTú&#xB7;)ÚorderÚencodingÚfold_frac_powersÚfold_func_bracketsÚfold_short_fracÚinv_trig_styleÚln_notationÚlong_frac_ratioÚ	mat_delimÚmat_symbol_styleÚ
mul_symbolÚroot_notationÚsymbol_namesÚmul_symbol_mathml_numberszdict[str, Any]Ú_default_settingsc                   sN   t  ˆ|¡ ddlm}m} |ƒ ˆ_G dd„ d|ƒ‰ ‡ ‡fdd„}|ˆj_d S )Nr   )ÚDocumentÚTextc                   @  s   e Zd Zddd„ZdS )z+MathMLPrinterBase.__init__.<locals>.RawTextÚ c                 S  s$   | j r| d || j |¡¡ d S d S )Nz{}{}{})ÚdataÚwriteÚformat)ÚselfÚwriterÚindentÚ	addindentÚnewl© r2   úi/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/printing/mathml.pyÚwritexml6   s   ÿz4MathMLPrinterBase.__init__.<locals>.RawText.writexmlN)r)   r)   r)   )Ú__name__Ú
__module__Ú__qualname__r4   r2   r2   r2   r3   ÚRawText5   s    r8   c                   s   ˆ ƒ }| |_ ˆj|_|S ©N)r*   ÚdomÚownerDocument)r*   Úr©r8   r-   r2   r3   ÚcreateRawTextNode:   s   z5MathMLPrinterBase.__init__.<locals>.createRawTextNode)r   Ú__init__Úxml.dom.minidomr'   r(   r:   ÚcreateTextNode)r-   Úsettingsr'   r(   r>   r2   r=   r3   r?   +   s   zMathMLPrinterBase.__init__c                 C  s,   t  | |¡}| ¡ }| dd¡}| ¡ }|S )z2
        Prints the expression as MathML.
        ÚasciiÚxmlcharrefreplace)r   Ú_printÚtoxmlÚencodeÚdecode)r-   ÚexprÚmathMLÚunistrÚxmlbstrÚresr2   r2   r3   ÚdoprintB   s
   zMathMLPrinterBase.doprintr9   )r5   r6   r7   Ú__doc__r&   Ú__annotations__r?   rN   r2   r2   r2   r3   r      s&   
 ò
r   c                   @  sB  e Zd ZdZdZdd„ Zdd„ ZdJdd	„Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ ZeZeZd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Z d8d9„ Z!d:d;„ Z"d<d=„ Z#d>d?„ Z$d@dA„ Z%e"Z&e"Z'e"Z(dBdC„ Z)dDdE„ Z*dFdG„ Z+dHdI„ Z,dS )KÚMathMLContentPrinterz}Prints an expression to the Content MathML markup language.

    References: https://www.w3.org/TR/MathML2/chapter4.html
    Ú_mathml_contentc                 C  s€  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“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/d0“d1d2“d3d4“¥i d5d6“d7d8“d9d:“d;d8“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“¥dVdWdXœ¥}|j jD ]}|j}||v r·||   S q¨|j j}| ¡ S )Yú)Returns the MathML tag for an expression.ÚAddÚplusr   ÚtimesÚ
DerivativeÚdiffÚNumberÚcnÚintÚPowÚpowerÚMaxÚmaxÚMinÚminÚAbsÚabsÚAndÚandÚOrÚorÚXorÚxorÚNotÚnotÚImpliesÚimpliesÚSymbolÚciÚMatrixSymbolÚRandomSymbolÚIntegralÚSumÚsumÚsinÚcosÚtanÚcotÚcscÚsecÚsinhÚcoshÚtanhÚcothÚcschÚsechÚasinÚarcsinÚasinhÚarcsinhÚacosÚarccosÚacoshÚarccoshÚatanÚarctanÚatanhÚarctanhÚatan2ÚacotÚarccotÚacothÚarccothÚasecÚarcsecÚasechÚarcsechÚacscÚarccscÚacschÚarccschÚlogÚlnÚEqualityÚeqÚ
UnequalityÚneqÚGreaterThanÚgeqÚLessThanÚleqÚStrictGreaterThanÚgtÚStrictLessThanÚltÚunionÚ	intersect)ÚUnionÚIntersection©Ú	__class__Ú__mro__r5   Úlower)r-   ÚeÚ	translateÚclsÚnr2   r2   r3   Ú
mathml_tagT   sâ   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ë8ÿzMathMLContentPrinter.mathml_tagc           	      C  s<  |  ¡ r| j d¡}| | j d¡¡ | |  | ¡¡ |S ddlm} ||ƒ\}}|tjurP| j d¡}| | j d¡¡ | |  	|¡¡ | |  	|¡¡ |S | 
¡ \}}|tju rht|ƒdkrh|  	|d ¡S | jdkrtt |¡ ¡ }| j d¡}| | j d¡¡ |dkr| |  	|¡¡ |D ]
}| |  	|¡¡ q‘|S )	NÚapplyÚminusr   ©ÚfractionÚdivideé   ÚoldrV   )Úcould_extract_minus_signr:   ÚcreateElementÚappendChildÚ
_print_MulÚsympy.simplifyr¸   r   ÚOnerE   Úas_coeff_mulÚlenr   r   Ú
_from_argsÚas_ordered_factors)	r-   rI   Úxr¸   ÚnumerÚdenomÚcoeffÚtermsÚtermr2   r2   r3   r¿   –   s2   

zMathMLContentPrinter._print_MulNc                 C  s
  | j ||d}|  |d ¡}g }|dd … D ]I}| ¡ rG| j d¡}| | j d¡¡ | |¡ | |  | ¡¡ |}||d krF| |¡ q| |¡ |  |¡}||d kr_| |  |¡¡ qt|ƒdkrh|S | j d¡}| | j d¡¡ |rƒ| | d¡¡ |sy|S )N©r   r   rº   rµ   r¶   éÿÿÿÿrU   )	Ú_as_ordered_termsrE   r¼   r:   r½   r¾   ÚappendrÃ   Úpop)r-   rI   r   ÚargsÚlastProcessedÚ	plusNodesÚargrÆ   r2   r2   r3   Ú
_print_Add¹   s4   

€

€ÿzMathMLContentPrinter._print_Addc                 C  s®   |j d jdkrtdƒ‚| j d¡}t|j ƒD ]=\}\}}|t|j ƒd kr9|dkr9| j d¡}| |  |¡¡ n| j d¡}| |  |¡¡ | |  |¡¡ | |¡ q|S )NrÍ   Tz¼All Piecewise expressions must contain an (expr, True) statement to be used as a default condition. Without one, the generated expression may not evaluate to anything under some condition.Ú	piecewiserº   Ú	otherwiseÚpiece)	rÑ   ÚcondÚ
ValueErrorr:   r½   Ú	enumeraterÃ   r¾   rE   )r-   rI   ÚrootÚir°   ÚcrØ   r2   r2   r3   Ú_print_PiecewiseÕ   s   z%MathMLContentPrinter._print_Piecewisec              	   C  s^   | j  d¡}t|jƒD ]!}| j  d¡}t|jƒD ]}| |  |||f ¡¡ q| |¡ q|S )NÚmatrixÚ	matrixrow)r:   r½   ÚrangeÚrowsÚcolsr¾   rE   )r-   ÚmrÆ   rÝ   Úx_rÚjr2   r2   r3   Ú_print_MatrixBaseê   s   z&MathMLContentPrinter._print_MatrixBasec                 C  s°   |j dkr| j d¡}| | j t|jƒ¡¡ |S | j d¡}| | j d¡¡ | j d¡}| | j t|jƒ¡¡ | j d¡}| | j t|j ƒ¡¡ | |¡ | |¡ |S )Nrº   rZ   rµ   r¹   )Úqr:   r½   r¾   rA   ÚstrÚp)r-   r°   rÆ   ÚxnumÚxdenomr2   r2   r3   Ú_print_Rationaló   s   


z$MathMLContentPrinter._print_Rationalc                 C  s–   | j  d¡}| | j  |  |¡¡¡ | j  d¡}| j  d¡}| |  |jd ¡¡ | |  |jd ¡¡ | |¡ | |¡ | |  |jd ¡¡ |S )Nrµ   ÚbvarÚlowlimitrº   é   r   )r:   r½   r¾   r´   rE   rÑ   )r-   r°   rÆ   Úx_1Úx_2r2   r2   r3   Ú_print_Limit  s   

z!MathMLContentPrinter._print_Limitc                 C  ó   | j  d¡S )NÚ
imaginaryi©r:   r½   ©r-   r°   r2   r2   r3   Ú_print_ImaginaryUnit  ó   z)MathMLContentPrinter._print_ImaginaryUnitc                 C  rõ   )NÚ
eulergammar÷   rø   r2   r2   r3   Ú_print_EulerGamma  rú   z&MathMLContentPrinter._print_EulerGammac                 C  ó"   | j  d¡}| | j  d¡¡ |S )zwWe use unicode #x3c6 for Greek letter phi as defined here
        https://www.w3.org/2003/entities/2007doc/isogrk1.htmlrZ   u   Ï†©r:   r½   r¾   rA   ©r-   r°   rÆ   r2   r2   r3   Ú_print_GoldenRatio  s   z'MathMLContentPrinter._print_GoldenRatioc                 C  rõ   )NÚexponentialer÷   rø   r2   r2   r3   Ú_print_Exp1   rú   z MathMLContentPrinter._print_Exp1c                 C  rõ   )NÚpir÷   rø   r2   r2   r3   Ú	_print_Pi#  rú   zMathMLContentPrinter._print_Pic                 C  rõ   )NÚinfinityr÷   rø   r2   r2   r3   Ú_print_Infinity&  rú   z$MathMLContentPrinter._print_Infinityc                 C  rõ   )NÚ
notanumberr÷   rø   r2   r2   r3   Ú
_print_NaN)  rú   zMathMLContentPrinter._print_NaNc                 C  rõ   )NÚemptysetr÷   rø   r2   r2   r3   Ú_print_EmptySet,  rú   z$MathMLContentPrinter._print_EmptySetc                 C  rõ   )NÚtruer÷   rø   r2   r2   r3   Ú_print_BooleanTrue/  rú   z'MathMLContentPrinter._print_BooleanTruec                 C  rõ   )NÚfalser÷   rø   r2   r2   r3   Ú_print_BooleanFalse2  rú   z(MathMLContentPrinter._print_BooleanFalsec                 C  s4   | j  d¡}| | j  d¡¡ | | j  d¡¡ |S )Nrµ   r¶   r  )r:   r½   r¾   rÿ   r2   r2   r3   Ú_print_NegativeInfinity5  s   z,MathMLContentPrinter._print_NegativeInfinityc                   s*   ‡ ‡‡fdd„‰t ˆ jƒ}| ¡  ˆ|ƒS )Nc                   s8  ˆj  d¡}| ˆj  ˆ ˆ ¡¡¡ ˆj  d¡}| ˆ | d d ¡¡ | |¡ t| d ƒdkr_ˆj  d¡}| ˆ | d d ¡¡ | |¡ ˆj  d¡}| ˆ | d d ¡¡ | |¡ t| d ƒdkr~ˆj  d¡}| ˆ | d d ¡¡ | |¡ t| ƒdkr| ˆ ˆ j¡¡ |S | ˆ| dd … ƒ¡ |S )	Nrµ   rï   r   é   rð   rº   Úuplimitrñ   )r:   r½   r¾   r´   rE   rÃ   Úfunction)ÚlimitsrÆ   Ú	bvar_elemÚlow_elemÚup_elem©r°   Ú
lime_recurr-   r2   r3   r  <  s*   



ÿz8MathMLContentPrinter._print_Integral.<locals>.lime_recur)Úlistr  Úreverse)r-   r°   r  r2   r  r3   Ú_print_Integral;  s   
z$MathMLContentPrinter._print_Integralc                 C  s
   |   |¡S r9   )r  rø   r2   r2   r3   Ú
_print_SumX  s   
zMathMLContentPrinter._print_Sumc                   sF  ˆ j  ˆ  |¡¡}‡ fdd„}dd„ ‰t|jƒ\}}}ˆ|ƒ}‡fdd„|D ƒ}‡fdd„|D ƒ}ˆ j  d¡}| ˆ j  |¡¡ |sh|sO| ˆ j  |¡¡ |S ˆ j  d	¡}| |¡ | ||ƒ¡ | |¡ |S |sƒˆ j  d
¡}	|	 |¡ |	 ||ƒ¡ | |	¡ |S ˆ j  d¡}
|
 |¡ |
 ||ƒ¡ |
 ||ƒ¡ | |
¡ |S )Nc                   ó¬   t | ƒdkrCˆ j d¡}t| ƒD ]0\}}|dkr,ˆ j d¡}| ˆ j d¡¡ | |¡ ˆ j d¡}| ˆ j |¡¡ | |¡ q|S ˆ j d¡}| ˆ j | d ¡¡ |S )Nrº   zmml:mrowr   zmml:moú úmml:mi©rÃ   r:   r½   rÛ   r¾   rA   ©ÚitemsÚmrowrÝ   ÚitemÚmoÚmi©r-   r2   r3   Újoin`  ó   
z0MathMLContentPrinter._print_Symbol.<locals>.joinc                 S  ó   | t v r	t  | ¡S | S r9   ©r   Úget©Úsr2   r2   r3   r±   r  ó   
z5MathMLContentPrinter._print_Symbol.<locals>.translatec                   ó   g | ]}ˆ |ƒ‘qS r2   r2   ©Ú.0Úsup©r±   r2   r3   Ú
<listcomp>z  ó    z6MathMLContentPrinter._print_Symbol.<locals>.<listcomp>c                   r0  r2   r2   ©r2  Úsubr4  r2   r3   r5  {  r6  r  zmml:msubzmml:msupzmml:msubsup)r:   r½   r´   r   Únamer¾   rA   )r-   Úsymro   r(  r9  ÚsupersÚsubsÚmnameÚmsubÚmsupÚmsubsupr2   ©r-   r±   r3   Ú_print_Symbol]  s<   ð

õ

û

z"MathMLContentPrinter._print_Symbolc                 C  sô   | j d rR|jjrR|jjdkrR| j d¡}| | j d¡¡ |jjdkrG| j d¡}| j d¡}| | j t	|jjƒ¡¡ | |¡ | |¡ | |  
|j¡¡ |S | j d¡}| j |  |¡¡}| |¡ | |  
|j¡¡ | |  
|j¡¡ |S )Nr#   rº   rµ   rÜ   rñ   ÚdegreerZ   )Ú	_settingsÚexpÚis_Rationalrë   r:   r½   r¾   ré   rA   rê   rE   Úbaser´   )r-   r°   rÆ   ÚxmldegÚxmlcnrò   r2   r2   r3   Ú
_print_Pow˜  s$   


zMathMLContentPrinter._print_Powc                 C  ó,   | j  |  |¡¡}| | j  t|ƒ¡¡ |S r9   ©r:   r½   r´   r¾   rA   rê   rÿ   r2   r2   r3   Ú_print_Number¯  ó   z"MathMLContentPrinter._print_Numberc                 C  s:   | j  |  |¡¡}t|jt|jƒƒ}| | j  |¡¡ |S r9   )	r:   r½   r´   Úmlib_to_strÚ_mpf_r   Ú_precr¾   rA   )r-   r°   rÆ   Úrepr_er2   r2   r3   Ú_print_Float´  s   z!MathMLContentPrinter._print_Floatc                 C  s¸   | j  d¡}|  |¡}t|jƒrd}| | j  |¡¡ | j  d¡}t|jƒD ]%\}}| |  |¡¡ |dkrK| j  d¡}| |  t	|ƒ¡¡ | |¡ q&| |¡ | |  |j¡¡ |S )Nrµ   Úpartialdiffrï   rº   rC  )
r:   r½   r´   r	   rI   r¾   ÚreversedÚvariable_countrE   r   )r-   r°   rÆ   Údiff_symbolrò   r:  rV   rC  r2   r2   r3   Ú_print_Derivativeº  s    


€
z&MathMLContentPrinter._print_Derivativec                 C  sD   | j  d¡}| | j  |  |¡¡¡ |jD ]
}| |  |¡¡ q|S ©Nrµ   )r:   r½   r¾   r´   rÑ   rE   ©r-   r°   rÆ   rÔ   r2   r2   r3   Ú_print_FunctionÍ  s
   
z$MathMLContentPrinter._print_Functionc                 C  s2   | j  |  |¡¡}|jD ]
}| |  |¡¡ q|S r9   )r:   r½   r´   rÑ   r¾   rE   rZ  r2   r2   r3   Ú_print_BasicÔ  s   
z!MathMLContentPrinter._print_Basicc                 C  sH   | j  d¡}| j  |  |¡¡}| |¡ |jD ]
}| |  |¡¡ q|S rY  )r:   r½   r´   r¾   rÑ   rE   )r-   r°   rÆ   rò   rÔ   r2   r2   r3   Ú_print_AssocOpÚ  s   

z#MathMLContentPrinter._print_AssocOpc                 C  sL   | j  d¡}| | j  |  |¡¡¡ | |  |j¡¡ | |  |j¡¡ |S rY  )r:   r½   r¾   r´   rE   ÚlhsÚrhsrÿ   r2   r2   r3   Ú_print_Relationalâ  s
   z&MathMLContentPrinter._print_Relationalc                 C  ó*   | j  d¡}|D ]
}| |  |¡¡ q|S )zgMathML reference for the <list> element:
        https://www.w3.org/TR/MathML2/chapter4.html#contm.listr  ©r:   r½   r¾   rE   )r-   ÚseqÚdom_elementr$  r2   r2   r3   Ú_print_listé  s   z MathMLContentPrinter._print_listc                 C  rK  r9   rL  ©r-   rë   rd  r2   r2   r3   Ú
_print_intñ  rN  zMathMLContentPrinter._print_intc                 C  s,   | j  d¡}|jD ]
}| |  |¡¡ q	|S )NÚset©r:   r½   rÑ   r¾   rE   rZ  r2   r2   r3   Ú_print_FiniteSetú  s   
z%MathMLContentPrinter._print_FiniteSetc                 C  ó>   | j  d¡}| | j  d¡¡ |jD ]
}| |  |¡¡ q|S )Nrµ   Úsetdiff©r:   r½   r¾   rÑ   rE   rZ  r2   r2   r3   Ú_print_Complement   ó
   
z&MathMLContentPrinter._print_Complementc                 C  rk  )Nrµ   Úcartesianproductrm  rZ  r2   r2   r3   Ú_print_ProductSet  ro  z&MathMLContentPrinter._print_ProductSetc                 C  sZ   | j  |  |¡¡}|jD ]}| j  d¡}| |  |¡¡ | |¡ q| |  |j¡¡ |S )Nrï   )r:   r½   r´   Ú	signaturer¾   rE   rI   )r-   r°   rÆ   rÔ   rò   r2   r2   r3   Ú_print_Lambda  s   
z"MathMLContentPrinter._print_Lambdar9   )-r5   r6   r7   rO   Úprintmethodr´   r¿   rÕ   rß   rè   rî   rô   rù   rü   r   r  r  r  r  r
  r  r  r  r  r  rB  Ú_print_MatrixSymbolÚ_print_RandomSymbolrJ  rM  rS  rX  r[  r\  r]  r`  re  rg  Ú_print_ImpliesÚ
_print_NotÚ
_print_Xorrj  rn  rq  rs  r2   r2   r2   r3   rQ   M   sV    B
#	8rQ   c                   @  sD  e Zd ZdZdZdd„ Zddd„Zdd	„ Zddd„Zdd„ Z	ddd„Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zdd6d7„Zd8d9„ ZeZd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRdS„ Z,dTdU„ Z-dVdW„ Z.ddXdY„Z/e/Z0dZd[„ Z1dd\d]„Z2dd^d_„Z3d`da„ Z4dbdc„ Z5ddde„ Z6dfdg„ Z7dhdi„ Z8djdk„ Z9dldm„ Z:dndo„ Z;dpdq„ Z<e<Z=drds„ Z>dtdu„ Z?dvdw„ Z@dxdy„ ZAdzd{„ ZBd|d}„ ZCd~d„ ZDd€d„ ZEd‚dƒ„ ZFeFZGeFZHd„d…„ ZId†d‡„ ZJdˆd‰„ ZKeK ZLZMdŠd‹„ ZNdŒd„ ZOdŽd„ ZPdd‘„ ZQd’d“„ ZRd”d•„ ZSd–d—„ ZTd˜d™„ ZUdšd›„ ZVdœd„ ZWdždŸ„ ZXd d¡„ ZYd¢d£„ ZZd¤d¥„ Z[d¦d§„ Z\d¨d©„ Z]dªd«„ Z^d¬d­„ Z_d®d¯„ Z`d°d±„ Zad²d³„ ZbebZcd´dµ„ Zdd¶d·„ Zed¸d¹„ Zfdºd»„ Zgd¼d½„ Zhd¾d¿„ ZidÀdÁ„ ZjdÂdÃ„ ZkdÄdÅ„ ZldÆdÇ„ ZmdÈdÉ„ ZndÊdË„ ZodÌdÍ„ ZpdÎdÏ„ ZqdÐdÑ„ ZrdÒdÓ„ ZsdÔdÕ„ ZtdÖd×„ ZudØdÙ„ ZvdÚdÛ„ ZwdÜdÝ„ ZxdÞdß„ Zydàdá„ Zzdâdã„ Z{dädå„ Z|dædç„ Z}dèdé„ Z~dêdë„ Zdìdí„ Z€dîdï„ Zdðdñ„ Z‚dòdó„ Zƒdôdõ„ Z„död÷„ Z…dødù„ Z†dúdû„ Z‡düdý„ Zˆdþdÿ„ Z‰d d„ ZŠd
S (  ÚMathMLPresentationPrinterz‚Prints an expression to the Presentation MathML markup language.

    References: https://www.w3.org/TR/MathML2/chapter3.html
    Ú_mathml_presentationc                   sL  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“i dd“d d“d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d8“d:d;“d<d=“¥d>d?d@dAdBdCdDdEdFd@dAdGdHdIdJœ¥}‡ fdKdL„}|j jD ]}|j}||v r”||   S q…|j jdMkrž|ƒ S |j j}| ¡ S )NrS   rY   ÚmnÚLimitz&#x2192;rW   ú&dd;r[   rn   r&  rr   z&int;rs   z&#x2211;ru   rv   rw   rx   r   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   rŽ   r   r   rœ   ú=rž   z&#x2260;r    z&#x2265;r¢   z&#x2264;r¤   ú>r¦   ú<Úlerchphiú&#x3A6;Úzetaz&#x3B6;Údirichlet_etaz&#x3B7;Ú
elliptic_kz&#x39A;Ú
lowergammaú&#x3B3;Ú
uppergammaz&#x393;ÚgammaÚtotientz&#x3D5;Úreduced_totientz&#x3BB;z&#x3BD;z&#x3A9;r   ÚCÚWz&#x398;ÚTrueÚFalseÚNonez	S&#x2032;z	C&#x2032;Úlambda)ÚprimenuÚ
primeomegaÚfresnelsÚfresnelcÚLambertWÚ	HeavisideÚBooleanTrueÚBooleanFalseÚNoneTypeÚmathieusÚmathieucÚmathieusprimeÚmathieucprimeÚLambdac                     st   ˆ j d d u sˆ j d dkrdS ˆ j d dkrdS ˆ j d dkr"dS ˆ j d dkr+d	S tˆ j d tƒs5t‚ˆ j d S )
Nr"   r‘  ú&InvisibleTimes;rV   ú&#xD7;Údotr   Úldotz&#x2024;)rD  Ú
isinstancerê   Ú	TypeErrorr2   r'  r2   r3   Úmul_symbol_selectionX  s   
zBMathMLPresentationPrinter.mathml_tag.<locals>.mul_symbol_selectionr   r¬   )r-   r°   r±   r§  r²   r³   r2   r'  r3   r´   #  s¼   ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ð3ÿz$MathMLPresentationPrinter.mathml_tagFc                 C  sF   t |ƒ}||k s|s||kr| j d¡}| |  |¡¡ |S |  |¡S ©NÚmfenced)r
   r:   r½   r¾   rE   )r-   r$  ÚlevelÚstrictÚprec_valÚbracr2   r2   r3   Úparenthesizep  s   
z&MathMLPresentationPrinter.parenthesizec                   sf   ‡ fdd„}ˆ j  d¡}| ¡ r,ˆ j  d¡}| ˆ j  d¡¡ | |¡ || |ƒ}|S |||ƒ}|S )Nc                   s„  ddl m} || ƒ\}}|tjurEˆ j d¡}ˆ jd r*tt| ƒƒdk r*| 	dd¡ ˆ  
|¡}ˆ  
|¡}| |¡ | |¡ | |¡ |S |  ¡ \}}	|tju rbt|	ƒdkrb| ˆ  
|	d ¡¡ |S ˆ jd	krnt |	¡ ¡ }	|dkr“ˆ  
|¡}
ˆ j d
¡}| ˆ j ˆ  | ¡¡¡ | |
¡ | |¡ |	D ]*}| ˆ  |td ¡¡ ||	d ks¿ˆ j d
¡}| ˆ j ˆ  | ¡¡¡ | |¡ q•|S )Nr   r·   Úmfracr   é   Úbevelledr  rº   r»   r%  r   rÍ   )rÀ   r¸   r   rÁ   r:   r½   rD  rÃ   rê   ÚsetAttributerE   r¾   rÂ   r   r   rÄ   rÅ   rA   r´   r®  r   )rI   r#  r¸   rÇ   rÈ   Úfracrì   ÚxdenrÉ   rÊ   rÆ   ÚyrË   r'  r2   r3   Úmultiply{  s@   










€z6MathMLPresentationPrinter._print_Mul.<locals>.multiplyr#  r%  ú-)r:   r½   r¼   r¾   rA   )r-   rI   r¶  r#  rÆ   r2   r'  r3   r¿   y  s   "

þz$MathMLPresentationPrinter._print_MulNc                 C  s´   | j  d¡}| j||d}| |  |d ¡¡ |dd … D ]:}| ¡ r9| j  d¡}| | j  d¡¡ |  | ¡}n| j  d¡}| | j  d¡¡ |  |¡}| |¡ | |¡ q|S )Nr#  rÌ   r   rº   r%  r·  ú+)r:   r½   rÎ   r¾   rE   r¼   rA   )r-   rI   r   r#  rÑ   rÔ   rÆ   rµ  r2   r2   r3   rÕ   ¨  s   

z$MathMLPresentationPrinter._print_Addc              	   C  sÂ   | j  d¡}t|jƒD ],}| j  d¡}t|jƒD ]}| j  d¡}| |  |||f ¡¡ | |¡ q| |¡ q| jd dkrA|S | j  d¡}| jd dkrZ| dd	¡ | d
d¡ | |¡ |S )NÚmtableÚmtrÚmtdr    r)   r©  r   Úcloseú]Úopen)	r:   r½   râ   rã   rä   r¾   rE   rD  r²  )r-   rå   ÚtablerÝ   rÆ   rç   rµ  r­  r2   r2   r3   rè   ¼  s    
z+MathMLPresentationPrinter._print_MatrixBasec                 C  s²   |j dk r
|j  }n|j }| j d¡}|s| jd r | dd¡ | |  |¡¡ | |  |j¡¡ |j dk rW| j d¡}| j d¡}| | j d¡¡ | |¡ | |¡ |S |S )	Nr   r¯  r   r±  r  r#  r%  r·  )	rë   r:   r½   rD  r²  r¾   rE   ré   rA   )r-   r°   Úfoldedrë   rÆ   r#  r%  r2   r2   r3   Ú_get_printed_RationalÎ  s    




z/MathMLPresentationPrinter._get_printed_Rationalc                 C  s(   |j dkr|  |j¡S |  || jd ¡S )Nrº   r   )ré   rE   rë   rÁ  rD  rø   r2   r2   r3   rî   â  s   
z)MathMLPresentationPrinter._print_Rationalc           	      C  sÜ   | j  d¡}| j  d¡}| j  d¡}| | j  d¡¡ | j  d¡}|  |jd ¡}| j  d¡}| | j  |  |¡¡¡ |  |jd ¡}| |¡ | |¡ | |¡ | |¡ | |¡ | |¡ | |  |jd ¡¡ |S )	Nr#  Úmunderr&  Úlimrº   r%  rñ   r   )r:   r½   r¾   rA   rE   rÑ   r´   )	r-   r°   r#  rÂ  r&  rÆ   rò   Úarrowró   r2   r2   r3   rô   é  s"   





z&MathMLPresentationPrinter._print_Limitc                 C  rý   )Nr&  z&ImaginaryI;rþ   rÿ   r2   r2   r3   rù   ÿ  ó   z.MathMLPresentationPrinter._print_ImaginaryUnitc                 C  rý   )Nr&  rƒ  rþ   rÿ   r2   r2   r3   r     rÅ  z,MathMLPresentationPrinter._print_GoldenRatioc                 C  rý   )Nr&  z&ExponentialE;rþ   rÿ   r2   r2   r3   r  	  rÅ  z%MathMLPresentationPrinter._print_Exp1c                 C  rý   )Nr&  z&pi;rþ   rÿ   r2   r2   r3   r    rÅ  z#MathMLPresentationPrinter._print_Pic                 C  rý   )Nr&  ú&#x221E;rþ   rÿ   r2   r2   r3   r    rÅ  z)MathMLPresentationPrinter._print_Infinityc                 C  sL   | j  d¡}| j  d¡}| | j  d¡¡ |  |¡}| |¡ | |¡ |S )Nr#  r%  r·  )r:   r½   r¾   rA   r  )r-   r°   r#  rµ  rÆ   r2   r2   r3   r    s   


z1MathMLPresentationPrinter._print_NegativeInfinityc                 C  rý   )Nr&  z&#x210F;rþ   rÿ   r2   r2   r3   Ú_print_HBar!  rÅ  z%MathMLPresentationPrinter._print_HBarc                 C  rý   )Nr&  rˆ  rþ   rÿ   r2   r2   r3   rü   &  rÅ  z+MathMLPresentationPrinter._print_EulerGammac                 C  rý   )Nr&  ÚTribonacciConstantrþ   rÿ   r2   r2   r3   Ú_print_TribonacciConstant+  rÅ  z3MathMLPresentationPrinter._print_TribonacciConstantc                 C  s8   | j  d¡}| |  |jd ¡¡ | | j  d¡¡ |S )Nr?  r   ú&#x2020;©r:   r½   r¾   rE   rÑ   rA   ©r-   r°   r?  r2   r2   r3   Ú_print_Dagger0  s   z'MathMLPresentationPrinter._print_Daggerc                 C  sd   | j  d¡}| |  |jd ¡¡ | j  d¡}| | j  d¡¡ | |¡ | |  |jd ¡¡ |S )Nr#  r   r%  z&#x2208;rº   rË  )r-   r°   r#  r%  r2   r2   r3   Ú_print_Contains6  s   
z)MathMLPresentationPrinter._print_Containsc                 C  rý   )Nr&  z&#x210B;rþ   rÿ   r2   r2   r3   Ú_print_HilbertSpace?  rÅ  z-MathMLPresentationPrinter._print_HilbertSpacec                 C  s8   | j  d¡}| | j  d¡¡ | |  |jd ¡¡ |S )Nr?  z	&#x1D49E;r   ©r:   r½   r¾   rA   rE   rÑ   rÌ  r2   r2   r3   Ú_print_ComplexSpaceD  s   z-MathMLPresentationPrinter._print_ComplexSpacec                 C  rý   )Nr&  z&#x2131;rþ   rÿ   r2   r2   r3   Ú_print_FockSpaceJ  rÅ  z*MathMLPresentationPrinter._print_FockSpacec           	      C  s¶  ddddœ}| j  d¡}t|jƒdkr7tdd„ |jD ƒƒr7| j  d	¡}| | j  |t|jƒ ¡¡ | |¡ nnt|jƒD ]h}| j  d	¡}| | j  |d
 ¡¡ t|ƒd
krZ| |¡ t|ƒdkrz| j  d¡}| |¡ | |  |d
 ¡¡ | |¡ t|ƒdkr¤| j  d¡}| |¡ | |  |d
 ¡¡ | |  |d ¡¡ | |¡ q<| | j	|j
td dd¡ t|jƒD ] }| j  d	¡}| | j  d¡¡ | |¡ | |  |d ¡¡ q¸|S )Nz&#x222B;z&#x222C;z&#x222D;)rº   rñ   r  r#  r  c                 s  s    | ]	}t |ƒd kV  qdS )rº   N)rÃ   )r2  rÃ  r2   r2   r3   Ú	<genexpr>T  s   € z<MathMLPresentationPrinter._print_Integral.<locals>.<genexpr>r%  rº   rñ   r?  r@  r   T©r«  r~  r   )r:   r½   rÃ   r  Úallr¾   rA   rU  rE   r®  r  r   )	r-   rI   Ú
intsymbolsr#  r%  rÃ  r?  r@  Údr2   r2   r3   r  P  s@   "




€ÿ
z)MathMLPresentationPrinter._print_Integralc                 C  s@  t |jƒ}| j d¡}|  |d d ¡}|  |d d ¡}| j d¡}| | j |  |¡¡¡ | j d¡}|  |d d ¡}| j d¡}	|	 | j d¡¡ | |¡ | |	¡ | |¡ | |¡ | |¡ | |¡ | j d¡}
|
 |¡ tt	|j
ƒƒdkrŠ|
 |  |j
¡¡ |
S | j d¡}| |  |j
¡¡ |
 |¡ |
S )	NÚ
munderoverr   rº   rñ   r%  r#  r  r©  )r  r  r:   r½   rE   r¾   rA   r´   rÃ   rê   r  )r-   r°   r  Úsubsupr  r  ÚsummandÚlowÚvarÚequalr#  Úfencer2   r2   r3   r  v  s2   







ü
z$MathMLPresentationPrinter._print_Sumr   c           	        s.  ‡ fdd„}dd„ ‰t |jƒ\}}}ˆ|ƒ}‡fdd„|D ƒ}‡fdd„|D ƒ}ˆ j d¡}| ˆ j |¡¡ t|ƒd	krYt|ƒd	krF|}nEˆ j d
¡}| |¡ | ||ƒ¡ n2t|ƒd	krrˆ j d¡}| |¡ | ||ƒ¡ nˆ j d¡}| |¡ | ||ƒ¡ | ||ƒ¡ |dkr•| dd¡ |S )Nc                   r  )Nrº   r#  r   r%  r  r&  r   r!  r'  r2   r3   r(  –  r)  z5MathMLPresentationPrinter._print_Symbol.<locals>.joinc                 S  r*  r9   r+  r-  r2   r2   r3   r±   ¨  r/  z:MathMLPresentationPrinter._print_Symbol.<locals>.translatec                   r0  r2   r2   r1  r4  r2   r3   r5  °  r6  z;MathMLPresentationPrinter._print_Symbol.<locals>.<listcomp>c                   r0  r2   r2   r7  r4  r2   r3   r5  ±  r6  r&  r   r>  r?  r@  ÚboldÚmathvariant)r   r9  r:   r½   r¾   rA   rÃ   r²  )	r-   r:  Ústyler(  r9  r;  r<  r=  rÆ   r2   rA  r3   rB  •  s2   


z'MathMLPresentationPrinter._print_Symbolc                 C  s   | j || jd dS )Nr!   )rá  )rB  rD  )r-   r:  r2   r2   r3   ru  Ë  s   ÿz-MathMLPresentationPrinter._print_MatrixSymbolc                 C  s2   | j  d¡}| dd¡ | |  |jd ¡¡ |S )NÚmencloseÚnotationÚtopr   ©r:   r½   r²  r¾   rE   rÑ   )r-   rI   Úencr2   r2   r3   Ú_print_conjugateÑ  s   z*MathMLPresentationPrinter._print_conjugatec                 C  sN   | j  d¡}| |  |td ¡¡ | j  d¡}| | j  |¡¡ | |¡ |S )Nr#  ÚFuncr%  )r:   r½   r¾   r®  r   rA   )r-   ÚoprI   Úrowr%  r2   r2   r3   Ú_print_operator_after×  s   
z/MathMLPresentationPrinter._print_operator_afterc                 C  ó   |   d|jd ¡S )Nú!r   ©rë  rÑ   ©r-   rI   r2   r2   r3   Ú_print_factorialß  ó   z*MathMLPresentationPrinter._print_factorialc                 C  rì  )Nz!!r   rî  rï  r2   r2   r3   Ú_print_factorial2â  rñ  z+MathMLPresentationPrinter._print_factorial2c                 C  s^   | j  d¡}| j  d¡}| dd¡ | |  |jd ¡¡ | |  |jd ¡¡ | |¡ |S )Nr©  r¯  ÚlinethicknessÚ0r   rº   rå  )r-   rI   r­  r³  r2   r2   r3   Ú_print_binomialå  s   
z)MathMLPresentationPrinter._print_binomialc                 C  s^  |j jrht|j jƒdkrh|j jdkrh| jd rh|j jdkr,| j d¡}| |  	|j
¡¡ |j jdkrK| j d¡}| |  	|j
¡¡ | |  	|j j¡¡ |j jdkrf| j d¡}| |  	d¡¡ | |¡ |S |S |j jrÌ|j jdkrÌ|j jr«| j d¡}| |  	d¡¡ | j d¡}| |  |j
td	 ¡¡ | |  |j  | jd
 ¡¡ | |¡ |S | j d¡}| |  |j
td	 ¡¡ | |  |j | jd
 ¡¡ |S |j jr| j d¡}| |  	d¡¡ |j dkrï| |  	|j
¡¡ |S | j d¡}| |  |j
td	 ¡¡ | |  	|j  ¡¡ | |¡ |S | j d¡}| |  |j
td	 ¡¡ | |  	|j ¡¡ |S )Nrº   r#   rñ   ÚmsqrtÚmrootrÍ   r¯  r?  r\   r   )rE  rF  rc   rë   ré   rD  r:   r½   r¾   rE   rG  Úis_negativer®  r   rÁ  )r-   r°   rÆ   r³  rä  r2   r2   r3   rJ  î  s`   $ÿ
ÿ
ÿ

ü
z$MathMLPresentationPrinter._print_Powc                 C  rK  r9   rL  rÿ   r2   r2   r3   rM  $  rN  z'MathMLPresentationPrinter._print_Numberc                 C  sL   | j  d¡}| dd¡ | dd¡ | |  |j¡¡ | |  |j¡¡ |S )Nr©  r¼  õ   âŸ©r¾  õ   âŸ¨)r:   r½   r²  r¾   rE   ra   r_   )r-   rÝ   r­  r2   r2   r3   Ú_print_AccumulationBounds)  s   z3MathMLPresentationPrinter._print_AccumulationBoundsc                 C  sž  t |jƒrd}n|  |¡}| j d¡}d}t|jƒD ]M\}}||7 }|dkrI| j d¡}| j d¡}| | j |¡¡ | |¡ | |  	|¡¡ n| j d¡}| | j |¡¡ | |¡ |  	|¡}	| |	¡ q| j d¡}
|dkr•| j d¡}| j d¡}| | j |¡¡ | |¡ | |  	|¡¡ n| j d¡}| | j |¡¡ |
 |¡ | j d¡}| j d¡}| |
¡ | |¡ | |¡ | |  	|j¡¡ |S )Nz&#x2202;r#  r   rñ   r?  r%  r¯  )
r	   rI   r´   r:   r½   rU  rV  r¾   rA   rE   )r-   r°   r×  rå   Údimr:  ÚnumrÆ   Úxxrµ  Úmnumr#  r³  r2   r2   r3   rX  1  sF   









z+MathMLPresentationPrinter._print_Derivativec                 C  sœ   | j  d¡}| j  d¡}|  |¡dkr"| jd r"| | j  d¡¡ n| | j  |  |¡¡¡ | j  d¡}|jD ]
}| |  |¡¡ q7| |¡ | |¡ |S )Nr#  r&  rš   r   r›   r©  )r:   r½   r´   rD  r¾   rA   rÑ   rE   )r-   r°   r#  rÆ   rµ  rÔ   r2   r2   r3   r[  a  s   


z)MathMLPresentationPrinter._print_Functionc                 C  s^  t |jƒ}t|j|dd}| jd }| j d¡}d|v rŒ| d¡\}}|d dkr/|dd … }| j d	¡}| | j 	|¡¡ | |¡ | j d
¡}	|	 | j 	|¡¡ | |	¡ | j d¡}
| j d	¡}| | j 	d¡¡ |
 |¡ | j d	¡}| | j 	|¡¡ |
 |¡ | |
¡ |S |dkr•|  
d ¡S |dkrž|  d ¡S | j d	¡}| | j 	|¡¡ |S )NT)Ústrip_zerosr%   r#  r°   r   r¸  rº   r|  r%  r?  Ú10z+infz-inf)r   rQ  rO  rP  rD  r:   r½   Úsplitr¾   rA   r  r  )r-   rI   ÚdpsÚstr_realÚ	separatorr#  ÚmantrE  r|  r%  r?  r2   r2   r3   rS  o  s<   








z&MathMLPresentationPrinter._print_Floatc                 C  s   | j  d¡}| j  d¡}| j  d¡}| | j  d¡¡ | |¡ | |  |jd ¡¡ | |¡ | j  d¡}| |  |jd ¡¡ | |¡ |S )Nr#  r>  r&  ÚLir   r©  rº   rÐ  )r-   rI   r#  rå   r&  r­  r2   r2   r3   Ú_print_polylog–  s   


z(MathMLPresentationPrinter._print_polylogc                 C  sp   | j  d¡}| j  d¡}| | j  |  |¡¡¡ | |¡ | j  d¡}|jD ]
}| |  |¡¡ q&| |¡ |S )Nr#  r&  r©  ©r:   r½   r¾   rA   r´   rÑ   rE   )r-   r°   r#  r&  r­  rÔ   r2   r2   r3   r\  ¤  s   


z&MathMLPresentationPrinter._print_Basicc                 C  sB   | j  d¡}| j  d¡}|jD ]
}| |  |¡¡ q| |¡ |S )Nr#  r©  ri  )r-   r°   r#  rÆ   rÔ   r2   r2   r3   Ú_print_Tuple¯  s   

z&MathMLPresentationPrinter._print_Tuplec                 C  sÂ   | j  d¡}| j  d¡}|j|jkr(| dd¡ | dd¡ | |  |j¡¡ n2|jr2| dd¡ n| dd¡ |jrB| dd	¡ n| dd
¡ | |  |j¡¡ | |  |j¡¡ | |¡ |S )Nr#  r©  r¼  Ú}r¾  Ú{ú)r½  ú(r   )	r:   r½   ÚstartÚendr²  r¾   rE   Ú
right_openÚ	left_open)r-   rÝ   r#  r­  r2   r2   r3   Ú_print_Interval·  s    
z)MathMLPresentationPrinter._print_Intervalc                 C  sT   | j  d¡}| j  d¡}| dd¡ | dd¡ | |  |jd ¡¡ | |¡ |S )Nr#  r©  r¼  ú|r¾  r   rå  )r-   rI   rE  r#  rÆ   r2   r2   r3   Ú
_print_AbsÏ  ó   
z$MathMLPresentationPrinter._print_Absc                 C  sj   | j  d¡}| j  d¡}| dd¡ | | j  |¡¡ | |¡ | j  d¡}| |  |¡¡ | |¡ |S )Nr#  r&  rà  Úfrakturr©  )r:   r½   r²  r¾   rA   rE   )r-   rÞ   rI   r#  r&  r­  r2   r2   r3   Ú_print_re_imÚ  s   

z&MathMLPresentationPrinter._print_re_imc                 C  rì  )NÚRr   ©r  rÑ   ©r-   rI   rE  r2   r2   r3   Ú	_print_reå  rñ  z#MathMLPresentationPrinter._print_rec                 C  rì  )NÚIr   r  r  r2   r2   r3   Ú	_print_imè  rñ  z#MathMLPresentationPrinter._print_imc                 C  sZ   | j  d¡}| j  d¡}| | j  |  |¡¡¡ | |¡ |jD ]
}| |  |¡¡ q |S )Nr#  r&  r	  )r-   r°   r#  r&  rÔ   r2   r2   r3   r]  ë  s   

z(MathMLPresentationPrinter._print_AssocOpc                 C  sz   | j  d¡}| |  |jd |¡¡ |jdd … D ]!}| j  d¡}| | j  |¡¡ |  ||¡}| |¡ | |¡ q|S )Nr#  r   rº   r%  )r:   r½   r¾   r®  rÑ   rA   )r-   rI   ÚsymbolÚprecr#  rÔ   rÆ   rµ  r2   r2   r3   Ú_print_SetOpô  s   
z&MathMLPresentationPrinter._print_SetOpc                 C  ó   t d }|  |d|¡S )Nrª   z&#x222A;©r   r!  ©r-   rI   r   r2   r2   r3   Ú_print_Unionÿ  ó   z&MathMLPresentationPrinter._print_Unionc                 C  r"  )Nr«   z&#x2229;r#  r$  r2   r2   r3   Ú_print_Intersection  r&  z-MathMLPresentationPrinter._print_Intersectionc                 C  r"  )NÚ
Complementz&#x2216;r#  r$  r2   r2   r3   rn    r&  z+MathMLPresentationPrinter._print_Complementc                 C  r"  )NÚSymmetricDifferenceú&#x2206;r#  r$  r2   r2   r3   Ú_print_SymmetricDifference  r&  z4MathMLPresentationPrinter._print_SymmetricDifferencec                 C  r"  )NÚ
ProductSetz&#x00d7;r#  r$  r2   r2   r3   rq    r&  z+MathMLPresentationPrinter._print_ProductSetc                 C  ó   |   |j¡S r9   )Ú
_print_setrÑ   )r-   r.  r2   r2   r3   rj    rú   z*MathMLPresentationPrinter._print_FiniteSetc                 C  sN   t |td}| j d¡}| dd¡ | dd¡ |D ]
}| |  |¡¡ q|S )N©Úkeyr©  r¼  r  r¾  r  )Úsortedr   r:   r½   r²  r¾   rE   )r-   r.  r"  r­  r$  r2   r2   r3   r.    s   z$MathMLPresentationPrinter._print_setc                 C  sÜ   | j  d¡}|d jr&|d js&| j  d¡}| |  |d ¡¡ | |¡ n
| |  |d ¡¡ |dd … D ]5}| j  d¡}| | j  |¡¡ |jr\|js\| j  d¡}| |  |¡¡ n|  |¡}| |¡ | |¡ q6|S )Nr#  r   r©  rº   r%  )r:   r½   Ú
is_BooleanÚis_Notr¾   rE   rA   )r-   rÑ   r  r#  r­  rÔ   rÆ   rµ  r2   r2   r3   Ú_print_LogOp!  s    

z&MathMLPresentationPrinter._print_LogOpc                 C  s¨  ddl m} ||jkr|  |j¡S t||ƒr| ¡  ¡ }nd|fg}| j d¡}|D ]§\}}t	|j
 ¡ ƒ}|jdd„ d t|ƒD ]\}\}	}
|
dkrj|ra| j d¡}| | j d	¡¡ | |¡ | |  |	¡¡ qA|
d
kr‹| j d¡}| | j d¡¡ | |¡ | |  |	¡¡ qA|r¡| j d¡}| | j d	¡¡ | |¡ | j d¡}| |  |
¡¡ | |¡ | j d¡}| | j d¡¡ | |¡ | |  |	¡¡ qAq*|S )Nr   )ÚVectorr#  c                 S  s   | d   ¡ S )Nr   )Ú__str__)rÆ   r2   r2   r3   Ú<lambda>C  s    zAMathMLPresentationPrinter._print_BasisDependent.<locals>.<lambda>r/  rº   r%  r¸  rÍ   r·  r©  r¡  )Úsympy.vectorr5  ÚzerorE   r¥  Úseparater"  r:   r½   r  Ú
componentsÚsortrÛ   r¾   rA   )r-   rI   r5  r"  r#  ÚsystemÚvectÚ
inneritemsrÝ   ÚkÚvr%  Úmbracr2   r2   r3   Ú_print_BasisDependent5  sF   







éz/MathMLPresentationPrinter._print_BasisDependentc                 C  ó   t |jtd}|  |d¡S )Nr/  z&#x2227;©r1  rÑ   r   r4  ©r-   rI   rÑ   r2   r2   r3   Ú
_print_And_  ó   z$MathMLPresentationPrinter._print_Andc                 C  rD  )Nr/  z&#x2228;rE  rF  r2   r2   r3   Ú	_print_Orc  rH  z#MathMLPresentationPrinter._print_Orc                 C  rD  )Nr/  z&#x22BB;rE  rF  r2   r2   r3   ry  g  rH  z$MathMLPresentationPrinter._print_Xorc                 C  s   |   |jd¡S )Nz&#x21D2;)r4  rÑ   rï  r2   r2   r3   rw  k  s   z(MathMLPresentationPrinter._print_Impliesc                 C  rD  )Nr/  z&#x21D4;rE  rF  r2   r2   r3   Ú_print_Equivalentn  rH  z+MathMLPresentationPrinter._print_Equivalentc                 C  s‚   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ |jd jr2| j  d¡}| |  |jd ¡¡ n|  |jd ¡}| |¡ |S )Nr#  r%  z&#xAC;r   r©  )r:   r½   r¾   rA   rÑ   r2  rE   )r-   r°   r#  r%  rÆ   r2   r2   r3   rx  r  s   

z$MathMLPresentationPrinter._print_Notc                 C  ó(   | j  d¡}| | j  |  |¡¡¡ |S ©Nr&  ©r:   r½   r¾   rA   r´   ©r-   r°   r&  r2   r2   r3   Ú_print_bool  ó   z%MathMLPresentationPrinter._print_boolc                 C  rK  rL  rM  rN  r2   r2   r3   Ú_print_NoneType‡  rP  z)MathMLPresentationPrinter._print_NoneTypec                 C  s,  d}| j  d¡}| dd¡ | dd¡ |jjr0|jjr0|jjr(|ddd	|f}nF|d	dd|f}n>|jjrA||d |j |d f}n-|jjrSt|ƒ}t	|ƒt	|ƒ|f}nt
|ƒd
krjt|ƒ}t	|ƒt	|ƒ||d f}nt|ƒ}|D ]#}||kr‹| j  d¡}| | j  |¡¡ | |¡ qp| |  |¡¡ qp|S )Nu   â€¦r©  r¼  r  r¾  r  rÍ   r   rº   é   r&  )r:   r½   r²  r  Úis_infiniteÚstopÚstepÚis_positiveÚiterÚnextrÃ   Útupler¾   rA   rE   )r-   r.  Údotsr­  ÚprintsetÚitÚelr&  r2   r2   r3   Ú_print_RangeŒ  s0   z&MathMLPresentationPrinter._print_Rangec                 C  s€   t |jtd}| j d¡}| j d¡}| | j t|jƒ 	¡ ¡¡ | |¡ | j d¡}|D ]
}| |  
|¡¡ q.| |¡ |S )Nr/  r#  r%  r©  )r1  rÑ   r   r:   r½   r¾   rA   rê   Úfuncr¯   rE   )r-   rI   rÑ   r#  r%  r­  r  r2   r2   r3   Ú_hprint_variadic_function¬  s   

z3MathMLPresentationPrinter._hprint_variadic_functionc                 C  s6   | j  d¡}| |  d ¡¡ | |  |jd ¡¡ |S )Nr?  r   )r:   r½   r¾   r  rE   rÑ   )r-   rI   r?  r2   r2   r3   Ú
_print_expº  s   z$MathMLPresentationPrinter._print_expc                 C  sb   | j  d¡}| |  |j¡¡ | j  d¡}| | j  |  |¡¡¡ | |¡ | |  |j¡¡ |S )Nr#  r%  )r:   r½   r¾   rE   r^  rA   r´   r_  ©r-   r°   r#  rÆ   r2   r2   r3   r`  À  s   
z+MathMLPresentationPrinter._print_Relationalc                 C  rK  r9   rL  rf  r2   r2   r3   rg  É  rN  z$MathMLPresentationPrinter._print_intc                 C  sŠ   | j  d¡}|j\}}| j  d¡}| dd¡ | | j  |j| ¡¡ | |¡ | j  d¡}| dd¡ | | j  |j¡¡ | |¡ |S )Nr>  r&  rà  rß  )r:   r½   Ú_idr²  r¾   rA   Ú_variable_namesÚ_name)r-   r°   r>  Úindexr=  r&  r2   r2   r3   Ú_print_BaseScalarÎ  s   


z+MathMLPresentationPrinter._print_BaseScalarc                 C  sÈ   | j  d¡}|j\}}| j  d¡}| j  d¡}| dd¡ | | j  |j| ¡¡ | |¡ | j  d¡}| | j  d¡¡ | |¡ | |¡ | j  d¡}| dd¡ | | j  |j¡¡ | |¡ |S )Nr>  Úmoverr&  rà  rß  r%  ú^)r:   r½   rc  r²  r¾   rA   Ú_vector_namesre  )r-   r°   r>  rf  r=  rh  r&  r%  r2   r2   r3   Ú_print_BaseVectorÛ  s    




z+MathMLPresentationPrinter._print_BaseVectorc                 C  sl   | j  d¡}| j  d¡}| dd¡ | | j  d¡¡ | |¡ | j  d¡}| | j  d¡¡ | |¡ |S )Nrh  r&  rà  rß  rô  r%  ri  ©r:   r½   r²  r¾   rA   )r-   r°   rh  r&  r%  r2   r2   r3   Ú_print_VectorZeroí  s   

z+MathMLPresentationPrinter._print_VectorZeroc                 C  óp   | j  d¡}|j}|j}| |  |td ¡¡ | j  d¡}| | j  d¡¡ | |¡ | |  |td ¡¡ |S )Nr#  r   r%  r¢  ©r:   r½   Ú_expr1Ú_expr2r¾   r®  r   rA   ©r-   rI   r#  Úvec1Úvec2r%  r2   r2   r3   Ú_print_Crossø  ó   
z&MathMLPresentationPrinter._print_Crossc                 C  óx   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | j  d¡}| | j  d¡¡ | |¡ | |  |jtd ¡¡ |S )Nr#  r%  ú&#x2207;r¢  r   ©r:   r½   r¾   rA   r®  Ú_exprr   ©r-   rI   r#  r%  r2   r2   r3   Ú_print_Curl  ó   

z%MathMLPresentationPrinter._print_Curlc                 C  rw  )Nr#  r%  rx  r   r   ry  r{  r2   r2   r3   Ú_print_Divergence  r}  z+MathMLPresentationPrinter._print_Divergencec                 C  rn  )Nr#  r   r%  r   ro  rr  r2   r2   r3   Ú
_print_Dot  rv  z$MathMLPresentationPrinter._print_Dotc                 C  óP   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | |  |jtd ¡¡ |S )Nr#  r%  rx  r   ry  r{  r2   r2   r3   Ú_print_Gradient$  ó   
z)MathMLPresentationPrinter._print_Gradientc                 C  r€  )Nr#  r%  r*  r   ry  r{  r2   r2   r3   Ú_print_Laplacian,  r‚  z*MathMLPresentationPrinter._print_Laplacianc                 C  ó.   | j  d¡}| dd¡ | | j  d¡¡ |S )Nr&  rà  Únormalz&#x2124;rl  rÿ   r2   r2   r3   Ú_print_Integers4  ó   z)MathMLPresentationPrinter._print_Integersc                 C  r„  )Nr&  rà  r…  z&#x2102;rl  rÿ   r2   r2   r3   Ú_print_Complexes:  r‡  z*MathMLPresentationPrinter._print_Complexesc                 C  r„  )Nr&  rà  r…  z&#x211D;rl  rÿ   r2   r2   r3   Ú_print_Reals@  r‡  z&MathMLPresentationPrinter._print_Realsc                 C  r„  )Nr&  rà  r…  ú&#x2115;rl  rÿ   r2   r2   r3   Ú_print_NaturalsF  r‡  z)MathMLPresentationPrinter._print_Naturalsc                 C  sV   | j  d¡}| j  d¡}| dd¡ | | j  d¡¡ | |¡ | |  tj¡¡ |S )Nr>  r&  rà  r…  rŠ  )r:   r½   r²  r¾   rA   rE   r   ÚZero)r-   r°   r8  rÆ   r2   r2   r3   Ú_print_Naturals0L  s   
z*MathMLPresentationPrinter._print_Naturals0c                 C  s|   |j d |j d  }|j d }| j d¡}| j d¡}| dd¡ | dd	¡ | |  |¡¡ | |¡ | |  |¡¡ |S )
Nr   rº   rñ   r?  r©  r¼  rù  r¾  rú  )rÑ   r:   r½   r²  r¾   rE   )r-   rI   Úshiftr]   r3  r­  r2   r2   r3   Ú_print_SingularityFunctionU  s   

z4MathMLPresentationPrinter._print_SingularityFunctionc                 C  rý   )Nr&  ÚNaNrþ   rÿ   r2   r2   r3   r  a  rÅ  z$MathMLPresentationPrinter._print_NaNc                 C  s°   | j  d¡}| j  d¡}| | j  |¡¡ | |¡ | |  |jd ¡¡ t|jƒdkr.|S | j  d¡}| j  d¡}|jdd … D ]
}| |  |¡¡ qA| |¡ | |¡ |S )Nr>  r&  r   rº   r#  r©  )r:   r½   r¾   rA   rE   rÑ   rÃ   )r-   r°   r9  r8  r&  r#  rµ  rÔ   r2   r2   r3   Ú_print_number_functionf  s   


z0MathMLPresentationPrinter._print_number_functionc                 C  ó   |   |d¡S )NÚB©r‘  rø   r2   r2   r3   Ú_print_bernoulliy  rú   z*MathMLPresentationPrinter._print_bernoullic                 C  r’  )Nr  r”  rø   r2   r2   r3   Ú_print_catalan~  rú   z(MathMLPresentationPrinter._print_catalanc                 C  r’  )NÚEr”  rø   r2   r2   r3   Ú_print_euler  rú   z&MathMLPresentationPrinter._print_eulerc                 C  r’  )NÚFr”  rø   r2   r2   r3   Ú_print_fibonacci„  rú   z*MathMLPresentationPrinter._print_fibonaccic                 C  r’  )NÚLr”  rø   r2   r2   r3   Ú_print_lucas‡  rú   z&MathMLPresentationPrinter._print_lucasc                 C  r’  )Nz&#x03B3;r”  rø   r2   r2   r3   Ú_print_stieltjesŠ  rú   z*MathMLPresentationPrinter._print_stieltjesc                 C  r’  )NÚTr”  rø   r2   r2   r3   Ú_print_tribonacci  rú   z+MathMLPresentationPrinter._print_tribonaccic                 C  s`   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | j  d¡}| | j  d¡¡ | |¡ |S )Nrh  r%  rÆ  ú~rþ   )r-   r°   rÆ   r%  r2   r2   r3   Ú_print_ComplexInfinity  s   

z0MathMLPresentationPrinter._print_ComplexInfinityc                 C  rý   )Nr%  z&#x2205;rþ   rÿ   r2   r2   r3   r
  š  rÅ  z)MathMLPresentationPrinter._print_EmptySetc                 C  rý   )Nr%  z	&#x1D54C;rþ   rÿ   r2   r2   r3   Ú_print_UniversalSetŸ  rÅ  z-MathMLPresentationPrinter._print_UniversalSetc                 C  óŒ   ddl m} |j}| j d¡}t||ƒs(| j d¡}| |  |¡¡ | |¡ n| |  |¡¡ | j d¡}| | j d¡¡ | |¡ |S )Nr   ©rp   r?  r©  r%  rÊ  ©	Úsympy.matricesrp   rÔ   r:   r½   r¥  r¾   rE   rA   ©r-   rI   rp   Úmatr3  r­  r%  r2   r2   r3   Ú_print_Adjoint¤  ó   

z(MathMLPresentationPrinter._print_Adjointc                 C  r£  )Nr   r¤  r?  r©  r%  rž  r¥  r§  r2   r2   r3   Ú_print_Transpose³  rª  z*MathMLPresentationPrinter._print_Transposec                 C  st   ddl m} |j}| j d¡}t||ƒs(| j d¡}| |  |¡¡ | |¡ n| |  |¡¡ | |  d¡¡ |S )Nr   r¤  r?  r©  rÍ   )r¦  rp   rÔ   r:   r½   r¥  r¾   rE   )r-   rI   rp   r¨  r3  r­  r2   r2   r3   Ú_print_InverseÂ  s   
z(MathMLPresentationPrinter._print_Inversec                 C  s&  ddl m} | j d¡}|j}t|d tƒr%|d  ¡ t|dd … ƒ }nt|ƒ}t||ƒrZ| 	¡ rZ|d dkr?|dd … }n|d  |d< | j d¡}| 
| j d¡¡ | 
|¡ |d d… D ]"}| 
|  |t|ƒd¡¡ | j d¡}| 
| j d	¡¡ | 
|¡ q`| 
|  |d t|ƒd¡¡ |S )
Nr   )ÚMatMulr#  rº   rÍ   r%  r·  Fr¡  )Ú!sympy.matrices.expressions.matmulr­  r:   r½   rÑ   r¥  r   rÅ   r  r¼   r¾   rA   r®  r
   )r-   rI   r­  rÆ   rÑ   r%  rÔ   r2   r2   r3   Ú_print_MatMulÏ  s0   
ÿÿz'MathMLPresentationPrinter._print_MatMulc                 C  s|   ddl m} |j|j}}| j d¡}t||ƒs,| j d¡}| |  |¡¡ | |¡ n| |  |¡¡ | |  |¡¡ |S )Nr   r¤  r?  r©  )	r¦  rp   rG  rE  r:   r½   r¥  r¾   rE   )r-   rI   rp   rG  rE  r3  r­  r2   r2   r3   Ú_print_MatPowì  s   
z'MathMLPresentationPrinter._print_MatPowc                 C  s„   | j  d¡}|j}|d d… D ]"}| |  |t|ƒd¡¡ | j  d¡}| | j  d¡¡ | |¡ q| |  |d t|ƒd¡¡ |S )Nr#  rÍ   Fr%  z&#x2218;)r:   r½   rÑ   r¾   r®  r
   rA   )r-   rI   rÆ   rÑ   rÔ   r%  r2   r2   r3   Ú_print_HadamardProductù  s   ÿÿz0MathMLPresentationPrinter._print_HadamardProductc                 C  rý   )Nr|  z&#x1D7D8rþ   ©r-   ÚZrÆ   r2   r2   r3   Ú_print_ZeroMatrix  rÅ  z+MathMLPresentationPrinter._print_ZeroMatrixc                 C  rý   )Nr|  z&#x1D7D9rþ   r²  r2   r2   r3   Ú_print_OneMatrix  rÅ  z*MathMLPresentationPrinter._print_OneMatrixc                 C  rý   )Nr&  z	&#x1D540;rþ   )r-   r  rÆ   r2   r2   r3   Ú_print_Identity  rÅ  z)MathMLPresentationPrinter._print_Identityc                 C  óT   | j  d¡}| j  d¡}| dd¡ | dd¡ | |  |jd ¡¡ | |¡ |S )Nr#  r©  r¼  u   âŒ‹r¾  u   âŒŠr   rå  rb  r2   r2   r3   Ú_print_floor  r  z&MathMLPresentationPrinter._print_floorc                 C  r·  )Nr#  r©  r¼  u   âŒ‰r¾  u   âŒˆr   rå  rb  r2   r2   r3   Ú_print_ceiling  r  z(MathMLPresentationPrinter._print_ceilingc                 C  sž   | j  d¡}| j  d¡}|jd }t|ƒdkr|  |d ¡}n|  |¡}| |¡ | j  d¡}| | j  d¡¡ | |¡ | |  |jd ¡¡ | |¡ |S )Nr©  r#  r   rº   r%  z&#x21A6;)r:   r½   rÑ   rÃ   rE   r¾   rA   )r-   r°   rÆ   r#  Úsymbolsr%  r2   r2   r3   rs  '  s   




z'MathMLPresentationPrinter._print_Lambdac                 C  ra  r¨  rb  )r-   r°   rÆ   rÝ   r2   r2   r3   Ú_print_tuple7  s   z&MathMLPresentationPrinter._print_tuplec                 C  r-  r9   )rE   Úlabelrø   r2   r2   r3   Ú_print_IndexedBase=  rú   z,MathMLPresentationPrinter._print_IndexedBasec                 C  s\   | j  d¡}| |  |j¡¡ t|jƒdkr#| |  |jd ¡¡ |S | |  |j¡¡ |S )Nr>  rº   r   )r:   r½   r¾   rE   rG  rÃ   Úindicesrÿ   r2   r2   r3   Ú_print_Indexed@  s   z(MathMLPresentationPrinter._print_Indexedc                 C  sv   | j  d¡}| | j|jtd dd¡ | j  d¡}| dd¡ | dd¡ |jD ]
}| |  |¡¡ q)| |¡ |S )	Nr>  ÚAtomTrÔ  r©  r¼  r)   r¾  )	r:   r½   r¾   r®  Úparentr   r²  r¾  rE   )r-   r°   rÆ   r­  rÝ   r2   r2   r3   Ú_print_MatrixElementI  s   

z.MathMLPresentationPrinter._print_MatrixElementc                 C  óv   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | j  d¡}| dd¡ |jD ]
}| |  |¡¡ q)| |¡ |S )Nr#  r&  z	&#x1d5a5;r©  Ú
separatorsr  ©r:   r½   r¾   rA   r²  rÑ   rE   ©r-   r°   rÆ   r&  rµ  rÝ   r2   r2   r3   Ú_print_elliptic_fT  ó   


z+MathMLPresentationPrinter._print_elliptic_fc                 C  rÃ  )Nr#  r&  z	&#x1d5a4;r©  rÄ  r  rÅ  rÆ  r2   r2   r3   Ú_print_elliptic_e`  rÈ  z+MathMLPresentationPrinter._print_elliptic_ec                 C  s’   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | j  d¡}t|jƒdkr.| dd¡ n| dd¡ |jD ]
}| |  |¡¡ q7| |¡ |S )	Nr#  r&  z	&#x1d6f1;r©  rñ   rÄ  r  z;|)r:   r½   r¾   rA   rÃ   rÑ   r²  rE   rÆ  r2   r2   r3   Ú_print_elliptic_pil  s   


z,MathMLPresentationPrinter._print_elliptic_pic                 C  sJ   | j  d¡}| j  d¡}| | j  d¡¡ | |¡ | |  |j¡¡ |S )Nr#  r&  ÚEirÐ  )r-   r°   rÆ   r&  r2   r2   r3   Ú	_print_Ei{  s   
z#MathMLPresentationPrinter._print_Eic                 C  ó~   | j  d¡}| j  d¡}| j  d¡}| | j  d¡¡ | |¡ | |  |jd ¡¡ | |¡ | |  |jdd … ¡¡ |S )Nr#  r>  r%  r—  r   rº   rÐ  ©r-   r°   rÆ   rµ  r%  r2   r2   r3   Ú_print_expintƒ  ó   

z'MathMLPresentationPrinter._print_expintc                 C  ó˜   | j  d¡}| j  d¡}| j  d¡}| | j  d¡¡ | |¡ | |  |jd ¡¡ | |  |jdd… ¡¡ | |¡ | |  |jdd … ¡¡ |S )Nr#  r@  r%  ÚPr   rº   r  rÐ  rÎ  r2   r2   r3   Ú_print_jacobiŽ  ó   

z'MathMLPresentationPrinter._print_jacobic                 C  rÑ  )Nr#  r@  r%  r  r   rº   rñ   rÐ  rÎ  r2   r2   r3   Ú_print_gegenbauerš  rÔ  z+MathMLPresentationPrinter._print_gegenbauerc                 C  rÍ  )Nr#  r>  r%  rž  r   rº   rÐ  rÎ  r2   r2   r3   Ú_print_chebyshevt¦  rÐ  z+MathMLPresentationPrinter._print_chebyshevtc                 C  rÍ  )Nr#  r>  r%  ÚUr   rº   rÐ  rÎ  r2   r2   r3   Ú_print_chebyshevu±  rÐ  z+MathMLPresentationPrinter._print_chebyshevuc                 C  rÍ  )Nr#  r>  r%  rÒ  r   rº   rÐ  rÎ  r2   r2   r3   Ú_print_legendre¼  rÐ  z)MathMLPresentationPrinter._print_legendrec                 C  rÑ  )Nr#  r@  r%  rÒ  r   rº   rñ   rÐ  rÎ  r2   r2   r3   Ú_print_assoc_legendreÇ  rÔ  z/MathMLPresentationPrinter._print_assoc_legendrec                 C  rÍ  )Nr#  r>  r%  r›  r   rº   rÐ  rÎ  r2   r2   r3   Ú_print_laguerreÓ  rÐ  z)MathMLPresentationPrinter._print_laguerrec                 C  rÑ  )Nr#  r@  r%  r›  r   rº   rñ   rÐ  rÎ  r2   r2   r3   Ú_print_assoc_laguerreÞ  rÔ  z/MathMLPresentationPrinter._print_assoc_laguerrec                 C  rÍ  )Nr#  r>  r%  ÚHr   rº   rÐ  rÎ  r2   r2   r3   Ú_print_hermiteê  rÐ  z(MathMLPresentationPrinter._print_hermite)Fr9   )r   )‹r5   r6   r7   rO   rt  r´   r®  r¿   rÕ   rè   rÁ  rî   rô   rù   r   r  r  r  r  rÇ  rü   rÉ  rÍ  rÎ  rÏ  rÑ  rÒ  r  r  rB  ru  rv  rç  rë  rð  rò  rõ  rJ  rM  rû  rX  r[  rS  r  r\  r
  r  r  Ú_print_Determinantr  r  r  r]  r!  r%  r'  rn  r+  rq  rj  r.  Ú_print_frozensetr4  rC  rG  rI  ry  rw  rJ  rx  rO  r  r  rQ  r^  r`  Ú
_print_MinÚ
_print_Maxra  r`  rg  rg  rk  rm  ru  r|  r~  r  r  rƒ  r†  rˆ  r‰  r‹  r  r  r  r‘  r•  Ú_print_bellr–  r˜  rš  rœ  r  rŸ  r¡  r
  r¢  r©  r«  r¬  r¯  r°  r±  r´  rµ  r¶  r¸  r¹  rs  r»  r½  r¿  rÂ  rÇ  rÉ  rÊ  rÌ  rÏ  rÓ  rÕ  rÖ  rØ  rÙ  rÚ  rÛ  rÜ  rÞ  r2   r2   r2   r3   rz    s   M	/		&6	60'			* 		
			rz  Úcontentc                 K  s$   |dkrt |ƒ | ¡S t|ƒ | ¡S )zŠReturns the MathML representation of expr. If printer is presentation
    then prints Presentation MathML else prints content MathML.
    Úpresentation)rz  rN   rQ   )rI   ÚprinterrB   r2   r2   r3   Úmathmlö  s   rç  c                 K  s<   |dkr	t |ƒ}nt|ƒ}| t| ƒ¡}| ¡ }t|ƒ dS )a  
    Prints a pretty representation of the MathML code for expr. If printer is
    presentation then prints Presentation MathML else prints content MathML.

    Examples
    ========

    >>> ##
    >>> from sympy import print_mathml
    >>> from sympy.abc import x
    >>> print_mathml(x+1) #doctest: +NORMALIZE_WHITESPACE
    <apply>
        <plus/>
        <ci>x</ci>
        <cn>1</cn>
    </apply>
    >>> print_mathml(x+1, printer='presentation')
    <mrow>
        <mi>x</mi>
        <mo>+</mo>
        <mn>1</mn>
    </mrow>

    rå  N)rz  rQ   rE   r   ÚtoprettyxmlÚprint)rI   ræ  rB   r.  ÚxmlÚ
pretty_xmlr2   r2   r3   Úprint_mathml  s   
rì  N)rä  )$rO   Ú
__future__r   Útypingr   Úsympy.core.mulr   Úsympy.core.singletonr   Úsympy.core.sortingr   Úsympy.core.sympifyr   Úsympy.printing.conventionsr   r	   Úsympy.printing.precedencer
   r   r   Ú&sympy.printing.pretty.pretty_symbologyr   Úsympy.printing.printerr   r   Úmpmath.libmpr   r   r   rO  r   rQ   rz  rç  rì  ÚMathMLPrinterr2   r2   r2   r3   Ú<module>   sB    8   R           e

$