unwrap
Move objects out of derivatives, accents or exterior products.
Move objects out of Derivative
s, Accent
s or exterior (wedge) products when
they do not depend on these operators. The most basic example is Accents, which
will get removed from objects which do not depend on them, as
in the following example:\hat{#}::Accent;
\hat{#}::Distributable;
B::Depends(\hat);
ex:=\hat{A+B+C};
\(\displaystyle{}\text{Attached property Accent to }\widehat{\#}.\)
\(\displaystyle{}\text{Attached property Distributable to }\widehat{\#}.\)
\(\displaystyle{}\text{Attached property Depends to }B.\)
\(\displaystyle{}\widehat{A+B+C}\)
\hat{A + B + C}
distribute(_);
\(\displaystyle{}\widehat{A}+\widehat{B}+\widehat{C}\)
\hat{A} + \hat{B} + \hat{C}
unwrap(_);
\(\displaystyle{}\widehat{B}\)
\hat{B}
Derivatives will be set to zero if an object inside does not depend on
it. All objects which are annihilated by the derivative operator are
moved to the front (taking into account anti-commutativity if necessary),
\partial{#}::PartialDerivative;
{A,B,C,D}::AntiCommuting;
x::Coordinate;
{B,D}::Depends(\partial{#});
\(\displaystyle{}\text{Attached property PartialDerivative to }\partial{\#}.\)
\(\displaystyle{}\text{Attached property AntiCommuting to }\left[A, B, C, D\right].\)
\(\displaystyle{}\text{Attached property Coordinate to }x.\)
\(\displaystyle{}\text{Attached property Depends to }\left[B, D\right].\)
ex:=\partial_{x}{A B C D};
\(\displaystyle{}\partial_{x}\left(A B C D\right)\)
\partial_{x}(A B C D)
unwrap(_);
\(\displaystyle{}-A C \partial_{x}\left(B D\right)\)
-A C \partial_{x}(B D)
Note that a product remains inside the derivative; to expand that
use
product_rule
. Here is another example:\del{#}::LaTeXForm("\partial").
\del{#}::Derivative;
X::Depends(\del{#});
ex:=\del{X*Y*Z};
\(\displaystyle{}\text{Attached property Derivative to }\partial{\#}.\)
\(\displaystyle{}\text{Attached property Depends to }X.\)
\(\displaystyle{}\partial\left(X Y Z\right)\)
\del(X Y Z)
product_rule(_);
\(\displaystyle{}\partial{X} Y Z+X \partial{Y} Z+X Y \partial{Z}\)
\del(X) Y Z + X \del(Y) Z + X Y \del(Z)
unwrap(_);
\(\displaystyle{}\partial{X} Y Z\)
\del(X) Y Z
Note that all objects are by default constants for the action of
Derivative
operators. If you want objects to stay inside
derivative operators you have to explicitly declare that they depend
on the derivative operator or on the coordinate with respect to which
you take a derivative.
The final case where
unwrap
acts is when exterior products contain factors which are
scalars (or forms of degree zero). The following example shows this.{f,g}::DifferentialForm(degree=0).
{V, W}::DifferentialForm(degree=1).
{V,g}::AntiCommuting;
foo := f V ^ W g;
\(\displaystyle{}\text{Attached property AntiCommuting to }\left[V, g\right].\)
\(\displaystyle{}\left(f V\right)\wedge \left(W g\right)\)
f V ^ W g
unwrap(_);
\(\displaystyle{}-f g V\wedge W\)
-f g V ^ W
As this example shows,
unwrap
takes into account commutativity properties (hence the sign flip).