## Depends

Makes an object implicitly dependent on other objects.

Makes an object implicitly dependent on other objects, i.e. assumes
that the indicated object is a function of the arguments of the
property. For examplex::Coordinate;
\phi::Depends(x);

\(\displaystyle{}\text{Attached property Coordinate to }x.\)

\(\displaystyle{}\text{Attached property Depends to }\phi.\)

makes $\phi$ an implicit function of $x$. Instead of indicating the
coordinate on which the object depends, it is also possible to
indicate which derivatives would yield a non-zero answer, as in

\nabla{#}::Derivative;
\phi::Depends(\nabla{#});
ex:=\nabla_{m}{\phi c \sin{y}};
unwrap(_);

\(\displaystyle{}\text{Attached property Derivative to }\nabla{\#}.\)

\(\displaystyle{}\text{Attached property Depends to }\phi.\)

\(\displaystyle{}\nabla_{m}\left(\phi c \sin{y}\right)\)

\nabla_{m}(\phi c \sin(y))

\(\displaystyle{}c \sin{y} \nabla_{m}{\phi}\)

c \sin(y) \nabla_{m}(\phi)

(Note: if you did this in Cadabra 1.x you could write

`Depends(\nabla)`

; this is no longer
possible in 2.x and you need to write the full pattern `Depends(\nabla{#})`

).
Finally, it is possible to use an index name to indicate on which
coordinates a field depends,\nabla{#}::Derivative;
{\mu,\nu}::Indices;
\chi::Depends(\mu);
ex:=\nabla_{\mu}{\chi} + \nabla_{\mu}{\rho};
unwrap(_);

\(\displaystyle{}\text{Property Derivative attached to }\nabla{\#}.\)

\(\displaystyle{}\text{Property Indices(position=free) attached to }\left[\mu, \nu\right].\)

\(\displaystyle{}\text{Property Depends attached to }\chi.\)

\(\displaystyle{}\nabla_{\mu}{\chi}+\nabla_{\mu}{\rho}\)

\nabla_{\mu}(\chi) + \nabla_{\mu}(\rho)

\(\displaystyle{}\nabla_{\mu}{\chi}\)

\nabla_{\mu}(\chi)

To make a tensor with any type and number of indices

`Depend`

on something else,
useh{#}::Depends(\nabla{#});
ex:=\nabla_{m}{ c d h^{0 t} h_{t 0} h^{0}_{0} };
unwrap(_);

\(\displaystyle{}\text{Attached property Depends to }h\left(\#\right).\)

\(\displaystyle{}\nabla_{m}\left(c d h^{0 t} h_{t 0} h^{0}\,_{0}\right)\)

\nabla_{m}(c d h^{0 t} h_{t 0} h^{0}_{0})

\(\displaystyle{}c d \nabla_{m}\left(h^{0 t} h_{t 0} h^{0}\,_{0}\right)\)

c d \nabla_{m}(h^{0 t} h_{t 0} h^{0}_{0})

{m,n,p,q}::Indices(vector);
\phi::Depends(m);

\(\displaystyle{}\text{Attached property Indices(position=free) to }\left[m, n, p, q\right].\)

\(\displaystyle{}\text{Attached property Depends to }\phi.\)

If you want to make an object depend on more than one thing, you need
to specify them all in one

`Depends`

property. If you specify
them in two separate properties, the last property will overwrite
the previous one. Therefore, you get\hat{#}::Accent;
{x,y}::Coordinate;
\partial{#}::PartialDerivative;
A::Depends(\hat{#});
A::Depends(x);
ex:=\hat{A};
unwrap(ex);

\(\displaystyle{}\text{Attached property Accent to }\widehat{\#}.\)

\(\displaystyle{}\text{Attached property Coordinate to }\left(x, \mmlToken{mo}[linebreak="goodbreak"]{} y\right).\)

\(\displaystyle{}\text{Attached property PartialDerivative to }\partial{\#}.\)

\(\displaystyle{}\text{Attached property Depends to }A.\)

\(\displaystyle{}\text{Attached property Depends to }A.\)

\(\displaystyle{}\widehat{A}\)

\(\displaystyle{}0\)