+
    it                        R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	 ]! R4      t
]! R4      tR R ltR	 R
 ltR R ltR R ltR R ltRR ltR R ltR R ltR R ltR R ltR tR]/R R lltR# ) z%Generic SymPy-Independent Strategies )annotations)CallableMapping)TypeVarstdout_S_Tc                    V ^8  d   QhRRRR/# )   xr	   return )formats   "S/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/strategies/core.py__annotate__r      s       r     c                    V # Nr   r   s   &r   identityr          Hr   c                    V ^8  d   QhRRRR/# r   ruleCallable[[_T], _T]r   r   )r   s   "r   r   r      s      $ ); r   c                   a  R V 3R llpV# )z/Apply a rule repeatedly until it has no effect c                    V ^8  d   QhRRRR/# r   exprr	   r   r   )r   s   "r   r   exhaust.<locals>.__annotate__   s      B 2 r   c                <   < S! V 4      T r!W8w  d   S! V4      Tr!K  V# r   r   )r   newoldr   s   &  r   exhaustive_rlexhaust.<locals>.exhaustive_rl   s#    :tSjCy#
r   r   )r   r$   s   f r   exhaustr&      s     
 r   c                    V ^8  d   QhRRRR/# )r   r   Callable[[_S], _T]r   r   )r   s   "r   r   r      s      $ ); r   c                "   a a / oR VV 3R llpV# )zMemoized version of a rule

Notes
=====

This cache can grow infinitely, so it is not recommended to use this
than ``functools.lru_cache`` unless you need very heavy computation.
c                    V ^8  d   QhRRRR/# r   r   r   r   r	   r   )r   s   "r   r   memoize.<locals>.__annotate__%   s      "  r   c                B   < V S9   d
   SV ,          # S! V 4      pVSV &   V# r   r   )r   resultcacher   s   & r   memoized_rlmemoize.<locals>.memoized_rl%   s+    5=;$ZF E$KMr   r   )r   r0   r/   s   f @r   memoizer2      s     E  r   c               $    V ^8  d   QhRRRRRR/# )r   condzCallable[[_T], bool]r   r   r   r   )r   s   "r   r   r   /   s$      
&8r   c                   a a R V V3R llpV# )z%Only apply rule if condition is true c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   condition.<locals>.__annotate__3   s      R B r   c                4   < S! V 4      '       d	   S! V 4      # V # r   r   )r   r4   r   s   &r   conditioned_rl!condition.<locals>.conditioned_rl3   s    :::r   r   )r4   r   r9   s   ff r   	conditionr;   /   s      r   c                    V ^8  d   QhRRRR/# r   rulesr   r   r   )r   s   "r   r   r   :   s      $ ); r   c                    a  R V 3R llpV# )zI
Compose a sequence of rules so that they apply to the expr sequentially
c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   chain.<locals>.__annotate__>   s      r b r   c                *   < S F  pV! V 4      p K  	  V # r   r   )r   r   r>   s   & r   chain_rlchain.<locals>.chain_rl>   s    D:D r   r   )r>   rC   s   j r   chainrE   :   s      Or   Nc                ,   a a Sf   \         oVV 3R lpV# )z>Print out before and after expressions each time rule is used c                    < V ^ ,          pS! V / VB pW28w  d=   SP                  RSP                  ,          4       SP                  RV: RV: R24       V# )    z	Rule: %s
zIn:   z
Out:  z

)write__name__)argskwargsr   r.   filer   s   *,  r   debug_rldebug.<locals>.debug_rlJ   sK    Awt&v&>JJ|dmm34JJ4@Ar   r   )r   rM   rN   s   ff r   debugrP   E   s    | Or   c                    V ^8  d   QhRRRR/# )r   r   zCallable[[_T], _T | None]r   r   r   )r   s   "r   r   r   T   s      - 2D r   c                   a  R V 3R llpV# )z*Return original expr if rule returns None c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   null_safe.<locals>.__annotate__V   s      2 " r   c                $   < S! V 4      pVf   V # V# r   r   )r   r.   r   s   & r   null_safe_rlnull_safe.<locals>.null_safe_rlV   s    d>Kr   r   )r   rV   s   f r   	null_saferX   T   s     
 r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   ^   s      " 2D r   c                   a a R VV 3R llpV# )z.Return original expr if rule raises exception c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   tryit.<locals>.__annotate__`   s      R B r   c                4   <  S! V 4      #   S d    T u # i ; ir   r   )r   	exceptionr   s   &r   try_rltryit.<locals>.try_rl`   s&    	: 	K	s    	r   )r   r^   r_   s   ff r   tryitra   ^   s     
 Mr   c                    V ^8  d   QhRRRR/# r=   r   )r   s   "r   r   r   h   s      % *< r   c                    a  R V 3R llpV# )z2Try each of the rules until one works. Then stop. c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   do_one.<locals>.__annotate__j   s       r r   c                >   < S F  pV! V 4      pW 8w  g   K  Vu # 	  V # r   r   )r   rlr.   r>   s   &  r   	do_one_rldo_one.<locals>.do_one_rlj   s'    BXF~  r   r   )r>   rh   s   j r   do_onerj   h   s      r   c               $    V ^8  d   QhRRRRRR/# )r   keyr(   ruledictzMapping[_T, Callable[[_S], _S]]r   zCallable[[_S], _S]r   )r   s   "r   r   r   s   s&      	- r   c                   a a R V V3R llpV# )z@Select a rule based on the result of key called on the function c                    V ^8  d   QhRRRR/# )r   r   r   r   r   )r   s   "r   r   switch.<locals>.__annotate__x   s       r r   c                L   < SP                  S! V 4      \        4      pV! V 4      # r   )getr   )r   rg   rl   rm   s   & r   	switch_rlswitch.<locals>.switch_rlx   s     \\#d)X.$xr   r   )rl   rm   rs   s   ff r   switchru   s   s    
  r   c                    V # r   r   r   s   &r   	_identityrw      r   r   	objectivec                    V ^8  d   QhRRRR/# )r   r>   r(   r   r   )r   s   "r   r   r      s       r   c                   a a R V V3R llpV# )a  Select result of rules that minimizes objective

>>> from sympy.strategies import minimize
>>> inc = lambda x: x + 1
>>> dec = lambda x: x - 1
>>> rl = minimize(inc, dec)
>>> rl(4)
3

>>> rl = minimize(inc, dec, objective=lambda x: -x)  # maximize
>>> rl(4)
5
c                    V ^8  d   QhRRRR/# r+   r   )r   s   "r   r   minimize.<locals>.__annotate__   s     B Bb BR Br   c                R   < \        S Uu. uF
  q! V 4      NK  	  upSR 7      # u upi ))rl   )min)r   r   rx   r>   s   & r   minruleminimize.<locals>.minrule   s&    5154DJ51yAA1s   $r   )rx   r>   r   s   dj r   minimizer      s    "B BNr   r   )__doc__
__future__r   collections.abcr   r   typingr   sysr   r   r	   r   r&   r2   r;   rE   rP   rX   ra   rj   ru   rw   r   r   r   r   <module>r      sq    , " -   T]T]* r   