K iDdZddlmZddlmZddlmZddlmZm Z ddZ y) z5 Functions to support rewriting of SymPy expressions )Expr)ask)subs)rebuildunifyNc$dfd }|S)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(Kt|i D]v}r$ Dcgc]}|j||c}s)rtj||sGt |}t |t r t|}|xycc}ww)N) variables)rgetrxreplacer isinstancerr) expr assumptionsmatchvarexpr2assume conditionsourcetargetr s Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/unify/rewrite.py rewrite_rlzrewriterule..rewrite_rl,s64yA EyI #s 3IJs6??5#9;GDK'E%&K IsBB AB)T)rrr rrrs````` r rewriterulersH   )rNN) __doc__sympy.core.exprrsympy.assumptionsrsympy.strategies.toolsrsympy.unify.usympyrrrrrrr!s; !'-/r