K iVdZddlmZddlmZmZefdZefdZefdZefdZ efdZ y ) zStrategies to Traverse a Tree.) basic_fns)chaindo_onec&tfdS)z;Apply a rule down a tree running it on the top nodes first.c<tt|SNsalltop_downexprfnsrules _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/strategies/traverse.pyztop_down..s$BD$)Apply a rule down a tree running it on the bottom nodes first.c<tt|Srr bottom_upr s rrzbottom_up.. s=d9T3#7=dCrrrs``rrr s CT JJrc&tfdS)z+Apply a rule down a tree - stop on success.c<tt|Srr r s rrztop_down_once..s%CT(4*=s%CD%Irrrs``r top_down_oncers $I JJrc&tfdS)z)Apply a rule up a tree - stop on success.c<tt|Srrr s rrz bottom_up_once..s>tIdC$8#>tDrrrs``rbottom_up_oncers Dd KKrcXt|jd\fd}|S)z#Strategic all - apply rule to args.)opnewchildrenleafcZ|r|St|}|g|Sr)map)r argsr#r$r"r!rs rall_rlzsall..all_rls3 :KtXd^,Dr$x'$' 'r)r&get)rrr(r#r$r"r!s` @@@@rr r s.!#''+LMBXt(( MrN) __doc__sympy.strategies.utilrsympy.strategies.corerrr rrrr rrr.sD$+/!J "K &K 'L  r