
    \h                     F    S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	  SS jr
g)	z4Functions to support rewriting of SymPy expressions     )Expr)ask)subs)rebuildunifyNc                 (   ^ ^^^^ SUUU UU4S jjnU$ )a{  Rewrite rule.

Transform expressions that match source into expressions that match target
treating all ``variables`` as wilds.

Examples
========

>>> from sympy.abc import w, x, y, z
>>> from sympy.unify.rewrite import rewriterule
>>> from sympy import default_sort_key
>>> rl = rewriterule(x + y, x**y, [x, y])
>>> sorted(rl(z + 3), key=default_sort_key)
[3**z, z**3]

Use ``condition`` to specify additional requirements.  Inputs are taken in
the same order as is found in variables.

>>> rl = rewriterule(x + y, x**y, [x, y], lambda x, y: x.is_integer)
>>> list(rl(z + 3))
[3**z]

Use ``assume`` to specify additional requirements using new assumptions.

>>> from sympy.assumptions import Q
>>> rl = rewriterule(x + y, x**y, [x, y], assume=Q.integer(x))
>>> list(rl(z + 3))
[3**z]

Assumptions for the local context are provided at rule runtime

>>> list(rl(w + z, Q.integer(z)))
[z**w]
c           
   3   ^  >#    [        TU 0 T	S9 H  nT(       a+  T" T	 Vs/ s H  o2R                  X35      PM     sn6 (       d  M5  T(       a"  [        TR                  U5      U5      (       d  M^  [	        U5      " T5      n[        U[        5      (       a  [        U5      nUv   M     g s  snf 7f)N)	variables)r   getr   xreplacer   
isinstancer   r   )
exprassumptionsmatchvarexpr2assume	conditionsourcetargetr
   s
        K/var/www/auris/envauris/lib/python3.13/site-packages/sympy/unify/rewrite.py
rewrite_rlrewriterule.<locals>.rewrite_rl,   s     64yAEyIy		# 3yIJs6??5#9;GGK'E%&&K BIs   B-B(
A3B-)T )r   r   r
   r   r   r   s   ````` r   rewriteruler      s    H
 
     )r   NN)__doc__sympy.core.exprr   sympy.assumptionsr   sympy.strategies.toolsr   sympy.unify.usympyr   r   r   r   r   r   <module>r"      s    ;   ! ' -/r   