
    Qi
                     N    d Z d Zd Zd ZddZd Zd Zd Zd	 Zd
 Z	d Z
d ZdS )z& Generic SymPy-Independent Strategies c              #      K   | V  d S N )xs    t/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/strategies/branch/core.pyidentityr      s      
GGGGG    c                       fdS )z: Apply a branching rule repeatedly until it has no effect c              3      K   | h} |           D ],}||vr&|                     |            |          E d {V  -|| hk    r| V  d S d S r   )add)exprseennexprbruleexhaust_brls      r   r   zexhaust.<locals>.exhaust_brl
   s      vU4[[ 	. 	.ED  &;u---------D6>>JJJJJ >r   r   )r   r   s   `@r   exhaustr      s*          r   c                       fd}|S )Nc              3   V   K    |           D ]}|| k    r | |           |V  d S r   r   )r   resultr   fns     r   onaction_brlzonaction.<locals>.onaction_brl   sP      eDkk 	 	F~~5$'''LLLL	 	r   r   )r   r   r   s   `` r   onactionr      s*         
 r   Nc                 B    sddl m} |fd}t          | |          S )zA Print the input and output expressions at each rule application     )stdoutc                 z                         d| j        z                                  d|d|d           d S )Nz	Rule: %s
zIn: z
Out: z

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

<#,.///


DDD&&&9:::::r   )sysr   r   )r   r   r   r   s    `  r   debugr!      sM     ; ; ; ; ; E5!!!r   c                        fd}|S )z) Multiplex many branching rules into one c              3      K   t                      }D ]-} ||           D ]}||vr|                    |           |V   .d S r   )setr   )r   r   r   r   bruless       r   multiplex_brlz multiplex.<locals>.multiplex_brl-   si      uu 	  	 CT    $$HHUOOOKKK 	  	 r   r   )r%   r&   s   ` r   	multiplexr'   +   s$              r   c                       fd}|S )z0 Only apply branching rule if condition is true c              3   H   K    |           r |           E d {V  d S d S r   r   )r   r   conds    r   conditioned_brlz"condition.<locals>.conditioned_brl9   sB      4:: 	uT{{"""""""""Dr   r   )r*   r   r+   s   `` r   	conditionr,   7   s*         
 r   c                       fd}|S )z6 Yield only those results which satisfy the predicate c              3   J   K   t           |                     E d {V  d S r   )filter)r   r   preds    r   filtered_brlzsfilter.<locals>.filtered_brlC   s7      $d,,,,,,,,,,,r   r   )r0   r   r1   s   `` r   sfilterr2   A   s(    - - - - - -r   c                       fd}|S )Nc              3   H   K   d} |           D ]}d}|V  	|s| V  d S d S NFTr   )r   yieldedr   r   s      r   notempty_brlznotempty.<locals>.notempty_brlI   sR      U4[[ 	 	EGKKKK 	JJJJJ	 	r   r   )r   r7   s   ` r   notemptyr8   H   s$         r   c                        fd}|S )z$ Execute one of the branching rules c              3   L   K   d}D ]} ||           D ]}d}|V  	|r d S d S r5   r   )r   r6   r   r   r%   s       r   
do_one_brlzdo_one.<locals>.do_one_brlU   s`       	 	CT   		 	r   r   )r%   r;   s   ` r   do_oner<   S   s$         r   c                        fd}|S )zR
    Compose a sequence of brules so that they apply to the expr sequentially
    c              3      K   s| V  d S d         dd          }} ||           D ]} t          | |          E d {V  d S )Nr      )chain)r   headtailr   r%   s       r   	chain_brlzchain.<locals>.chain_brld   s|       	JJJFAYqrr
dT$ZZ 	+ 	+E#ud|E**********	+ 	+r   r   )r%   rC   s   ` r   r@   r@   `   s$    + + + + + r   c                       fd}|S )z# Turn a rule into a branching rule c              3   &   K    |           V  d S r   r   )r   rls    r   r   zyieldify.<locals>.brlr   s      bhhr   r   )rF   r   s   ` r   yieldifyrG   p   s!        Jr   r   )__doc__r   r   r   r!   r'   r,   r2   r8   r<   r@   rG   r   r   r   <module>rI      s    , ,  
 
 
  
" 
" 
" 
"	 	 	      
 
 
       r   