
    Ed                     X    d Z ddlmZ ddlmZmZ efdZefdZefdZefdZ	efdZ
d	S )
zStrategies to Traverse a Tree.    )	basic_fns)chaindo_onec                 .     t            fd          S )z;Apply a rule down a tree running it on the top nodes first.c                 R     t          t                              |           S Nsalltop_downexprfnsrules    9lib/python3.11/site-packages/sympy/strategies/traverse.py<lambda>ztop_down.<locals>.<lambda>   s&    $BD$)<)<c$B$B4$H$H     r   r   r   s   ``r   r   r      s!    HHHHHIIIr   c                 .     t           fd           S )z>Apply a rule down a tree running it on the bottom nodes first.c                 R     t          t                              |           S r   r
   	bottom_upr   s    r   r   zbottom_up.<locals>.<lambda>   s&    =d9T3#7#7==dCC r   r   r   s   ``r   r   r      s!    CCCCCTJJJr   c                 .     t            fd          S )z+Apply a rule down a tree - stop on success.c                 R     t          t                              |           S r   r	   r   s    r   r   ztop_down_once.<locals>.<lambda>   s&    %CT(4*=*=s%C%CD%I%I r   r   r   s   ``r   top_down_oncer      s!    $IIIIIJJJr   c                 .     t           fd           S )z)Apply a rule up a tree - stop on success.c                 R     t          t                              |           S r   r   r   s    r   r   z bottom_up_once.<locals>.<lambda>   s&    >tIdC$8$8#>>tDD r   r   r   s   ``r   bottom_up_oncer      s!    DDDDDdKKKr   c                 V     t          |j        d          \   fd}|S )z#Strategic all - apply rule to args.)opnewchildrenleafc                 t     |           r| S t           |                     }  |           g|R  S r   )map)r   argsr#   r$   r"   r!   r   s     r   all_rlzsall.<locals>.all_rl   sO    4:: 	(KtXXd^^,,D3rr$xx'$''''r   )r&   get)r   r   r(   r#   r$   r"   r!   s   `  @@@@r   r
   r
      sV    !#'+LMMBXt( ( ( ( ( ( ( ( ( Mr   N)__doc__sympy.strategies.utilr   sympy.strategies.corer   r   r   r   r   r   r
    r   r   <module>r.      s    $ $ + + + + + + / / / / / / / / ! J J J J
 " K K K K
 & K K K K
 ' L L L L
       r   