§
    >�’j;  ã                   ó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    úJC:\Projects\DSCons\.venv\Lib\site-packages\sympy\strategies\branch\core.pyÚidentityr      s   è è € Ø
€G€G€G€G€Gó    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ˆØ�U˜4‘[”[ð 	.ð 	.ˆEØ˜DÐ Ð Ø—’˜‘”�Ø&˜; uÑ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-øØ�D�6Š>ˆ>ØˆJˆJˆJˆJˆJð ˆ>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   øè è € Ø�e˜D‘k”kð 	ð 	ˆFØ˜Š~ˆ~Ø��5˜$ Ñ'Ô'Ð'ØˆLˆLˆLˆLð	ð 	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   ø€ Ø�
Š
�< #¤,Ñ.Ñ/Ô/Ð/Ø�
Š
ˆ
¨D¨D¨D°&°&°&Ð9Ñ:Ô:Ð:Ð:Ð:r   )Úsysr   r   )r   r   r   r   s    `  r   Údebugr!      sM   ø€ àð ØÐÐÐÐÐØˆð;ð ;ð ;ð ;ð ;õ �E˜5Ñ!Ô!Ð!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   øè è € Ý‰uŒuˆØð 	 ð 	 ˆCØ˜˜T™œð  ð  �Ø Ð$Ð$Ø—H’H˜U‘O”O�OØ�K�K�Køð ð	 ð 	 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�‰:Œ:ð 	Ø�u˜T‘{”{Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"àˆ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   øè è € ØˆØ�U˜4‘[”[ð 	ð 	ˆEØˆGØˆKˆKˆKˆKØð 	ØˆJˆJˆJˆJˆJð	ð 	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|   øè è € Øð 	ØˆJˆJˆJØˆFà˜A”Y  q r r¤
ˆdˆØ�T˜$‘Z”Zð 	+ð 	+ˆEØ#•u˜d�| 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�‰hŒhˆˆˆˆˆ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   