 the Kronecker delta - Maple Programming Help

Physics[KroneckerDelta] - the Kronecker delta

 Calling Sequence KroneckerDelta[m, n]

Parameters

 m, n - the indices, as names representing integer numbers or the numbers themselves

Description

 • KroneckerDelta[m, n], displayed as $\mathrm{δ__m,n}$, is a computational representation for the Kronecker Delta, that is: it returns 1 or 0, according to whether the indices are equal or different, or so assumed using assuming. When equality cannot be proved or disproved KroneckerDelta[m, n] returns unevaluated, echoing the input.
 • Note: since Maple 2019, KroneckerDelta[m, n] is not implemented as a tensor (of type Physics:-Library:-PhysicsType:-Tensor), even if $m$ and $n$ are letters representing spacetime or space tensor indices, unless one of such indices is contravariant, preceded with ~, as in ~n, while the other remains covariant (in which case KroneckerDelta[m, ~n] is automatically transformed into the spacetime metric g_[m, n] which is a tensor). Consequently, $\mathrm{δ__m,m}$ with the two indices covariant, returns the number 1 in all cases, and Einstein's sum rule for repeated indices is not applied to $\mathrm{δ__m,n}$ even when $m$ or $n$ appear repeated in a product of an algebraic expression.
 • If, on the other hand, you prefer to work with KroneckerDelta[m, n] as a tensor, for example in quantum mechanics by setting the spacetime to be Euclidean and of dimension 3 (something you can accomplish using Setup), you can set a macro, or Define a tensor representing the Kronecker $\mathrm{\delta }$ tensor. See the example at the end of the Examples section.
 • The %KroneckerDelta command is the inert form of KroneckerDelta, so it represents the same mathematical operation but without performing it. To perform the operation, use value.
 • Some automatic checking and normalization are carried out each time you enter KroneckerDelta[...]. The checking is concerned with possible syntax errors. The automatic normalization takes into account the symmetry of KroneckerDelta[m,n] with respect to interchanging the positions of the indices m and n.
 • The %KroneckerDelta command is the inert form of KroneckerDelta, so it represents the same thing but entering it does not result in performing any computation. To perform the related computations as if %KroneckerDelta were KroneckerDelta, use value.

Examples

 > $\mathrm{with}\left(\mathrm{Physics}\right):$
 > $\mathrm{Setup}\left(\mathrm{mathematicalnotation}=\mathrm{true}\right)$
 $\left[{\mathrm{mathematicalnotation}}{=}{\mathrm{true}}\right]$ (1)
 > ${\mathrm{KroneckerDelta}}_{2,2}={\mathrm{KroneckerDelta}}_{m,m}$
 ${1}{=}{1}$ (2)
 > ${\mathrm{KroneckerDelta}}_{2,3}$
 ${0}$ (3)
 > ${\mathrm{KroneckerDelta}}_{m,n}$
 ${{\mathrm{\delta }}}_{{m}{,}{n}}$ (4)

KroneckerDelta is sensitive to assumptions:

 > $\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}assuming\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}m=n$
 ${1}$ (5)
 > $\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}assuming\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}m\ne n$
 ${0}$ (6)

The symmetry property of KroneckerDelta is automatically taken into account when the indices have symbolic values

 > ${\mathrm{KroneckerDelta}}_{m,n}-{\mathrm{KroneckerDelta}}_{n,m}$
 ${0}$ (7)

By default, spacetime indices are represented by greek letters and the dimension of spacetime is 4 - you can query about that via

 > $\mathrm{Setup}\left(\mathrm{spacetimeindices},\mathrm{dimension}\right)$
 $\left[{\mathrm{dimension}}{=}{4}{,}{\mathrm{spacetimeindices}}{=}{\mathrm{greek}}\right]$ (8)

Note: since Maple 2019, KroneckerDelta[mu, nu] is not considered a tensor (of type Physics:-Library:-PhysicsType:-Tensor), even if $\mathrm{\mu }$ and $\mathrm{\nu }$ are letters representing tensor indices. Consequently, in all cases, the following does not return the trace, but the number 1

 > ${\mathrm{KroneckerDelta}}_{\mathrm{μ},\mathrm{μ}}$
 ${1}$ (9)
 > ${\mathrm{%KroneckerDelta}}_{\mathrm{μ},\mathrm{μ}}$
 ${{\mathrm{%KroneckerDelta}}}_{{\mathrm{\mu }}{,}{\mathrm{\mu }}}$ (10)
 > $\mathrm{value}\left(\right)$
 ${1}$ (11)
 > ${\mathrm{KroneckerDelta}}_{\mathrm{μ},\mathrm{ν}}$
 ${{\mathrm{\delta }}}_{{\mathrm{\mu }}{,}{\mathrm{\nu }}}$ (12)
 > $\mathrm{type}\left(,\mathrm{Physics}:-\mathrm{Library}:-\mathrm{PhysicsType}:-\mathrm{Tensor}\right)$
 ${\mathrm{false}}$ (13)

Care should be taken, however, if you happen to index KroneckerDelta with one index covariant and the other contravariant (preceded by ~), in which case KroneckerDelta[mu, ~nu] is automatically transformed into the spacetime metric g_[mu, ~nu] (both displayed with the $\mathrm{\delta }$ greek letter as is standard in physics textbooks), for which g[mu, ~mu], with the index repeated, represents its trace, equal to the spacetime dimension

 > ${\mathrm{KroneckerDelta}}_{\mathrm{μ},\mathrm{~nu}}={\mathrm{g_}}_{\mathrm{μ},\mathrm{~nu}}$
 ${{\mathrm{g_}}}_{{\mathrm{\mu }}\phantom{{\mathrm{\nu }}}}^{\phantom{{\mathrm{\mu }}}{\mathrm{\nu }}}{=}{{\mathrm{g_}}}_{{\mathrm{\mu }}\phantom{{\mathrm{\nu }}}}^{\phantom{{\mathrm{\mu }}}{\mathrm{\nu }}}$ (14)
 > $\mathrm{lprint}\left(\right)$
 Physics:-g_[mu,~nu] = Physics:-g_[mu,~nu]
 > $\genfrac{}{}{0}{}{\phantom{\mathrm{μ}=\mathrm{ν}}}{}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}|\phantom{\rule[-0.0ex]{0.1em}{0.0ex}}\genfrac{}{}{0}{}{\phantom{}}{\mathrm{μ}=\mathrm{ν}}$
 ${4}{=}{4}$ (15)
 > $\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}assuming\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathrm{μ}=\mathrm{ν}$
 ${4}{=}{4}$ (16)

There is one scenario, typical in quantum mechanics, in which KroneckerDelta is however used as a tensor, to represent the metric of an Euclidean space, often of dimension 3, and that representation is used when expressing commutator rules. For example,

 > $\mathrm{Setup}\left(\mathrm{metric}=\mathrm{Euclidean},\mathrm{dimension}=3,\mathrm{spacetimeindices}=\mathrm{lowercaselatin}\right)$
 $\mathrm{The dimension and signature of the tensor space are set to}{}\left[3{,}\left(\mathrm{- - +}\right)\right]$
 ${}\mathrm{The Euclidean metric in cartesian coordinates}$
 $\mathrm{Changing the signature of the tensor spacetime to:}{}\mathrm{+ + +}$
 $\left[{\mathrm{dimension}}{=}{3}{,}{\mathrm{metric}}{=}\left\{\left({1}{,}{1}\right){=}{1}{,}\left({2}{,}{2}\right){=}{1}{,}\left({3}{,}{3}\right){=}{1}\right\}{,}{\mathrm{spacetimeindices}}{=}{\mathrm{lowercaselatin}}\right]$ (17)

Define now ${q}_{j}$ and ${p}_{k}$ as tensors respectively representing position and momentum

 > $\mathrm{Setup}\left(\mathrm{quantumoperators}=\left\{p,q\right\},\mathrm{tensors}=\left\{{q}_{j},{p}_{k}\right\},\mathrm{metric}=\mathrm{Euclidean},\mathrm{dimension}=3,\mathrm{spacetimeindices}=\mathrm{lowercase}\right)$
 ${}\mathrm{The Euclidean metric in cartesian coordinates}$
 $\left[{\mathrm{dimension}}{=}{3}{,}{\mathrm{metric}}{=}\left\{\left({1}{,}{1}\right){=}{1}{,}\left({2}{,}{2}\right){=}{1}{,}\left({3}{,}{3}\right){=}{1}\right\}{,}{\mathrm{quantumoperators}}{=}\left\{{p}{,}{q}\right\}{,}{\mathrm{spacetimeindices}}{=}{\mathrm{lowercaselatin}}{,}{\mathrm{tensors}}{=}\left\{{{\mathrm{\gamma }}}_{{a}}{,}{{\mathrm{\sigma }}}_{{a}}{,}{{\partial }}_{{a}}{,}{{g}}_{{a}{,}{b}}{,}{{p}}_{{k}}{,}{{q}}_{{j}}{,}{{\mathrm{\epsilon }}}_{{a}{,}{b}{,}{c}}\right\}\right]$ (18)

Set the standard commutator rules using tensor notation $\left[{p}_{j},{q}_{k}\right]={\mathrm{KroneckerDelta}}_{j,k}$ there the right-hand side is expressed using KroneckerDelta[j,k]

 > $\mathrm{Setup}\left(\mathrm{%Commutator}\left({p}_{j},{q}_{k}\right)={\mathrm{KroneckerDelta}}_{j,k}\right)$
 ${\mathbit{Warning, since Maple 2019 KroneckerDelta is not implemented as a tensor. Thus, the right-hand side of the algebra rule}}{}\left({\mathrm{?}}{\mathbf{=}}{{\mathbf{\delta }}}_{{\mathbit{j}}{\mathbf{,}}{\mathbit{k}}}\right){}{\mathbit{has for free tensor indices}}{}{\mathbit{\varnothing }}{}{\mathbit{, while the left-hand side has}}{}\left\{{\mathbit{j}}{,}{\mathbit{k}}\right\}{}{\mathbit{, of which}}{}\left\{{\mathbit{j}}{,}{\mathbit{k}}\right\}{}{\mathbit{appear in}}{}\left\{{{\mathbf{\delta }}}_{{\mathbit{j}}{\mathbf{,}}{\mathbit{k}}}\right\}{}{\mathbit{. To resolve this problem you can: 1. Use the spacetime metric g_, or the space metric gamma_, instead of KroneckerDelta. If so, check the value of:}}{}{\mathbit{Setup}}{}\left({\mathbit{signature}}\right){}{\mathbit{. 2. Enter:}}{}{\mathbit{macro}}{}\left({\mathbit{KroneckerDelta}}{\mathbf{=}}{\mathbit{g_}}\right){}{\mathbit{; or use gamma_ instead of g_. 3. Define a Kronecker}}{}{\mathbf{\delta }}{}{\mathbit{tensor. In the following, type \text{'}delta\text{'} on the left and \text{'}KroneckerDelta\text{'} on the right, or copy and paste:}}{}{\mathbit{Define}}{}\left({{\mathbf{\delta }}}_{{\mathbit{a}}{\mathbf{,}}{\mathbit{b}}}{\mathbf{=}}{\mathbit{Matrix}}{}\left({\mathbf{3}}{,}{\mathbf{3}}{,}\left({\mathbit{j}}{,}{\mathbit{k}}\right){\mathbf{↦}}{{\mathbf{\delta }}}_{{\mathbit{j}}{\mathbf{,}}{\mathbit{k}}}\right)\right){}{\mathbit{. After any of the above it is recommended that you set this algebra rule again, with the corrected right-hand side, to avoid problems due to having different free indices on each side of the rule.}}$
 $\left[{\mathrm{algebrarules}}{=}\left\{{\mathrm{%Commutator}}{}\left({{p}}_{{j}}{,}{{q}}_{{k}}\right){=}{{\mathrm{KroneckerDelta}}}_{{j}{,}{k}}\right\}\right]$ (19)

The warning message explains the problem: the free indices are not the same at each side of the algebra rule because KroneckerDelta[j, k] is not representing a tensor, even when in an Euclidean space (only) its components do transform like tensor components and remain equal to the identity matrix. From the three options indicated, if you are adapting a worksheet written before Maple 2019, the simplest is option 2:

 > $\mathrm{macro}\left(\mathrm{KroneckerDelta}=\mathrm{g_}\right):$

After that, all occurrences of KroneckerDelta[m, m], now representing g_[m, m] with Einstein's sum over the repeated indices, will automatically return the trace of the metric instead of the number 1:

 > ${\mathrm{KroneckerDelta}}_{m,m}$
 ${3}$ (20)

You can undo this mapping of KroneckerDelta into g_ at any time via

 > $\mathrm{macro}\left(\mathrm{KroneckerDelta}=\mathrm{KroneckerDelta}\right):$

If you are not adapting worksheets of previous releases, however, the best is option 3, because it gives you access to both the tensor and the non-tensor versions of Kronecker $\mathrm{\delta }$. Directly copying from the message above and pasting on an input line,

 > $\mathrm{Define}\left({\mathrm{δ}}_{a,b}=\mathrm{Matrix}\left(3,3,\left(j,k\right)→{\mathrm{KroneckerDelta}}_{j,k}\right)\right)$
 $\mathrm{Defined objects with tensor properties}$
 $\left\{{{\mathrm{\gamma }}}_{{a}}{,}{{\mathrm{\sigma }}}_{{a}}{,}{{\partial }}_{{a}}{,}{{\mathrm{δ}}}_{{a}{,}{b}}{,}{{g}}_{{a}{,}{b}}{,}{{p}}_{{k}}{,}{{q}}_{{j}}{,}{{\mathrm{\epsilon }}}_{{a}{,}{b}{,}{c}}\right\}$ (21)

Check now the components and behavior of this Kronecker $\mathrm{delta}$ tensor

 > ${\mathrm{δ}}_{[]}$
 ${{\mathrm{δ}}}_{{a}{,}{b}}{=}\left(\left[\begin{array}{rrr}1& 0& 0\\ 0& 1& 0\\ 0& 0& 1\end{array}\right]\right)$ (22)
 > ${\mathrm{δ}}_{1,1}$
 ${1}$ (23)
 > $\mathrm{SumOverRepeatedIndices}\left({\mathrm{δ}}_{m,m}\right)$
 ${3}$ (24)

while you still have the non-tensor version

 > ${\mathrm{KroneckerDelta}}_{m,m}$
 ${1}$ (25)

You can now reenter the algebra rules in tensor notation, with the right-hand side corrected using the tensor version delta[j, k]

 > $\mathrm{Setup}\left(\mathrm{%Commutator}\left({p}_{j},{q}_{k}\right)={\mathrm{δ}}_{j,k}\right)$
 $\left[{\mathrm{algebrarules}}{=}\left\{{\mathrm{%Commutator}}{}\left({{p}}_{{j}}{,}{{q}}_{{k}}\right){=}{{\mathrm{δ}}}_{{j}{,}{k}}\right\}\right]$ (26)
 > $\mathrm{Matrix}\left(3,\left(m,n\right)→\left(\mathrm{%Commutator}=\mathrm{Commutator}\right)\left({p}_{m},{q}_{n}\right)\right)$
 $\left[\begin{array}{ccc}\mathrm{%Commutator}{}\left({p}_{1},{q}_{1}\right)=1& \mathrm{%Commutator}{}\left({p}_{1},{q}_{2}\right)=0& \mathrm{%Commutator}{}\left({p}_{1},{q}_{3}\right)=0\\ \mathrm{%Commutator}{}\left({p}_{2},{q}_{1}\right)=0& \mathrm{%Commutator}{}\left({p}_{2},{q}_{2}\right)=1& \mathrm{%Commutator}{}\left({p}_{2},{q}_{3}\right)=0\\ \mathrm{%Commutator}{}\left({p}_{3},{q}_{1}\right)=0& \mathrm{%Commutator}{}\left({p}_{3},{q}_{2}\right)=0& \mathrm{%Commutator}{}\left({p}_{3},{q}_{3}\right)=1\end{array}\right]$ (27)
 > $\left(\mathrm{%Commutator}=\mathrm{Commutator}\right)\left({p}_{a},{q}_{b}\right)$
 ${\mathrm{%Commutator}}{}\left({{p}}_{{a}}{,}{{q}}_{{b}}\right){=}{{\mathrm{δ}}}_{{a}{,}{b}}$ (28)
 > $\mathrm{expand}\left(\genfrac{}{}{0}{}{\phantom{a=b}}{}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}|\phantom{\rule[-0.0ex]{0.1em}{0.0ex}}\genfrac{}{}{0}{}{\phantom{}}{a=b}\right)$
 ${{p}}_{{b}}{{q}}_{{b}}{-}{{q}}_{{b}}{{p}}_{{b}}{=}{{\mathrm{δ}}}_{{b}{,}{b}}$ (29)
 > $\mathrm{SumOverRepeatedIndices}\left(\right)$
 ${{p}}_{{1}}{{q}}_{{1}}{+}{{p}}_{{2}}{{q}}_{{2}}{+}{{p}}_{{3}}{{q}}_{{3}}{-}{{q}}_{{1}}{{p}}_{{1}}{-}{{q}}_{{2}}{{p}}_{{2}}{-}{{q}}_{{3}}{{p}}_{{3}}{=}{3}$ (30)
 > $\mathrm{Simplify}\left(\right)$
 ${3}{=}{3}$ (31)
 > 

Compatibility

 • The Physics[KroneckerDelta] command was updated in Maple 2019.