§
    PŠtj|  ã                   óÊ   — d Z ddlmZmZmZmZ ddlmZmZ ddl	m
Z
mZmZ ddlmZmZmZ ddlmZmZmZ ddlmZ egZeeegZegZd„ Zd	„ Zd
„ Zd„ Zd„ Zdd„Zd„ Z d„ Z!dd„Z"dS )z‚ SymPy interface to Unification engine

See sympy.unify for module level docstring
See sympy.unify.core for algorithmic docstring é    )ÚBasicÚAddÚMulÚPow)ÚAssocOpÚ	LatticeOp)ÚMatAddÚMatMulÚ
MatrixExpr)ÚUnionÚIntersectionÚ	FiniteSet)ÚCompoundÚVariableÚCondVariable)Úcorec                 ó†   ‡ — t           t          t          t          t          t
          f}t          ˆ fd„|D ¦   «         ¦  «        S )Nc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S ©N©Ú
issubclass)Ú.0ÚaopÚops     €úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/unify/usympy.pyú	<genexpr>z$sympy_associative.<locals>.<genexpr>   s-   øè è € Ð8Ð8 s�z˜"˜cÑ"Ô"Ð8Ð8Ð8Ð8Ð8Ð8ó    )r   r	   r
   r   r   r   Úany)r   Ú	assoc_opss   ` r   Úsympy_associativer       s8   ø€ Ý�&¥&­%µ½yÐI€IÝÐ8Ð8Ð8Ð8¨iÐ8Ñ8Ô8Ñ8Ô8Ð8r   c                 óz   ‡ — t           t          t          t          t          f}t          ˆ fd„|D ¦   «         ¦  «        S )Nc              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r   r   )r   Úcopr   s     €r   r   z$sympy_commutative.<locals>.<genexpr>   s-   øè è € Ð7Ð7 s�z˜"˜cÑ"Ô"Ð7Ð7Ð7Ð7Ð7Ð7r   )r   r	   r   r   r   r   )r   Úcomm_opss   ` r   Úsympy_commutativer%      s6   ø€ Ý•V�U¥Lµ)Ð<€HÝÐ7Ð7Ð7Ð7¨hÐ7Ñ7Ô7Ñ7Ô7Ð7r   c                 óT   — t          | t          ¦  «        ot          | j        ¦  «        S r   )Ú
isinstancer   r    r   ©Úxs    r   Úis_associativer*      s"   € Ý�a�Ñ"Ô"Ð>Õ'8¸¼Ñ'>Ô'>Ð>r   c                 óÐ   — t          | t          ¦  «        sdS t          | j        ¦  «        rdS t	          | j        t
          ¦  «        rt          d„ | j        D ¦   «         ¦  «        S d S )NFTc              3   ó>   K  — | ]}t          |¦  «        j        V — Œd S r   )Ú	constructÚis_commutative)r   Úargs     r   r   z!is_commutative.<locals>.<genexpr>"   s+   è è € ÐCÐC°S•9˜S‘>”>Ô0ÐCÐCÐCÐCÐCÐCr   )r'   r   r%   r   r   r   ÚallÚargsr(   s    r   r.   r.      sp   € Ý�a�Ñ"Ô"ð ØˆuÝ˜œÑÔð ØˆtÝ�!”$�ÑÔð DÝÐCÐC¸A¼FÐCÑCÔCÑCÔCÐCðDð Dr   c                 ó   ‡ — ˆ fd„}|S )Nc                 óx   •— t          | ‰¦  «        p)t          | t          ¦  «        ot          | j        ‰¦  «        S r   )r'   r   r   r   )r)   Útyps    €r   Ú	matchtypezmk_matchtype.<locals>.matchtype%   s:   ø€ Ý˜1˜cÑ"Ô"ð BÝ˜1�hÑ'Ô'ÐA­J°q´t¸SÑ,AÔ,Að	Cr   © )r4   r5   s   ` r   Úmk_matchtyper7   $   s)   ø€ ðCð Cð Cð Cð Cð Ðr   r6   c                 ó  ‡— | ‰v rt          | ¦  «        S t          | t           t          f¦  «        r| S t          | t          ¦  «        r| j        r| S t          | j        t          ˆfd„| j        D ¦   «         ¦  «        ¦  «        S )z% Turn a SymPy object into a Compound c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r   ©Údeconstruct)r   r/   Ú	variabless     €r   r   zdeconstruct.<locals>.<genexpr>3   s-   øè è € ÐHÐH¸#�+ c¨9Ñ5Ô5ÐHÐHÐHÐHÐHÐHr   )	r   r'   r   r   Úis_Atomr   Ú	__class__Útupler1   )Úsr<   s    `r   r;   r;   *   s�   ø€ àˆI€~€~Ý˜‰{Œ{ÐÝ�!•h¥Ð-Ñ.Ô.ð ØˆÝ�a�ÑÔð  1¤9ð ØˆÝ�A”KÝÐHÐHÐHÐHÀÄÐHÑHÔHÑHÔHñJô Jð Jr   c                 óä  ‡ — t          ‰ t          t          f¦  «        r‰ j        S t          ‰ t          ¦  «        s‰ S t          ˆ fd„t          D ¦   «         ¦  «        r% ‰ j        t          t          ‰ j
        ¦  «        ddiŽS t          ˆ fd„t          D ¦   «         ¦  «        r/t          j        ‰ j        gt          t          ‰ j
        ¦  «        ¢R Ž S  ‰ j        t          t          ‰ j
        ¦  «        Ž S )z% Turn a Compound into a SymPy object c              3   óB   •K  — | ]}t          ‰j        |¦  «        V — Œd S r   ©r   r   ©r   ÚclsÚts     €r   r   zconstruct.<locals>.<genexpr>;   s/   øè è € Ð
=Ð
= S�:�a”d˜CÑ Ô Ð
=Ð
=Ð
=Ð
=Ð
=Ð
=r   ÚevaluateFc              3   óB   •K  — | ]}t          ‰j        |¦  «        V — Œd S r   rC   rD   s     €r   r   zconstruct.<locals>.<genexpr>=   s/   øè è € Ð>Ð> s�Z˜œ˜cÑ"Ô"Ð>Ð>Ð>Ð>Ð>Ð>r   )r'   r   r   r/   r   r   Úeval_false_legalr   Úmapr-   r1   Úbasic_new_legalr   Ú__new__)rF   s   `r   r-   r-   5   sç   ø€ å�!•h¥Ð-Ñ.Ô.ð ØŒuˆÝ�a�Ñ"Ô"ð ØˆÝ
Ð
=Ð
=Ð
=Ð
=Õ,<Ð
=Ñ
=Ô
=Ñ=Ô=ð -ØˆqŒt•S� A¤FÑ+Ô+Ð<°eÐ<Ð<Ð<Ý	Ð>Ð>Ð>Ð>­oÐ>Ñ>Ô>Ñ	>Ô	>ð -ÝŒ}˜QœTÐ;¥C­	°1´6Ñ$:Ô$:Ð;Ð;Ð;Ð;àˆqŒt•S� A¤FÑ+Ô+Ð,Ð,r   c                 ó:   — t          t          | ¦  «        ¦  «        S )z[ Rebuild a SymPy expression.

    This removes harm caused by Expr-Rules interactions.
    )r-   r;   )r@   s    r   ÚrebuildrN   B   s   € õ
 •[ ‘^”^Ñ$Ô$Ð$r   Nc              +   ó  ‡‡K  — ˆfd„Š|pi }ˆfd„|                      ¦   «         D ¦   «         }t          j         ‰| ¦  «         ‰|¦  «        |ft          t          dœ|¤Ž}|D ]"}d„ |                      ¦   «         D ¦   «         V — Œ#dS )af   Structural unification of two expressions/patterns.

    Examples
    ========

    >>> from sympy.unify.usympy import unify
    >>> from sympy import Basic, S
    >>> from sympy.abc import x, y, z, p, q

    >>> next(unify(Basic(S(1), S(2)), Basic(S(1), x), variables=[x]))
    {x: 2}

    >>> expr = 2*x + y + z
    >>> pattern = 2*p + q
    >>> next(unify(expr, pattern, {}, variables=(p, q)))
    {p: x, q: y + z}

    Unification supports commutative and associative matching

    >>> expr = x + y + z
    >>> pattern = p + q
    >>> len(list(unify(expr, pattern, {}, variables=(p, q))))
    12

    Symbols not indicated to be variables are treated as literal,
    else they are wild-like and match anything in a sub-expression.

    >>> expr = x*y*z + 3
    >>> pattern = x*y + 3
    >>> next(unify(expr, pattern, {}, variables=[x, y]))
    {x: y, y: x*z}

    The x and y of the pattern above were in a Mul and matched factors
    in the Mul of expr. Here, a single symbol matches an entire term:

    >>> expr = x*y + 3
    >>> pattern = p + 3
    >>> next(unify(expr, pattern, {}, variables=[p]))
    {p: x*y}

    c                 ó$   •— t          | ‰¦  «        S r   r:   )r)   r<   s    €r   ú<lambda>zunify.<locals>.<lambda>s   s   ø€ •{ 1 iÑ0Ô0€ r   c                 ó@   •— i | ]\  }} ‰|¦  «         ‰|¦  «        “ŒS r6   r6   )r   ÚkÚvÚdeconss      €r   ú
<dictcomp>zunify.<locals>.<dictcomp>u   s/   ø€ Ð4Ð4Ð4¡$ ! Qˆˆ�‰Œ�F�F˜1‘I”IÐ4Ð4Ð4r   )r*   r.   c                 óN   — i | ]"\  }}t          |¦  «        t          |¦  «        “Œ#S r6   )r-   )r   rS   rT   s      r   rV   zunify.<locals>.<dictcomp>|   s*   € Ð@Ð@Ð@©d¨a°�y˜‰|Œ|�Y q™\œ\Ð@Ð@Ð@r   N)Úitemsr   Úunifyr*   r.   )r)   Úyr@   r<   ÚkwargsÚdsÚdrU   s      `   @r   rY   rY   I   sÈ   øøè è € ðT 1Ð0Ð0Ð0€FØ	ˆˆR€AØ4Ð4Ð4Ð4¨!¯'ª'©)¬)Ð4Ñ4Ô4€Aå	Œ�F�F˜1‘I”I˜v˜v a™yœy¨!ð 
/Ý4BÝ4Bð
/ð 
/ð (.ð
/ð 
/€Bð ð Að AˆØ@Ð@°a·g²g±i´iÐ@Ñ@Ô@Ð@Ð@Ð@Ð@ðAð Ar   )r6   )Nr6   )#Ú__doc__Ú
sympy.corer   r   r   r   Úsympy.core.operationsr   r   Úsympy.matricesr	   r
   r   Úsympy.sets.setsr   r   r   Úsympy.unify.corer   r   r   Úsympy.unifyr   rK   rI   Úillegalr    r%   r*   r.   r7   r;   r-   rN   rY   r6   r   r   ú<module>rf      s|  ðð3ð 3ð
 ,Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð à�,€Ø˜S )Ð,Ð Øˆ+€ð9ð 9ð 9ð8ð 8ð 8ð?ð ?ð ?ðDð Dð Dðð ð ð	Jð 	Jð 	Jð 	Jð-ð -ð -ð%ð %ð %ð3Að 3Að 3Að 3Að 3Að 3Ar   