a
     ¬<b  ã                   @   sL   d Z ddlmZ ddlmZ ddlmZmZmZ efdd„Z	efdd	„Z
d
S )z) Branching Strategies to Traverse a Tree é    )Úproduct)Ú	basic_fnsé   )ÚchainÚidentityÚdo_onec                    s   t tˆ tƒ‡ ‡fdd„ƒS )z< Apply a rule down a tree running it on the top nodes first c                    s   t tˆ ˆƒˆƒ| ƒS ©N)ÚsallÚtop_down)Úexpr©ÚbruleÚfns© úp/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/strategies/branch/traverse.pyÚ<lambda>   ó    ztop_down.<locals>.<lambda>)r   r   r   r   r   r   r   r
      s    
ÿr
   c                    s,   t |jdƒ\‰‰‰‰‡ ‡‡‡‡fdd„}|S )z$ Strategic all - apply rule to args )ÚopÚnewÚchildrenÚleafc                 3   sJ   ˆ| ƒr| V  n6ˆ| ƒ}t tˆ ˆ| ƒƒŽ }|D ]}ˆ|g|¢R Ž V  q.d S r   )r   Úmap)r   ZmyopZargssÚargs©r   r   r   r   r   r   r   Úall_rl   s    zsall.<locals>.all_rl)r   Úget)r   r   r   r   r   r   r	      s    r	   N)Ú__doc__Ú	itertoolsr   Zsympy.strategies.utilr   Úcorer   r   r   r
   r	   r   r   r   r   Ú<module>   s
   