1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
|
\chapter{A few notes on the use of a metric}
\label{metric}
\noindent When \FORM\ was designed, it was decided to make its syntax more or
less independent of a choice of the metric\index{metric}. Hence statements
and facilities that programs like Schoonschip\index{Schoonschip} or
REDUCE\index{REDUCE} provide but which depend on the choice of a metric
have been left out. Instead there are facilities to implement any choice of
the metric, when the need really arises. When one makes a proper study of
it, it turns out that one usually has to do very little or nothing. \hfill
\vspace{2mm}
\noindent First one should realize that \FORM\ does not know any specific
metric by itself. Dotproducts are just objects of manipulation. It is
assumed that when a common index of two vectors is contracted, this works
out properly into a scalar object. This means that if one has a metric with
upper and lower indices\index{indices!upper}\index{indices!lower}, one
index is supposed to be an upper index and the other is supposed to be a
lower index. If the user does not like this, it is his/her responsibility
to force the system into a different action. This is reflected in the fact
that \FORM\ does not have an internal metric tensor\index{tensor!metric}
$\eta_{\mu\nu}$. It has only a Kronecker\index{Kronecker}
delta\index{delta!Kronecker} $\delta_{\mu\nu} =$ \verb:d_(mu,nu): with
\verb:p(mu)*d_(mu,nu)*q(nu): $\rightarrow$ \verb:p.q: when mu and nu are
summable indices\index{indices!summable}. \hfill \vspace{2mm}
\noindent The dependency of a metric usually enters with statements like
$p^2 = \pm m^2$, which the user should provide anyway, because \FORM\ does
not have such knowledge. Connected to this is the choice of a
propagator\index{propagator} as either $\gamma_\mu p_\mu + m$ or
$\gamma_\mu p_\mu + i\ m$. This is also something the user should provide.
The only objects that \FORM\ recognizes and that could be considered as
metric-dependent are the gamma matrices\index{matrices!gamma} and the
Levi-Civita\index{Levi-Civita} tensor\index{tensor!Levi-Civita}
\verb:e_:. Because the trace of a $\gamma_5$ involves a Levi-Civita tensor,
the two are intimately connected. The anticommutator of two gamma matrices
is defined with the Kronecker delta. Amazingly enough that works out well,
provided that, if such Kronecker delta's survive in the output, they are
interpreted as a metric tensor. This should be done with great care,
because at such a point one does something that depends of the metric; one
may have to select whether the indices are upper or lower indices. One
should check carefully that the way the output is interpreted leads indeed
to the results that are expected. This is anyway coupled to how one should
interpret the input, because in such a case one would also have an input
with `open' indices and give them a proper interpretation. The rule is that
generally one does not have to do anything. The upper indices in the input
will be upper indices in the output and the same for lower indices. \hfill
\vspace{2mm}
\noindent The contraction\index{contraction} of two Levi-Civita tensors will give products of
Kronecker delta's. This means that formally there could be an error of the
sign of the determinant of the metric tensor, if one would like the
Kronecker delta to play the role of a metric tensor. Hence it is best to
try to avoid such a situation. \hfill \vspace{2mm}
\noindent In \FORM\ the $\gamma_5$ is an object that anticommutes with
the $\gamma_\mu$ and has $\gamma_5\gamma_5 = 1$. Its properties
in the trace are
\begin{eqnarray}
Tr[\gamma_5\gamma_{m_1}\gamma_{m_2}\gamma_{m_3}\gamma_{m_4}] & = &
4 \epsilon_{\mu_1\mu_2\mu_3\mu_4} \nonumber
\end{eqnarray}
This has a number of interesting consequences. The V-A and V+A currents are
represented by $\gamma_7\gamma_\mu = (1-\gamma_5)\gamma_\mu$ and
$\gamma_6\gamma_\mu = (1+\gamma_5)\gamma_\mu$ respectively. Under
conjugation we have to replace $\gamma_5$ by $-\gamma_5$ as is not
uncommon. \hfill \vspace{2mm}
\noindent There was a time that a conjugation\index{conjugation} operation
was planned in \FORM. As time progressed, it was realized that this would
introduce problems with some of the internal objects. Hence some objects
have the property that they are considered imaginary\index{imaginary}. In
practise \FORM\ does not do anything with this. Neither does it do anything
with the declarations real\index{real}, complex\index{complex} and
imaginary\index{imaginary}. If ever a way is found to implement a conjugation
operator that will make everybody happy, it may still be built in. \hfill
\vspace{2mm}
\noindent The above should give the user enough information to convert any
specific metric to what is needed to make \FORM\ do what is expected from it.
Afterwards one can convert back, provided no metric\index{metric} specific
operations are done. Such metric specific things are for instance needed in
some types of approximations in which one substitutes objects by
(vector)components halfway the calculation. In that case one cannot rely on
that the conversions at the beginning and the end will be compensating each
other. For this case \FORM\ allows the user to define a private metric. All
the tools exist to make this a success with the exception of a loss in
speed of course. Let us have a look at the contraction of two Levi-Civita
tensors in an arbitrary metric:
% THIS EXAMPLE IS PART OF THE TESTSUITE. CHANGES HERE SHOULD BE APPLIED THERE AS
% WELL!
\begin{verbatim}
Indices m1,m2,m3,n1,n2,n3,i1,i2,i3;
Cfunction eta(symmetric),e(antisymmetric);
Off Statistics;
*
* We have our own Levi-Civita tensor e
*
Local F = e(m1,m2,m3)*e(m1,m2,m3);
*
* We write the contraction as
*
id e(m1?,m2?,m3?)*e(n1?,n2?,n3?) =
e_(m1,m2,m3)*e_(i1,i2,i3)*
eta(n1,i1)*eta(n2,i2)*eta(n3,i3);
*
* Now we can use the internal workings of the contract:
*
Contract;
Print +s;
.sort
F =
+ eta(i1,i1)*eta(i2,i2)*eta(i3,i3)
- eta(i1,i1)*eta(i2,i3)^2
- eta(i1,i2)^2*eta(i3,i3)
+ 2*eta(i1,i2)*eta(i1,i3)*eta(i2,i3)
- eta(i1,i3)^2*eta(i2,i2)
;
*
* For specifying a metric we need individual components:
*
Sum i1,1,2,3;
Sum i2,1,2,3;
Sum i3,1,2,3;
Print +s;
.sort
F =
+ 6*eta(1,1)*eta(2,2)*eta(3,3)
- 6*eta(1,1)*eta(2,3)^2
- 6*eta(1,2)^2*eta(3,3)
+ 12*eta(1,2)*eta(1,3)*eta(2,3)
- 6*eta(1,3)^2*eta(2,2)
;
*
* And now we can provide the metric tensor
*
id eta(1,1) = 1;
id eta(2,2) = 1;
id eta(3,3) = -1;
id eta(1,2) = 0;
id eta(1,3) = 0;
id eta(2,3) = 0;
Print +s;
.end
F =
- 6
;
\end{verbatim}
This is the ultimate in flexibility\index{flexibility} of course. It can
also be worked out in a different way. In this case we try to change the
behaviour of the Kronecker\index{Kronecker} delta\index{delta!Kronecker} a
bit. This is dangerous\index{dangerous} and needs, in addition to a good
understanding of what is happening, good testing to make sure that what the
user wants is indeed what does happen. Here we use the
FixIndex\index{fixindex} (\ref{substafixindex}) statement. This one assigns
specific values to selected diagonal elements of the Kronecker delta. Of
course it is the responsibility of the user to make sure that the
calculation will indeed run into those elements. This is by no means
automatic, because when \FORM\ uses formal indices it never writes them out
in components. Moreover, it would not be defined what would be the
components connected to an index. The index could run over $0,1,2,3$ or
over $1,2,3,4$, or maybe even over $5,7,9,11$. And what does an
n-dimensional index run over? In the above example it is the sum
(\ref{substasum}) statement that determines this. Hence this is fully under
the control of the user. Therefore a proper way to deal with the above
example would be
% THIS EXAMPLE IS PART OF THE TESTSUITE. CHANGES HERE SHOULD BE APPLIED THERE AS
% WELL!
\begin{verbatim}
Indices i1,i2,i3;
FixIndex 1:1,2:1,3:-1;
Off Statistics;
*
Local F = e_(i1,i2,i3)*e_(i1,i2,i3);
Sum i1,1,2,3;
Sum i2,1,2,3;
Sum i3,1,2,3;
Print +s;
.sort
F =
+ 6*e_(1,2,3)*e_(1,2,3)
;
Contract;
Print +s;
.end
F =
- 6
;
\end{verbatim}
In the case that one would like to exchange the order of the summation and
the contraction, while using the FixIndex mechanism, one needs to be more
careful. In that case we have to prevent the indices from being summed over
while they are indices of a Kronecker delta, because as long as the indices
are symbolic, \FORM\ will replace \verb:d_(i1,i1): by the dimension of
\verb:i1:, and that is not what we want. Hence we have to declare the
indices to be non-summable by giving them dimension zero:
% THIS EXAMPLE IS PART OF THE TESTSUITE. CHANGES HERE SHOULD BE APPLIED THERE AS
% WELL!
\begin{verbatim}
Indices i1=0,i2=0,i3=0;
FixIndex 1:1,2:1,3:-1;
Off Statistics;
*
Local F = e_(i1,i2,i3)*e_(i1,i2,i3);
Contract;
Print +s;
.sort
F =
+ d_(i1,i1)*d_(i2,i2)*d_(i3,i3)
- d_(i1,i1)*d_(i2,i3)*d_(i2,i3)
- d_(i1,i2)*d_(i1,i2)*d_(i3,i3)
+ 2*d_(i1,i2)*d_(i1,i3)*d_(i2,i3)
- d_(i1,i3)*d_(i1,i3)*d_(i2,i2)
;
Sum i1,1,2,3;
Sum i2,1,2,3;
Sum i3,1,2,3;
Print +s;
.end
F =
- 6
;
\end{verbatim}
As we can see, the automatic summation over the indices is not performed
now and this gives us a chance to do the summation manually. After that the
fixindex statement can have its effect. \hfill \vspace{2mm}
\noindent It should be clear from the above examples that it is usually
much easier to manipulate the input in such a way that the terms with two
Levi-Civita tensors have the negative sign from the beginning. This would
give programs that are less complicated and much faster. \hfill \vspace{2mm}
\noindent Hence we are faced with the situation that in normal cases one
does not do anything. If one wants to go beyond this and wants to interfere
with the inner workings themselves by for instance inserting a factor $i$
in front of the $\gamma_5$ and emulating the upper and lower indices of a
favorite metric, this leads from one problem to the next. Extreme care is
needed. This is usually done by people who have first worked with other
programs in which things don't work as naturally as in \FORM. By the time
one has really figured out how to deal with the metric and how to make use
of the internal algorithms of \FORM, one usually does not have to do very
much again. \hfill \vspace{2mm}
\noindent As in the Zen\index{Zen} saying: \hfill \vspace{2mm}
\noindent To the beginning student mountains\index{mountains} are mountains
and water\index{water} is water. To the advanced student\index{student}
mountains stop being mountains and water stops being water. To the
master\index{master} mountains are mountains again and water is water
again. \hfill \vspace{2mm}
\noindent Of course the modern master also checks that what he expects the
system to do, is indeed what the system does.
|