 
													Maple
Logiciel de mathématiques puissant facile à utiliser
• Maple Académique • Maple Edition Étudiant • Maple Learn • Maple Calculator App • Maple pour l’industrie et le gouvernement • Edition personnelle Maple 
													
													Add-ons Maple
• E-Books & Guides d'étude • Boîte à outils et add-ons Maple • MapleNet • Maple Player gratuit 
                                                    Student Success Platform
Améliorer les taux de retention
Maple Flow
Engineering calculations & documentation
• Maple Flow • Maple Flow Migration Assistant 
                                                    
 
                             
													  
													  
                                                     
                                                     
													 
                            
![T[a, b]](Physics/Physics_1.gif) and
 and ![B[b]](Physics/Physics_2.gif) are tensors, then in
 are tensors, then in ![T[trace] = T[a, `~a`]](Physics/Physics_3.gif) ,
,  is just dummy, therefore
 is just dummy, therefore ![`*`(T[a, `~a`], `*`(B[a])) = `*`(T[b, `~b`], `*`(B[a]))](Physics/Physics_5.gif) is a well defined object. The new design automatically maps input like
 is a well defined object. The new design automatically maps input like ![`*`(T[a, `~a`], `*`(B[a]))](Physics/Physics_6.gif) into
 into ![`*`(T[b, `~b`], `*`(B[a]))](Physics/Physics_7.gif) .
.

![[spacetimeindices = lowercaselatin]](Physics/Physics_10.gif)
![Define(T[a, b], B[b])](Physics/Physics_11.gif)

![{B[b], Physics:-Dgamma[a], Physics:-Psigma[a], T[a, b], Physics:-d_[a], Physics:-g_[a, b], Physics:-KroneckerDelta[a, b], Physics:-LeviCivita[a, b, c, d]}](Physics/Physics_13.gif)
![`*`(T[a, a], `*`(B[a]))](Physics/Physics_14.gif)
![`*`(T[b, `~b`], `*`(B[a]))](Physics/Physics_15.gif)
![`*`(`^`(T[a, a], 2))](Physics/Physics_16.gif)
![`*`(T[a, `~a`], `*`(T[b, `~b`]))](Physics/Physics_17.gif)
![Define(A[a], C[a])](Physics/Physics_18.gif)

![{A[a], B[b], C[a], Physics:-Dgamma[a], Physics:-Psigma[a], T[a, b], Physics:-d_[a], Physics:-g_[a, b], Physics:-KroneckerDelta[a, b], Physics:-LeviCivita[a, b, c, d]}](Physics/Physics_20.gif)
![`*`(A[a], `*`(B[a], `*`(C[a])))](Physics/Physics_21.gif)
![`*`(A[a], `*`(B[a], `*`(C[a])))](Physics/Physics_22.gif)
 repeated more than once, therefore none of its occurrences got automatically transformed into contravariant in the output, and Check detects the problem interrupting with an error message
 repeated more than once, therefore none of its occurrences got automatically transformed into contravariant in the output, and Check detects the problem interrupting with an error message![Check(`*`(A[a], `*`(B[a], `*`(C[a]))))](Physics/Physics_24.gif)
![`*`(A[a], `*`(B[a], `*`(C[a])))](Physics/Physics_25.gif)
![`*`(A[b], `*`(B[`~b`], `*`(C[a])))](Physics/Physics_26.gif)
![`*`(A[a], `*`(B[a], `*`(C[a])))](Physics/Physics_27.gif)
![`*`(A[a], `*`(B[b], `*`(C[`~b`])))](Physics/Physics_28.gif)

![[coordinatesystems = {X}, dimension = 3, metric = {(1, 1) = 1, (2, 2) = 1, (3, 3) = 1}]](Physics/Physics_30.gif)
![L[j], p[k]](Physics/Physics_31.gif) respectively representing angular and linear momentum
 respectively representing angular and linear momentum![Define(L[j], p[k])](Physics/Physics_32.gif)

![Typesetting:-mprintslash([{Physics:-Dgamma[a], L[j], Physics:-Psigma[a], X[a], Physics:-d_[a], Physics:-g_[a, b], p[k], Physics:-KroneckerDelta[a, b], Physics:-LeviCivita[a, b, c]}], [{Physics:-Dgamma...](Physics/Physics_34.gif)
![L[a]](Physics/Physics_35.gif)
![L[a] = `*`(LeviCivita[a, b, c], `*`(X[b], `*`(p[c])))](Physics/Physics_36.gif)
![Typesetting:-mprintslash([L[a] = `*`(Physics:-LeviCivita[a, b, c], `*`(X[b], `*`(p[c])))], [L[a] = `*`(Physics:-LeviCivita[a, b, c], `*`(Physics:-SpaceTimeVector[b](X), `*`(p[c])))])](Physics/Physics_37.gif)
 , while the right-hand side has two dummy indices
, while the right-hand side has two dummy indices  and
 and  
  ![Check(L[a] = `*`(Physics:-LeviCivita[a, b, c], `*`(Physics:-SpaceTimeVector[b](X), `*`(p[c]))), all)](Physics/Physics_41.gif)
![`*`(`The repeated indices per term are: `[{`...`}, {`...`}, `...`], `*`(`; the free indices are: `, `*`({`...`})))](Physics/Physics_42.gif)
![([{}], {a}) = ([{b, c}], {a})](Physics/Physics_43.gif)
 we can now take the square of
we can now take the square of ![L[a] = `*`(LeviCivita[a, b, c], `*`(X[b], `*`(p[c])))](Physics/Physics_45.gif) directly, and the dummy indices on the right-hand side are automatically handled, there is now no need to manually substitute the repeated indices to avoid their collision
 directly, and the dummy indices on the right-hand side are automatically handled, there is now no need to manually substitute the repeated indices to avoid their collision![`^`(L[a] = `*`(Physics:-LeviCivita[a, b, c], `*`(Physics:-SpaceTimeVector[b](X), `*`(p[c]))), 2)](Physics/Physics_46.gif)
![Typesetting:-mprintslash([`*`(`^`(L[a], 2)) = `*`(Physics:-LeviCivita[a, b, c], `*`(X[b], `*`(p[c], `*`(Physics:-LeviCivita[a, d, e], `*`(X[d], `*`(p[e]))))))], [`*`(`^`(L[a], 2)) = `*`(Physics:-LeviC...](Physics/Physics_47.gif)

![Check(`*`(`^`(L[a], 2)) = `*`(Physics:-LeviCivita[a, b, c], `*`(Physics:-SpaceTimeVector[b](X), `*`(p[c], `*`(Physics:-LeviCivita[a, d, e], `*`(Physics:-SpaceTimeVector[d](X), `*`(p[e])))))), all)](Physics/Physics_49.gif)
![`*`(`The repeated indices per term are: `[{`...`}, {`...`}, `...`], `*`(`; the free indices are: `, `*`({`...`})))](Physics/Physics_50.gif)
![([{a}], {}) = ([{a, b, c, d, e}], {})](Physics/Physics_51.gif)
![`∂`[mu]](Physics/Physics_52.gif) and
 and ![`▿`[mu]](Physics/Physics_53.gif) , and can used beyond Physics.
, and can used beyond Physics.
![p[n] = `+`(`-`(`*`(i, `*`(`ℏ`, `*`(`∂`[n])))))](Physics/Physics_55.gif) ;
;
![restart; -1; with(Physics); -1; with(Physics[Vectors]); -1; interface(imaginaryunit = i); -1](Physics/Physics_57.gif)
 are Hermitian operators
 are Hermitian operators commute between each other
 commute between each other are the differentiation variables of the corresponding (differential) operators
 are the differentiation variables of the corresponding (differential) operators  but do not tell what is the form of the operators
 but do not tell what is the form of the operators![Setup(mathematicalnotation = true, differentialoperators = {[p_, [x, y, z]]}, hermitianoperators = {p, x, y, z}, algebrarules = {%Commutator(x, y) = 0, %Commutator(x, z) = 0, %Commutator(y, z) = 0}, q...](Physics/Physics_62.gif)
![Setup(mathematicalnotation = true, differentialoperators = {[p_, [x, y, z]]}, hermitianoperators = {p, x, y, z}, algebrarules = {%Commutator(x, y) = 0, %Commutator(x, z) = 0, %Commutator(y, z) = 0}, q...](Physics/Physics_63.gif)
![Setup(mathematicalnotation = true, differentialoperators = {[p_, [x, y, z]]}, hermitianoperators = {p, x, y, z}, algebrarules = {%Commutator(x, y) = 0, %Commutator(x, z) = 0, %Commutator(y, z) = 0}, q...](Physics/Physics_64.gif)
![Setup(mathematicalnotation = true, differentialoperators = {[p_, [x, y, z]]}, hermitianoperators = {p, x, y, z}, algebrarules = {%Commutator(x, y) = 0, %Commutator(x, z) = 0, %Commutator(y, z) = 0}, q...](Physics/Physics_65.gif)
![Setup(mathematicalnotation = true, differentialoperators = {[p_, [x, y, z]]}, hermitianoperators = {p, x, y, z}, algebrarules = {%Commutator(x, y) = 0, %Commutator(x, z) = 0, %Commutator(y, z) = 0}, q...](Physics/Physics_66.gif)

 is a smooth function, the idea is to apply the commutator
 is a smooth function, the idea is to apply the commutator  to an arbitrary ket of the Hilbert space
 to an arbitrary ket of the Hilbert space  , perform the operation explicitly after setting a differential operator representation for
, perform the operation explicitly after setting a differential operator representation for  , and from there get the commutation rule between
, and from there get the commutation rule between  and
 and  .
. 






 ,
,  and the ket
 and the ket  are operands in the products above and that they do not commute: we indicated that the coordinates
 are operands in the products above and that they do not commute: we indicated that the coordinates  are the differentiation variables of
 are the differentiation variables of  . This emulates what we do when computing with these operators with paper and pencil, where we represent the application of a differential operator as a product operation.
. This emulates what we do when computing with these operators with paper and pencil, where we represent the application of a differential operator as a product operation. 

 , the application of
, the application of  is not expanded: at this point nothing is known about
 is not expanded: at this point nothing is known about   , it is not necessarily a linear operator. In the Quantum Mechanics problem at hands, however, it is. So give now the operator
 , it is not necessarily a linear operator. In the Quantum Mechanics problem at hands, however, it is. So give now the operator   an explicit representation as a linear vectorial differential operator (we use the inert form %Nabla,
 an explicit representation as a linear vectorial differential operator (we use the inert form %Nabla,  , to be able to proceed with full control one step at a time)
, to be able to proceed with full control one step at a time)
![Typesetting:-mprintslash([p_ := proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(I, `ℏ`, %Nabla(f)))) end proc], [proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(I, `ℏ`, %Nabla(...](Physics/Physics_95.gif)


 and simplify taking into account the algebra rules for the coordinate operators
 and simplify taking into account the algebra rules for the coordinate operators 







 is true for all
 is true for all , this ket can be removed from both sides of the equation. One can do that either taking coefficients or multiplying by the "formal inverse" of this ket, arriving at the (expected) form of the commutation rule between
, this ket can be removed from both sides of the equation. One can do that either taking coefficients or multiplying by the "formal inverse" of this ket, arriving at the (expected) form of the commutation rule between  and
 and 












![P[m]](Physics/Physics_125.gif) 
	![Define(P[m], quiet)](Physics/Physics_126.gif)
![Typesetting:-mprintslash([{Physics:-Dgamma[mu], P[m], Physics:-Psigma[mu], X[mu], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-gamma_[a, b], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alph...](Physics/Physics_127.gif)
![`*`(Commutator(X[m], P[n]), `*`(Ket(psi, x, y, z)))](Physics/Physics_128.gif)

![P[n]](Physics/Physics_130.gif) is going to be applied
 is going to be applied, P[n]), Physics:-Ket(psi, x, y, z)) = expand(Physics:-`*`(Physics:-Commutator(Physics:-SpaceTimeVector[m](X), P[n]), Physics:-Ket(psi, x...](Physics/Physics_131.gif)

![P[n]](Physics/Physics_133.gif) ;
;, P[n]), Physics:-Ket(psi, x, y, z)) = Library:-ApplyProductsOfDifferentialOperators(Physics:-`*`(Physics:-Commutator(Physics:-SpaceTimeV...](Physics/Physics_134.gif)

![P[n]](Physics/Physics_136.gif) , here again using the inert
, here again using the inert ![%d_[n]](Physics/Physics_137.gif) to keep control of the computations step by step
 to keep control of the computations step by step![P[n] := proc (f) options operator, arrow; `+`(`-`(`*`(`+`(I), `*`(`ℏ`, `*`(%d_[n](f)))))) end proc](Physics/Physics_138.gif)
![Typesetting:-mprintslash([P[n] := proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(I, `ℏ`, %d_[n](f)))) end proc], [proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(I, `ℏ`, %d_[n...](Physics/Physics_139.gif)
, P[n]), Physics:-Ket(psi, x, y, z)) = `+`(Physics:-`*`(Physics:-SpaceTimeVector[m](X), P[n](Physics:-Ket(psi, x, y, z))), `-`(P[n](Physi...](Physics/Physics_141.gif)

![%d_[n]](Physics/Physics_143.gif) and simplify taking into account Einstein's rule for repeated indices
 and simplify taking into account Einstein's rule for repeated indices, P[n]), Physics:-Ket(psi, x, y, z)) = `+`(`-`(`*`(`+`(I), `*`(`ℏ`, `*`(Physics:-`*`(Physics:-SpaceTimeVector[m](X), ...](Physics/Physics_144.gif)

 is arbitrary, we can take coefficients (or multiply by the formal Inverse of this ket as done in the previous section). For illustration purposes, we use  Coefficients and note how it automatically expands the commutator
 is arbitrary, we can take coefficients (or multiply by the formal Inverse of this ket as done in the previous section). For illustration purposes, we use  Coefficients and note how it automatically expands the commutator, P[n]), Physics:-Ket(psi, x, y, z)) = `*`(I, `*`(`ℏ`, `*`(Physics:-g_[m, n], `*`(Physics:-Ket(psi, x, y, z))))), Ket(p...](Physics/Physics_147.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(X[m], P[n]), `-`(Physics:-`*`(P[n], X[m]))) = `*`(I, `*`(`ℏ`, `*`(Physics:-g_[m, n])))], [`+`(Physics:-`*`(Physics:-SpaceTimeVector[m](X), P[n]), `-`(Ph...](Physics/Physics_148.gif)
![X[m]](Physics/Physics_149.gif) and
 and ![P[n]](Physics/Physics_150.gif)
, P[n]), `-`(Physics:-`*`(P[n], Physics:-SpaceTimeVector[m](X)))) = `*`(I, `*`(`ℏ`, `*`(Physics:-g_[m, n]))), [P[n], X[m]], us...](Physics/Physics_151.gif)

, P[n]) = `*`(I, `*`(`ℏ`, `*`(Physics:-g_[m, n]))))))](Physics/Physics_153.gif)

 
  , redefine the tensor
 , redefine the tensor ![P[n]](Physics/Physics_159.gif) explicitly indicating its Cartesian component
 explicitly indicating its Cartesian component![Define(P[m] = [p__x, p__y, p__z], quiet)](Physics/Physics_160.gif)
![Typesetting:-mprintslash([{Physics:-Dgamma[mu], P[m], Physics:-Psigma[mu], X[mu], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-gamma_[a, b], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alph...](Physics/Physics_161.gif)
, P[n]) = `*`(I, `*`(`ℏ`, `*`(Physics:-g_[m, n]))))))](Physics/Physics_162.gif)









![g_[[12, 18, 1]]](Physics/Physics_172.gif)


![`The Bertotti (1959), Kramer (1978), Levi-Civita (1917), Robinson (1959) metric in coordinates `[tau, r, theta, phi]](Physics/Physics_175.gif)
![`Parameters: `[k, kappa0, beta]](Physics/Physics_176.gif)


![EnergyMomentum[]](Physics/Physics_179.gif)

![EnergyMomentum[definition]](Physics/Physics_181.gif)
![Typesetting:-mprintslash([Physics:-EnergyMomentum[mu, nu] = `+`(`/`(`*`(`/`(1, 8), `*`(Physics:-Einstein[mu, nu])), `*`(Pi))), Physics:-EnergyMomentum[`~mu`, `~nu`] = (Matrix(4, 4, {(1, 1) = Typesetti...](Physics/Physics_182.gif)


 is related to Newton’s constant.
 is related to Newton’s constant.![Tau[mu, nu]](Physics/Physics_187.gif) , use for instance the inert version of the covariant derivative operator D_ and the TensorArray command
, use for instance the inert version of the covariant derivative operator D_ and the TensorArray command![(%D_[mu] = D_[mu])(EnergyMomentum[mu, nu])](Physics/Physics_188.gif)

 = 0)](Physics/Physics_190.gif)



 = 0](Physics/Physics_195.gif) ).
). to be constant energy (i.e. no functionality) and the flux density
 to be constant energy (i.e. no functionality) and the flux density ![S[mu]](Physics/Physics_197.gif) and stress
 and stress ![sigma[mu, nu]](Physics/Physics_198.gif) tensors depending on
 tensors depending on  For this purpose, use the new option minimizetensorcomponents to make explicit the symmetry of the stress tensor
 For this purpose, use the new option minimizetensorcomponents to make explicit the symmetry of the stress tensor ![sigma[mu, nu]](Physics/Physics_200.gif) 
 ![Define(S[mu], sigma[mu, nu], symmetric, minimizetensorcomponents)](Physics/Physics_201.gif)

![Typesetting:-mprintslash([{Physics:-D_[mu], Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-Ricci[mu, nu], Physics:-Riemann[mu, nu, alpha, beta], S[mu], Physics:-Weyl[mu, nu, alpha, beta], X[mu], P...](Physics/Physics_203.gif)
![sigma[mu, nu]](Physics/Physics_204.gif) is now explicit in that its matrix form is symmetric
 is now explicit in that its matrix form is symmetric![sigma[]](Physics/Physics_205.gif)

![Library:-IsTensorialSymmetric(sigma[mu, nu])](Physics/Physics_207.gif)


![{[1, 2]}, {}](Physics/Physics_210.gif)
![EnergyMomentum[mu, nu] = Matrix(4, proc (mu, nu) options operator, arrow; if mu = 4 then if nu = 4 then W else S[nu](X) end if elif nu = 4 then S[mu](X) else sigma[mu, nu](X) end if end proc)](Physics/Physics_211.gif)




![Tau[mu, nu]](Physics/Physics_216.gif) with these components
 with these components

![Typesetting:-mprintslash([{Physics:-D_[mu], Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-Ricci[mu, nu], Physics:-Riemann[mu, nu, alpha, beta], S[mu], Physics:-Weyl[mu, nu, alpha, beta], X[mu], P...](Physics/Physics_219.gif)
![EnergyMomentum[]](Physics/Physics_220.gif)

![Tau[mu, nu]](Physics/Physics_222.gif) , use again the inert version of the covariant derivative operator D_ and the TensorArray command
, use again the inert version of the covariant derivative operator D_ and the TensorArray command![(%D_[mu] = D_[mu])(EnergyMomentum[mu, nu])](Physics/Physics_223.gif)

 = 0))](Physics/Physics_225.gif)

![S[mu]](Physics/Physics_230.gif) and stress
 and stress ![sigma[mu, nu]](Physics/Physics_231.gif) tensors as a set, and solve it for them
 tensors as a set, and solve it for them



, tau))), `*`(`^`(k, 2)))), `/`(`*`(`+`(`*`(2, `*`(r, `*`(S[2](X)))), `*`(`^`(r, 2), `*`(diff(S[2](X), r))))), `*`(`^`(k, 2))), `/`(`*`(diff(S[3](X)...](Physics/Physics_237.gif)














![S[mu]](Physics/Physics_253.gif) and stress
 and stress ![sigma[mu, nu]](Physics/Physics_254.gif)
 = S[1](X), S[2](X) = S[2](X), S[3](X) = `/`(`*`(`+`(Int(`+`(`*`(`^`(r, 2), `*`(diff(S[1](X), tau), `*`(sin(theta)))), `-`(`*`(sin(theta), `*`(diff(S[2](X), r), `*`(`^`(r, 2)))))), the...](Physics/Physics_255.gif)


![Define(F[mu, nu], antisymmetric)](Physics/Physics_258.gif)

![{Physics:-Dgamma[mu], F[mu, nu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]}](Physics/Physics_260.gif)
![F[mu, nu]](Physics/Physics_261.gif) is antisymmetric,
 is antisymmetric, ![`+`(F[mu, nu], F[nu, mu])](Physics/Physics_262.gif)
![`+`(F[mu, nu], F[nu, mu])](Physics/Physics_263.gif)
![Simplify(`+`(F[mu, nu], F[nu, mu]))](Physics/Physics_264.gif)

![F[mu, nu]](Physics/Physics_266.gif) do not automatically reflect that, it is necessary to use the simplifier of the Physics package, Simplify.
 do not automatically reflect that, it is necessary to use the simplifier of the Physics package, Simplify.![`+`(F[1, 2], F[2, 1])](Physics/Physics_267.gif)
![`+`(F[1, 2], F[2, 1])](Physics/Physics_268.gif)
![Simplify(`+`(F[1, 2], F[2, 1]))](Physics/Physics_269.gif)

![F[mu, nu]](Physics/Physics_271.gif) we do not see the elements of the diagonal equal to nor the lower-left triangle equal to the upper-right triangle but with a different sign:
 we do not see the elements of the diagonal equal to nor the lower-left triangle equal to the upper-right triangle but with a different sign:![TensorArray(F[mu, nu])](Physics/Physics_272.gif)



![`+`(F[mu, nu], F[nu, mu])](Physics/Physics_276.gif) and
 and ![Simplify(`+`(F[mu, nu], F[nu, mu]))](Physics/Physics_277.gif) are automatically equal to 0 without having to use Simplify
 are automatically equal to 0 without having to use Simplify![`+`(F[mu, nu], F[nu, mu])](Physics/Physics_278.gif)



![TensorArray(F[mu, nu])](Physics/Physics_282.gif) becomes equal to
 becomes equal to  .
.![F[]](Physics/Physics_284.gif)

![F[trace]](Physics/Physics_286.gif)

![F[nonzero]](Physics/Physics_288.gif)
![F[mu, nu] = {(1, 2) = F[1, 2], (1, 3) = F[1, 3], (1, 4) = F[1, 4], (2, 1) = `+`(`-`(F[1, 2])), (2, 3) = F[2, 3], (2, 4) = F[2, 4], (3, 1) = `+`(`-`(F[1, 3])), (3, 2) = `+`(`-`(F[2, 3])), (3, 4) = F[3,...](Physics/Physics_289.gif)
![F[mu, nu] = {(1, 2) = F[1, 2], (1, 3) = F[1, 3], (1, 4) = F[1, 4], (2, 1) = `+`(`-`(F[1, 2])), (2, 3) = F[2, 3], (2, 4) = F[2, 4], (3, 1) = `+`(`-`(F[1, 3])), (3, 2) = `+`(`-`(F[2, 3])), (3, 4) = F[3,...](Physics/Physics_290.gif)
![F[`~1`, mu, matrix]](Physics/Physics_291.gif)

![Define(R[alpha, beta, mu, nu], symmetric = {[[1, 2], [3, 4]]}, antisymmetric = {[1, 2], [3, 4]}, minimizetensorcomponents)](Physics/Physics_293.gif)

![{Physics:-Dgamma[mu], F[mu, nu], Physics:-Psigma[mu], R[mu, nu, alpha, beta], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]}](Physics/Physics_295.gif)
![`+`(R[1, 2, 3, 4], R[2, 1, 3, 4])](Physics/Physics_296.gif)

![`+`(R[alpha, beta, mu, nu], `-`(R[mu, nu, alpha, beta]))](Physics/Physics_298.gif)

 , its output is ordered, first the symmetric then the antisymmetric properties
, its output is ordered, first the symmetric then the antisymmetric properties
![{[[1, 2], [3, 4]]}, {[1, 2], [3, 4]}](Physics/Physics_302.gif)




![[minimizetensorcomponents = true]](Physics/Physics_307.gif)
 in the definition of tensors with symmetries
 in the definition of tensors with symmetries![Define(C[alpha, beta], antisymmetric)](Physics/Physics_309.gif)

![{C[mu, nu], Physics:-Dgamma[mu], F[mu, nu], Physics:-Psigma[mu], R[mu, nu, alpha, beta], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]...](Physics/Physics_311.gif)
![C[]](Physics/Physics_312.gif)

 and
 and  , the first one to have the number of tensor components directly reflected in the names of the components, the second one to redefine only one of these components
, the first one to have the number of tensor components directly reflected in the names of the components, the second one to redefine only one of these components


![Library:-RedefineTensorComponent(C[1, 2] = 1)](Physics/Physics_319.gif)









![Setup(op = {p_, x, y, z}, differentialoperators = [[p_, [x, y, z]]])](Physics/Physics_329.gif)

![[differentialoperators = {[p_, [x, y, z]]}, quantumoperators = {p_, x, y, z}]](Physics/Physics_331.gif)





![Typesetting:-mprintslash([p_ := proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(Physics:-`*`(I, `ℏ`), %Nabla(f)))) end proc], [proc (f) options operator, arrow; `+`(`-`(Physics:-`*`(Physic...](Physics/Physics_337.gif)

![Typesetting:-mprintslash([Physics:-`*`(%p_, f(x, y, z)) = Physics:-`*`(p_, f(x, y, z))], [Physics:-`*`(%p_, f(x, y, z)) = Physics:-`*`(p_, f(x, y, z))])](Physics/Physics_339.gif)
 gets applied
 gets applied

![g_[sc]](Physics/Physics_343.gif)


![`The Schwarzschild metric in coordinates `[r, theta, phi, t]](Physics/Physics_346.gif)
![`Parameters: `[m]](Physics/Physics_347.gif)

![Define(A[mu])](Physics/Physics_349.gif)

![Typesetting:-mprintslash([{A[mu], Physics:-D_[mu], Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-Ricci[mu, nu], Physics:-Riemann[mu, nu, alpha, beta], Physics:-Weyl[mu, nu, alpha, beta], X[mu], P...](Physics/Physics_351.gif)


![A[mu]](Physics/Physics_354.gif) is a tensor, so is
 is a tensor, so is ![`*`(%, `*`(A[mu]))](Physics/Physics_355.gif) , and the latter is typeset as the former, only in gray, with copy & paste working, reproducing
, and the latter is typeset as the former, only in gray, with copy & paste working, reproducing ![`*`(%, `*`(A[mu]))](Physics/Physics_356.gif)
![A[`~mu`] = %A[`~mu`]](Physics/Physics_357.gif)
![A[`~mu`] = %A[`~mu`]](Physics/Physics_358.gif)
![map(type, A[`~mu`] = %A[`~mu`], Library:-PhysicsType:-Tensor)](Physics/Physics_359.gif)

![(%D_[mu] = D_[mu])(A[nu](X))](Physics/Physics_361.gif)

) = Physics:-D_[mu](A[nu](X), [X]))](Physics/Physics_363.gif)

) = `+`(Physics:-d_[mu](A[nu](X), [X]), `-`(`*`(Physics:-Christoffel[`~alpha`, mu, nu], `*`(A[alpha](X))))))](Physics/Physics_365.gif)

) = `+`(Physics:-d_[mu](A[nu](X), [X]), `-`(`*`(%Christoffel[`~alpha`, mu, nu], `*`(A[alpha](X))))), simplifier = simplify); -1](Physics/Physics_367.gif)
![T[4, 4]](Physics/Physics_368.gif)

, [X]), `/`(`*`(`+`(`-`(r), `*`(2, `*`(m))), `*`(m, `*`(A[1](X)))), `*`(`^`(r, 3)))) = `+`(diff(A[4](X), t), `-`(`*`(%Christoffel[`~1`, 4, 4], `*`(A[1](X)))), `-`(`*`(%Christof...](Physics/Physics_370.gif)







![`*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`]))))](Physics/Physics_378.gif)
![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Ph...](Physics/Physics_379.gif)
![Simplify(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`]))](Physics/Physics_380.gif)
![Typesetting:-mprintslash([`+`(`-`(`*`(2, `*`(Physics:-`*`(Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~lambda`])))))], [`+`(`-`(`*`(2, `*`(Physics:-`*`(Physics:-Dgamma[`~rho`], P...](Physics/Physics_381.gif)
![`*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`], `*`(Dgamma[`~sigma`])))))](Physics/Physics_382.gif)
![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`])], [Physics:-...](Physics/Physics_383.gif)
![Simplify(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`]))](Physics/Physics_384.gif)
![Typesetting:-mprintslash([`+`(`*`(2, `*`(Physics:-`*`(Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`]))), `*`(2, `*`(Physics:-`*`(Physics:-Dgamma...](Physics/Physics_385.gif)
![gamma[5]](Physics/Physics_386.gif) follows the  Landau, Bogoliubov and Tong books on quantum fields, so for the default signature
 follows the  Landau, Bogoliubov and Tong books on quantum fields, so for the default signature
![[signature = `- - - +`]](Physics/Physics_388.gif)
 routine, we have
 routine, we have![Dgamma[`~5`] = Library:-Dgamma5ToOtherDgamma()](Physics/Physics_390.gif)
![Typesetting:-mprintslash([Physics:-Dgamma[`~5`] = `+`(`-`(`*`(`+`(I), `*`(Physics:-`*`(Physics:-Dgamma[`~4`], Physics:-Dgamma[`~1`], Physics:-Dgamma[`~2`], Physics:-Dgamma[`~3`])))))], [Physics:-Dgamm...](Physics/Physics_391.gif)
 routine takes into account  the possibly Euclidean character of spacetime, also the possible values of the signature: (- - - +), (+ - - -), (+ + + -) and (- + + +), and uses formulas valid for the three representations: standard, chiral and majorana.
 routine takes into account  the possibly Euclidean character of spacetime, also the possible values of the signature: (- - - +), (+ - - -), (+ + + -) and (- + + +), and uses formulas valid for the three representations: standard, chiral and majorana.![`𝕀` := matrix(4, 4, proc (i, j) options operator, arrow; KroneckerDelta[i, j] end proc)](Physics/Physics_393.gif)
![Typesetting:-mprintslash([`𝕀` := matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])], [array( 1 .. 4, 1 .. 4, [( 1, 4 ) = (0), ( 2, 3 ) = (0), ( 4, 1 ) = (0), ( 2, 4 ) = (0), ( 3, 3...](Physics/Physics_394.gif)





![Typesetting:-mprintslash([matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])], [array( 1 .. 4, 1 .. 4, [( 1, 4 ) = (0), ( 2, 3 ) = (0), ( 4, 1 ) = (0), ( 2, 4 ) = (0), ( 3, 3 ) = (1), ( ...](Physics/Physics_400.gif)
![%AntiCommutator(Dgamma[mu], Dgamma[nu]) = `+`(`*`(2, `*`(g_[mu, nu], `*`(`𝕀`))))](Physics/Physics_401.gif)

![Setup(algebrarules = (%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]) = `+`(`*`(2, `*`(Physics:-g_[mu, nu], `*`(`𝕀`))))))](Physics/Physics_403.gif)

![(%AntiCommutator = AntiCommutator)(Dgamma[mu], Dgamma[nu])](Physics/Physics_405.gif)



![[anticommutativeprefix = {_lambda, psi, :-Psi}]](Physics/Physics_409.gif)
![psi[j]](Physics/Physics_410.gif)
![Psi := matrix(4, 1, [psi[1], psi[2], psi[3], psi[4]])](Physics/Physics_411.gif)
![Typesetting:-mprintslash([Psi := matrix([[psi[1]], [psi[2]], [psi[3]], [psi[4]]])], [array( 1 .. 4, 1 .. 1, [( 4, 1 ) = (psi[4]), ( 2, 1 ) = (psi[2]), ( 1, 1 ) = (psi[1]), ( 3, 1 ) = (psi[3])  ] )])](Physics/Physics_412.gif)





![`*`(Psi, `*`(%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]))) = `+`(`*`(2, `*`(Psi, `*`(Physics:-g_[mu, nu], `*`(`𝕀`)))))](Physics/Physics_418.gif)

 routine
 routine![Library:-RewriteInMatrixForm(Physics:-`*`(%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]), Psi) = `+`(`*`(2, `*`(Physics:-g_[mu, nu], `*`(Physics:-`*`(`𝕀`, Psi))))))](Physics/Physics_421.gif)

![Library:-PerformMatrixOperations(Physics:-`*`(%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]), Psi) = `+`(`*`(2, `*`(Physics:-g_[mu, nu], `*`(Physics:-`*`(`𝕀`, Psi))))))](Physics/Physics_424.gif)


![Typesetting:-mprintslash([Physics:-`*`(`𝕀`, Psi)], [Physics:-`*`(`𝕀`, Psi)])](Physics/Physics_427.gif)

![Typesetting:-mprintslash([matrix([[psi[1]], [psi[2]], [psi[3]], [psi[4]]])], [array( 1 .. 4, 1 .. 1, [( 4, 1 ) = (psi[4]), ( 2, 1 ) = (psi[2]), ( 1, 1 ) = (psi[1]), ( 3, 1 ) = (psi[3])  ] )])](Physics/Physics_429.gif)

![Typesetting:-mprintslash([Physics:-`.`(matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]), matrix([[psi[1]], [psi[2]], [psi[3]], [psi[4]]]))], [Physics:-`.`(array( 1 .. 4, 1 .. 4, [( 1, ...](Physics/Physics_431.gif)
![TensorArray(Physics:-`*`(%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]), Psi) = `+`(`*`(2, `*`(Physics:-g_[mu, nu], `*`(Physics:-`*`(`𝕀`, Psi))))))](Physics/Physics_433.gif)

![TensorArray(Physics:-`*`(%AntiCommutator(Physics:-Dgamma[mu], Physics:-Dgamma[nu]), Psi) = `+`(`*`(2, `*`(Physics:-g_[mu, nu], `*`(Physics:-`*`(`𝕀`, Psi))))), performmatrixoperations, simplifier ...](Physics/Physics_436.gif)




![[signature = `- - - +`]](Physics/Physics_441.gif)




![e0 := `*`(`^`(Dgamma[mu], 2))](Physics/Physics_446.gif)
![Typesetting:-mprintslash([e0 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`])])](Physics/Physics_447.gif)
![e1 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~nu`]))](Physics/Physics_448.gif)
![Typesetting:-mprintslash([e1 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])])](Physics/Physics_449.gif)
![e2 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`])))](Physics/Physics_450.gif)
![Typesetting:-mprintslash([e2 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lam...](Physics/Physics_451.gif)
![e3 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`]))))](Physics/Physics_452.gif)
![Typesetting:-mprintslash([e3 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[m...](Physics/Physics_453.gif)
![e4 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`], `*`(Dgamma[`~sigma`])))))](Physics/Physics_454.gif)
![Typesetting:-mprintslash([e4 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`])], [Phy...](Physics/Physics_455.gif)

![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4])](Physics/Physics_457.gif)
![T := SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4)](Physics/Physics_458.gif)
![Typesetting:-mprintslash([T := `+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~2`]), Physics:-`*`(Physics:-Dgamma[3], Physics:-Dgamma[`~...](Physics/Physics_459.gif)



![`Defined Dirac gamma matrices (Dgamma) in standard representation`, gamma[1], gamma[2], gamma[3], gamma[4]](Physics/Physics_465.gif)

![[Dgammarepresentation = standard]](Physics/Physics_467.gif)
![T := SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4)](Physics/Physics_468.gif) using the new
 using the new  routine
 routine


![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-Dgamma[`~nu`]))))], [Physics:-`*`(Physics:-Dgamma[mu], Physics...](Physics/Physics_473.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-Dgamma[`~nu`])))))](Physics/Physics_474.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~2`]), Physics:...](Physics/Physics_475.gif)
![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~2`]), Physics:-`*`(Phys...](Physics/Physics_476.gif)





![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`*`(4, `*`(Physics:-g_[`~lambda`, `~nu`])))], [Physics:-`*...](Physics/Physics_483.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`*`(4, `*`(Physics:-g_[`~lambda`, `~nu`]))))](Physics/Physics_484.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~lambda`], ...](Physics/Physics_485.gif)
![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~lambda`], Physics:-...](Physics/Physics_486.gif)


![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-`*`(Physi...](Physics/Physics_489.gif)

![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`]) = `+`(`*`(2,...](Physics/Physics_491.gif)


![{A, B, Physics:-Dgamma[mu], Physics:-Psigma[mu], Physics:-d_[mu], Physics:-g_[mu, nu], Physics:-KroneckerDelta[mu, nu], Physics:-LeviCivita[alpha, beta, mu, nu]}](Physics/Physics_494.gif)
![`*`(A[nu], `*`(e1)); -1; % = Simplify(%)](Physics/Physics_495.gif)
![Typesetting:-mprintslash([`*`(A[nu], `*`(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]))) = `+`(`-`(`*`(2, `*`(A[`~nu`], `*`(Physics:-Dgamma[nu])))))], [`*`(A[nu], `...](Physics/Physics_496.gif)
![`*`(A[nu], `*`(B[lambda], `*`(e2))); -1; % = Simplify(%)](Physics/Physics_497.gif)
![Typesetting:-mprintslash([`*`(A[nu], `*`(B[lambda], `*`(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])))) = `+`(`*`(4, `*`(B[`~nu`], `*`(...](Physics/Physics_498.gif)


![[Dgammarepresentation = standard, mathematicalnotation = true]](Physics/Physics_501.gif)
![TensorArray(Dgamma[`~mu`])](Physics/Physics_502.gif)

 
 

![gamma[mu]](Physics/Physics_507.gif) change sign when compared with corresponding ones from
 change sign when compared with corresponding ones from ![gamma[`~mu`]](Physics/Physics_508.gif) while the timelike component remains unchanged
 while the timelike component remains unchanged![TensorArray(Dgamma[mu])](Physics/Physics_509.gif)



![(%AntiCommutator = AntiCommutator)(Dgamma[`~mu`], Dgamma[`~nu`])](Physics/Physics_513.gif)

![Library:-DefaultAlgebraRules()[3]](Physics/Physics_515.gif)

![expand(%AntiCommutator(Physics:-Dgamma[`~mu`], Physics:-Dgamma[`~nu`]) = `+`(`*`(2, `*`(Physics:-g_[`~mu`, `~nu`]))))](Physics/Physics_517.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[`~mu`], Physics:-Dgamma[`~nu`]), Physics:-`*`(Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])) = `+`(`*`(2, `*`(Physics:-g_[`~mu`, `~nu`])))]...](Physics/Physics_518.gif)
 and
 and 
![TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[`~mu`], Physics:-Dgamma[`~nu`]), Physics:-`*`(Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])) = `+`(`*`(2, `*`(Physics:-g_[`~mu`, `~nu`]))))](Physics/Physics_521.gif)



![e0 := `*`(`^`(Dgamma[mu], 2))](Physics/Physics_528.gif)
![Typesetting:-mprintslash([e0 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`])])](Physics/Physics_529.gif)
![e1 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~nu`]))](Physics/Physics_530.gif)
![Typesetting:-mprintslash([e1 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])])](Physics/Physics_531.gif)
![e2 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`])))](Physics/Physics_532.gif)
![Typesetting:-mprintslash([e2 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lam...](Physics/Physics_533.gif)
![e3 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`]))))](Physics/Physics_534.gif)
![Typesetting:-mprintslash([e3 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`])], [Physics:-`*`(Physics:-Dgamma[m...](Physics/Physics_535.gif)
![e4 := `*`(`^`(Dgamma[mu], 2), `*`(Dgamma[`~lambda`], `*`(Dgamma[`~nu`], `*`(Dgamma[`~rho`], `*`(Dgamma[`~sigma`])))))](Physics/Physics_536.gif)
![Typesetting:-mprintslash([e4 := Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`])], [Phy...](Physics/Physics_537.gif)

![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4], [Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4])](Physics/Physics_539.gif)
![T := SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~mu`]) = 4)](Physics/Physics_540.gif)
![Typesetting:-mprintslash([T := `+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~2`]), Physics:-`*`(Physics:-Dgamma[3], Physics:-Dgamma[`~...](Physics/Physics_541.gif)



![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-Dgamma[`~nu`]))))], [Physics:-`*`(Physics:-Dgamma[mu], Physics...](Physics/Physics_545.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-Dgamma[`~nu`])))))](Physics/Physics_546.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~2`]), Physics:...](Physics/Physics_547.gif)
![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~2`]), Physics:-`*`(Phys...](Physics/Physics_548.gif)





![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`*`(4, `*`(Physics:-g_[`~lambda`, `~nu`])))], [Physics:-`*...](Physics/Physics_555.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~mu`]) = `+`(`*`(4, `*`(Physics:-g_[`~lambda`, `~nu`]))))](Physics/Physics_556.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~lambda`], ...](Physics/Physics_557.gif)
![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dgamma[`~lambda`], Physics:-...](Physics/Physics_558.gif)











![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-`*`(Physi...](Physics/Physics_570.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~mu`]) = `+`(`-`(`*`(2, `*`(Physics:-`*`(Physics:...](Physics/Physics_571.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Phy...](Physics/Physics_572.gif)
 , the spacetime components form an array 4x4x4 of 64 components, each of which is a matrix equation
, the spacetime components form an array 4x4x4 of 64 components, each of which is a matrix equation![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physics:-Dgamma[2], Physics:-Dga...](Physics/Physics_574.gif)
![Typesetting:-mprintslash([T := RTABLE(18446744078163780782, anything, Array, rectangular, Fortran_order, [], 3, 1 .. 4, 1 .. 4, 1 .. 4)], [Array(%id = 18446744078163780782)])](Physics/Physics_575.gif)
![T[1, 1, 1]](Physics/Physics_576.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-`^`(Physics:-Dgamma[`~1`], 4)), Physics:-`*`(Physics:-Dgamma[2], Physics:-`^`(Physics:-Dgamma[`~1`], 3), Physics:-Dgamma[`~2`]),...](Physics/Physics_577.gif)
![Library:-PerformMatrixOperations(T[1, 1, 1])](Physics/Physics_578.gif)


![M[1]](Physics/Physics_581.gif)





![Typesetting:-mprintslash([Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`]) = `+`(`*`(2,...](Physics/Physics_587.gif)
![SumOverRepeatedIndices(Physics:-`*`(Physics:-Dgamma[mu], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~mu`]) = `+`(`*`(2, `*...](Physics/Physics_588.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~1`]), Physics:-...](Physics/Physics_589.gif)
![T := TensorArray(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-Dgamma[`~lambda`], Physics:-Dgamma[`~nu`], Physics:-Dgamma[`~rho`], Physics:-Dgamma[`~sigma`], Physics:-Dgamma[`~1`]), Physics:-`*`(Physi...](Physics/Physics_590.gif)
![Typesetting:-mprintslash([T := RTABLE(18446744078201340382, anything, Array, rectangular, Fortran_order, [], 4, 1 .. 4, 1 .. 4, 1 .. 4, 1 .. 4)], [Array(%id = 18446744078201340382)])](Physics/Physics_591.gif)
![T[1, 1, 1, 1]](Physics/Physics_592.gif)
![Typesetting:-mprintslash([`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-`^`(Physics:-Dgamma[`~1`], 5)), Physics:-`*`(Physics:-Dgamma[2], Physics:-`^`(Physics:-Dgamma[`~1`], 4), Physics:-Dgamma[`~2`]),...](Physics/Physics_593.gif)
![Library:-PerformMatrixOperations(`+`(Physics:-`*`(Physics:-Dgamma[1], Physics:-`^`(Physics:-Dgamma[`~1`], 5)), Physics:-`*`(Physics:-Dgamma[2], Physics:-`^`(Physics:-Dgamma[`~1`], 4), Physics:-Dgamma[...](Physics/Physics_594.gif)




 of
  of  .. ())](Physics/Physics_600.gif) constructions in a Minkowski spacetime can now be computed using
 constructions in a Minkowski spacetime can now be computed using  .. ()), diff)](Physics/Physics_601.gif)
 to proceed also when
 to proceed also when  is noncommutative by returning unevaluated. In this way one can afterwards define commutation rules such that derivative can be computed.
 is noncommutative by returning unevaluated. In this way one can afterwards define commutation rules such that derivative can be computed. when
 when  and
 and  are noncommutative but commute between themselves.
 are noncommutative but commute between themselves. and
 and  that belong to one and the same coordinate system always commute, even if
 that belong to one and the same coordinate system always commute, even if  and
 and  are quantum operators.
 are quantum operators.![X[j]](Physics/Physics_611.gif) set as a quantum operator that commutes with another quantum operator V, also commute with V.
 set as a quantum operator that commutes with another quantum operator V, also commute with V.![X[mu]](Physics/Physics_612.gif) , a coordinate system vector, as a quantum operator. With that, automatically,
, a coordinate system vector, as a quantum operator. With that, automatically, ![X[mu]](Physics/Physics_613.gif) , is of type noncommutative.
, is of type noncommutative.![GAMMA[1, j, k, matrix]](Physics/Physics_614.gif) now return a 3x3 matrix when
 now return a 3x3 matrix when  are space indices.
 are space indices. we now use
  we now use  , an upside down triangle that is slightly different from Nabla,
, an upside down triangle that is slightly different from Nabla,  used in Physics:-Vectors.
 used in Physics:-Vectors. ![Dagger(X[mu]) = X[mu]](Physics/Physics_616.gif) for the Dagger of the SpaceTimeVector (any coordinate system defined through Setup or Coordinates).
 for the Dagger of the SpaceTimeVector (any coordinate system defined through Setup or Coordinates). to Physics:-Library:-TensorComponent.
 to Physics:-Library:-TensorComponent.