ó
    \è”hX  ã                   óB   • S SK Jr  S SKJrJrJr  S SKJr  S rS r	S r
g)é   )Úrl)Údo_oneÚexhaustÚswitch)Útop_downc                 ó’   • U (       a>  [        [        [        [        R                  /[        U R                  5       6 Q76 6 40 UD6$ S $ )aU  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                 ó   • U $ )N© )Úxs    ÚN/var/www/auris/envauris/lib/python3.13/site-packages/sympy/strategies/tools.pyÚ<lambda>Úsubs.<locals>.<lambda>   s   € ™ó    )r   r   Úmapr   ÚsubsÚzipÚitems)ÚdÚkwargss     r   r   r      s:   € ö 	Üœ¤¤B§G¡GÐ >¬c°1·7±7³9¨oÒ >Ð?ÑJÀ6ÑJÐJáÐr   c            	      óJ   • [        [        [        [        U 6 5      40 UD65      $ )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Ñ>°vÑ>Ó?Ð?r   c                 ó"   • [        [        U 5      $ )aC  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   