§
    PŠtjX  ã                   óD   — d dl mZ d dlmZmZmZ d dlmZ d„ Zd„ Z	d„ Z
dS )é   )Úrl)Údo_oneÚexhaustÚswitch)Útop_downc                 ó�   — | rBt          t          t          t          j        gt          |                      ¦   «         Ž ¢R Ž Ž fi |¤ŽS d„ S )az   Full simultaneous exact substitution.

    Examples
    ========

    >>> from sympy.strategies.tools import subs
    >>> from sympy import Basic, S
    >>> mapping = {S(1): S(4), S(4): S(1), Basic(S(5)): Basic(S(6), S(7))}
    >>> expr = Basic(S(1), Basic(S(2), S(3)), Basic(S(4), Basic(S(5))))
    >>> subs(mapping)(expr)
    Basic(4, Basic(2, 3), Basic(1, Basic(6, 7)))
    c                 ó   — | S )N© )Úxs    úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/strategies/tools.pyú<lambda>zsubs.<locals>.<lambda>   s   € ˜€ ó    )r   r   Úmapr   ÚsubsÚzipÚitems)ÚdÚkwargss     r   r   r      sM   € ð 	ð Ý�¥¥B¤GÐ >­c°1·7²7±9´9¨oÐ >Ð >Ð >Ð?ÐJÐJÀ6ÐJÐJÐJàˆ{Ðr   c            	      ó^   — t          t          t          t          | Ž ¦  «        fi |¤Ž¦  «        S )zÊ Strategy for canonicalization.

    Explanation
    ===========

    Apply each rule in a bottom_up fashion through the tree.
    Do each one in turn.
    Keep doing this until there is no change.
    )r   r   r   )Úrulesr   s     r   Úcanonr      s.   € õ •8�G¥F¨E NÑ3Ô3Ð>Ð>°vÐ>Ð>Ñ?Ô?Ð?r   c                 ó,   — t          t          | ¦  «        S )al   Apply rules based on the expression type

    inputs:
        ruletypes -- a dict mapping {Type: rule}

    Examples
    ========

    >>> from sympy.strategies import rm_id, typed
    >>> from sympy import Add, Mul
    >>> rm_zeros = rm_id(lambda x: x==0)
    >>> rm_ones  = rm_id(lambda x: x==1)
    >>> remove_idents = typed({Add: rm_zeros, Mul: rm_ones})
    )r   Útype)Ú	ruletypess    r   Útypedr   &   s   € õ •$˜	Ñ"Ô"Ð"r   N)Ú r   Úcorer   r   r   Útraverser   r   r   r   r
   r   r   ú<module>r      s�   ðØ Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð ðð ð ð&
@ð 
@ð 
@ð#ð #ð #ð #ð #r   