
    sh
                     N    S r S rS rS rSS jrS rS rS rS	 rS
 r	S r
S rg)z%Generic SymPy-Independent Strategies c              #      #    U v   g 7fN )xs    p/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/strategies/branch/core.pyidentityr      s
     
Gs   c                    ^ ^ U U4S jmT$ )z9Apply a branching rule repeatedly until it has no effect c              3      >#    U 1nT" U 5       H+  nX!;  d  M
  UR                  U5        T" U5       S h  vN   M-     X1:X  a  U v   g g  N7fr   )add)exprseennexprbruleexhaust_brls      r   r   exhaust.<locals>.exhaust_brl
   sR     v4[E &u--- ! 6>J  .s   AAA
Ar   )r   r   s   `@r   exhaustr      s         c                    ^ ^ U U4S jnU$ )Nc              3   P   >#    T" U 5       H  nX:w  a	  T" TX5        Uv   M     g 7fr   r   )r   resultr   fns     r   onaction_brlonaction.<locals>.onaction_brl   s(     DkF~5$'L "s   #&r   )r   r   r   s   `` r   onactionr      s    
 r   Nc                 D   ^ T(       d  SSK Jn  UmU4S jn[        X5      $ )z@Print the input and output expressions at each rule application     )stdoutc                 v   > TR                  SU R                  -  5        TR                  SU< SU< S35        g )Nz	Rule: %s
zIn: z
Out: z

)write__name__)brlr   r   files      r   r   debug.<locals>.write$   s)    

<#,,./

D&9:r   )sysr   r   )r   r!   r   r   s    `  r   debugr$      s     ; E!!r   c                     ^  U 4S jnU$ )z(Multiplex many branching rules into one c              3      >#    [        5       nT H.  nU" U 5       H  nX1;  d  M
  UR                  U5        Uv   M!     M0     g 7fr   )setr
   )r   r   r    r   bruless       r   multiplex_brl multiplex.<locals>.multiplex_brl-   s;     uCT$HHUOK # s
   AAr   )r(   r)   s   ` r   	multiplexr+   +   s      r   c                    ^ ^ UU 4S jnU$ )z/Only apply branching rule if condition is true c              3   N   >#    T" U 5      (       a  T" U 5       S h  vN   g g  N7fr   r   )r   r   conds    r   conditioned_brl"condition.<locals>.conditioned_brl9   s$     ::T{"" #s   %#%r   )r.   r   r/   s   `` r   	conditionr1   7   s    
 r   c                    ^ ^ UU 4S jnU$ )z5Yield only those results which satisfy the predicate c              3   F   >#    [        TT" U 5      5       S h  vN   g  N7fr   )filter)r   r   preds    r   filtered_brlsfilter.<locals>.filtered_brlC   s     $d,,,s   !!r   )r5   r   r6   s   `` r   sfilterr8   A   s    -r   c                    ^  U 4S jnU$ )Nc              3   T   >#    SnT" U 5       H	  nSnUv   M     U(       d  U v   g g 7fNFTr   )r   yieldedr   r   s      r   notempty_brlnotempty.<locals>.notempty_brlI   s2     4[EGK ! J s   %(r   )r   r=   s   ` r   notemptyr?   H   s     r   c                     ^  U 4S jnU$ )z#Execute one of the branching rules c              3   `   >#    SnT H!  nU" U 5       H	  nSnUv   M     U(       d  M!    g    g 7fr;   r   )r   r<   r    r   r(   s       r   
do_one_brldo_one.<locals>.do_one_brlU   s7     CT # w s   "..r   )r(   rB   s   ` r   do_onerD   S   s     r   c                     ^  U 4S jnU$ )zJ
Compose a sequence of brules so that they apply to the expr sequentially
c              3      >#    T(       d  U v   g TS   TSS  p!U" U 5       H  n[        U6 " U5       S h  vN   M     g  N	7f)Nr      )chain)r   headtailr   r(   s       r   	chain_brlchain.<locals>.chain_brld   sE     JAYqr
d$ZEd|E***  *s   2A?
Ar   )r(   rK   s   ` r   rH   rH   `   s    + r   c                    ^  U 4S jnU$ )z"Turn a rule into a branching rule c              3   "   >#    T" U 5      v   g 7fr   r   )r   rls    r   r    yieldify.<locals>.brlr   s     hs   r   )rO   r    s   ` r   yieldifyrQ   p   s    Jr   r   )__doc__r   r   r   r$   r+   r1   r8   r?   rD   rH   rQ   r   r   r   <module>rS      s?    ,

"	
 r   