§
    PŠtj  ã                   óF   — d 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„Z
dS )
z5 Functions to support rewriting of SymPy expressions é    )ÚExpr)Úask)Úsubs)ÚrebuildÚunify© Nc                 ó$   ‡ ‡‡‡‡— dˆˆˆ ˆˆfd„	}|S )aÜ   Rewrite rule.

    Transform expressions that match source into expressions that match target
    treating all ``variables`` as wilds.

    Examples
    ========

    >>> from sympy.abc import w, x, y, z
    >>> from sympy.unify.rewrite import rewriterule
    >>> from sympy import default_sort_key
    >>> rl = rewriterule(x + y, x**y, [x, y])
    >>> sorted(rl(z + 3), key=default_sort_key)
    [3**z, z**3]

    Use ``condition`` to specify additional requirements.  Inputs are taken in
    the same order as is found in variables.

    >>> rl = rewriterule(x + y, x**y, [x, y], lambda x, y: x.is_integer)
    >>> list(rl(z + 3))
    [3**z]

    Use ``assume`` to specify additional requirements using new assumptions.

    >>> from sympy.assumptions import Q
    >>> rl = rewriterule(x + y, x**y, [x, y], assume=Q.integer(x))
    >>> list(rl(z + 3))
    [3**z]

    Assumptions for the local context are provided at rule runtime

    >>> list(rl(w + z, Q.integer(z)))
    [z**w]
    Tc              3   ó.  •‡K  — t          ‰| i ‰¬¦  «        D ]|Š‰r ‰ˆfd„‰D ¦   «         Ž sŒ‰r$t          ‰                     ‰¦  «        |¦  «        sŒ< t          ‰¦  «        ‰¦  «        }t	          |t
          ¦  «        rt          |¦  «        }|V — Œ}d S )N)Ú	variablesc                 ó<   •— g | ]}‰                      ||¦  «        ‘ŒS r   )Úget)Ú.0ÚvarÚmatchs     €úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/unify/rewrite.pyú
<listcomp>z3rewriterule.<locals>.rewrite_rl.<locals>.<listcomp>/   s'   ø€ ÐIÐIÐI¸ §	¢	¨#¨sÑ 3Ô 3ÐIÐIÐIó    )r   r   Úxreplacer   Ú
isinstancer   r   )	ÚexprÚassumptionsÚexpr2r   ÚassumeÚ	conditionÚsourceÚtargetr   s	      @€€€€€r   Ú
rewrite_rlzrewriterule.<locals>.rewrite_rl,   sÆ   øøè è € Ý˜6 4¨°yÐAÑAÔAð 		ð 		ˆEØð Ø�IÐIÐIÐIÐI¸yÐIÑIÔIÐJðàØð �s 6§?¢?°5Ñ#9Ô#9¸;ÑGÔGð ØØ•D˜‘K”K Ñ'Ô'ˆEÝ˜%¥Ñ&Ô&ð 'Ý ™œ�ØˆKˆKˆKˆKð		ð 		r   )Tr   )r   r   r   r   r   r   s   ````` r   Úrewriteruler      sB   øøøøø€ ðH
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð Ðr   )r   NN)Ú__doc__Úsympy.core.exprr   Úsympy.assumptionsr   Úsympy.strategies.toolsr   Úsympy.unify.usympyr   r   r   r   r   r   ú<module>r$      sw   ðØ ;Ð ;à  Ð  Ð  Ð  Ð  Ð  Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð/ð /ð /ð /ð /ð /r   