Suppose that I have an unknown function $$f(x, y, z)$$ whose first order partial derivatives with respect to $(x, y, z$) are known to be everywhere smooth and well behaved (i.e., continuous, with no cusps / corners singularities, etc.) on some interval $I$ containing the points $c$ and $0$.
Suppose, moreover, that I evaluate $$\partial_{\tau}f(x, y, z)$$ at the point $(c, c, c)$, where $c$ is some arbitrary constant in $I$. I should be able to write that evaluation as $$\partial_{\tau}f(c, c, c)$$
which is shorthand for $$\partial_{\tau}f(x, y, z)\Big\vert_{x = c, y = c, z = c}$$.
Thought the latter more clearly expresses the fact that we must first take the partial derivative of the unknown function and then evaluate it at the point $(c, c, c)$, I see no issue with the former so long as the importance of the relative order of differentiation vs evaluation is understood.
Given that I don't know what the function $f$ is, I can't actually do the derivative. But if I know that the derivative exists, I can surely name it by affixing the partial derivative operator to it, and then 'evaluate' the limit of it as its arguments tend towards $0$ via some sequence of successively smaller constant values $c$ by directly substituting $c$ into the expression for the derivative and then taking the limit of the resulting expression as $c \rightarrow 0$. So the math is trivial, and it all works out.
If I then ask what $$\lim_{(c, c, c) \rightarrow (0, 0, 0)}\partial_{\tau}f(c, c, c)$$ is (where $\tau \in$ {x, y, z}) it seems clear that it should be: $$\partial_{\tau}f(0, 0, 0)$$.
This means nothing more or other than 1) take the derivative of the unknown function $f$, evaluate it at an arbitrary point $(c, c, c)$ and then take the limit of that derivative (which is just another unknown function) as $c \rightarrow 0$.
SymPy seems to have a problem with this line of reasoning, inasmuch as
Though you might expect the result of
simplify(partial_f.subs({x:c, y:c, z:c})to yieldpartial_f(c, c, c), it doesn't. What you wind up with is an expression in which the vertical 'evaluated at' bar persists for the variable with respect to which the derivative is being taken.When you try to take the limit of that expression - i.e.,
limit(f_partial.subs({x:c, y:c, z:c}, (c, 0))), SymPy complains with aNotYetImplementederror.
The mathematical reasoning laid out above seems sound to me, but SymPy evidently disagrees. I'm at a loss regarding how to express the reasoning above in terms SymPy understands, and it's also unclear based on the traceback why SymPy doesn't like this reasoning.
Apologies in advance for the 'low level' nature of this question. I am very new to SymPy and still getting the hang of things (clearly).