cvit.tex 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. \documentstyle[11pt,reduce]{article}
  2. \title{CVIT - Program for fast calculation of Dirac's $\gamma$-matrices
  3. traces}
  4. \date{(Version: 1.2. Release: March, 11, 1990)}
  5. \author{V. Ilyin, A. Kryukov, A. Rodionov and A. Taranov \\
  6. Institute for Nuclear Physics \\
  7. Moscow State University \\
  8. Moscow, 119899 USSR \\
  9. Phone 939-58-92 \\
  10. Telex 411483 MGU SU \\
  11. Fax (011)7095-939-01-26}
  12. \begin{document}
  13. \maketitle
  14. \section*{Abstract}
  15. In modern high energy physics the calculation of Feynman diagrams are
  16. still very important. One of the difficulties of these calculations
  17. are trace calculations. So the calculation of traces of Dirac's
  18. $\gamma$-matrices were one of first task of computer algebra systems.
  19. All available algorithms are based on the fact that gamma-matrices
  20. constitute a basis of a Clifford algebra:
  21. \begin{verbatim}
  22. {Gm,Gn} = 2gmn.
  23. \end{verbatim}
  24. We present the implementation of an alternative algorithm based on
  25. treating of gamma-matrices as 3-j symbols (details may be found in
  26. [1,2]).
  27. The program consists of 5 modules described below.
  28. \newpage
  29. \begin{verbatim}
  30. MODULES CROSS REFERENCES
  31. +--------+
  32. | REDUCE |
  33. |________| |ISIMP1
  34. ISIMP2| +-----------------------+
  35. +--->-----| RED_TO_CVIT_INTERFACE |
  36. |_______________________|
  37. CALC_SPUR| |REPLACE_BY_VECTOR
  38. | |REPLACE_BY_VECTORP
  39. | |GAMMA5P
  40. ^ V
  41. +--------------+
  42. | CVITMAPPING |
  43. |______________|
  44. ^
  45. |PRE-CALC-MAP
  46. |CALC_MAP_TAR
  47. |CALC_DENTAR
  48. |
  49. +-------------+
  50. | INTERFIERZ |
  51. |_____________|
  52. | |MK-NUMR
  53. | |STRAND-ALG-TOP
  54. | ^
  55. MAP-TO-STRAND| +------------+
  56. INCIDENT1| | EVAL-MAPS |
  57. | |____________|
  58. ^ |DELETEZ1
  59. | |CONTRACT-STRAND
  60. +----------------+ |COLOR-STRAND
  61. | MAP-TO-STRAND |---->---+
  62. |________________|
  63. Requires of REDUCE version: 3.2, 3.3.
  64. \end{verbatim}
  65. \section*{Module RED\_TO\_CVIT\_INTERFACE}
  66. \begin{center}
  67. Author: A.P.Kryukov \\
  68. Purpose:interface REDUCE and CVIT package
  69. \end{center}
  70. RED\_TO\_CVIT\_INTERFACE module is intended for connection of REDUCE
  71. with main module of CVIT package. The main idea is to preserve
  72. standard REDUCE syntax for high energy calculations. For realization
  73. of this we redefine {\ SYMBOLIC PROCEDURE ISIMP1} from HEPhys module of
  74. REDUCE system.
  75. After loading CVIT package user may use switch CVIT which is {\tt ON} by
  76. default. If switch CVIT is {\tt OFF} then calculations of Diracs matrices
  77. traces are performed using standard REDUCE facilities. If CVIT switch
  78. is {\tt ON} then CVIT package will be active.
  79. {\tt RED\_TO\_CVIT\_INTERFACE} module performs some primitive simplification
  80. and control input data independently. For example it remove $G_mG_m$,
  81. check parity of the number of Dirac matrices in each trace {\em etc}.
  82. There is one principal restriction concerning G5-matrix. There are no
  83. closed form for trace in non-integer dimension case when trace include
  84. G5-matrix. The next restriction is that if the space-time dimension
  85. is integer then it must be even (2,4,6,...). If these and other
  86. restrictions are violated then the user get corresponding error
  87. message. List of messages is included.
  88. \begin{center}
  89. \begin{verbatim}
  90. LIST OF IMPORTED FUNCTIONS
  91. -------------------------------------------------
  92. Function From module
  93. -------------------------------------------------
  94. ISIMP2 HEPhys
  95. CALC_SPUR CVITMAPPING
  96. -------------------------------------------------
  97. \end{verbatim}
  98. \begin{verbatim}
  99. LIST OF EXPORTED FUNCTION
  100. -------------------------------------------------
  101. Function To module
  102. -------------------------------------------------
  103. ISIMP1 HEPhys (redefine)
  104. REPLACE_BY_VECTOR EVAL_MAP
  105. REPLACE_BY_VECTORP EVAL__MAP
  106. GAMMA5P CVITMAPPING, EVAL_MAP
  107. -------------------------------------------------
  108. \end{verbatim}
  109. \end{center}
  110. \section*{Module CVITMAPPING}
  111. \begin{center}
  112. Author: A.Ya.Rodionov \\
  113. Purpose: graphs reduction
  114. \end{center}
  115. CVITMAPPING module is intended for diagrams calculation according to
  116. Cvitanovic - Kennedy algorithm. The top function of this module
  117. CALC\_SPUR is called from RED\_TO\_CVIT\_INTERFACE interface module.
  118. The main idea of the algorithm consists in diagram simplification
  119. according to rules (1.9') and (1.14) from [1]. The input data - trace
  120. of Diracs gamma matrices (G-matrices) has a form of a list of
  121. identifiers lists with cyclic order. Some of identifiers may be
  122. identical. In this case we assume summation over dummy indices. So
  123. trace Sp(GbGr).Sp(GwGbGcGwGcGr) is represented as list ((b r) (w b c w
  124. c r)).
  125. The first step is to transform the input data to ``map'' structure and
  126. then to reduce the map to a ``simple'' one. This transformation is made
  127. by function TRANSFORM\_MAP\_ (top function). Transformation is made in
  128. three steps. At the first step the input data are transformed to the
  129. internal form - a map (by function PREPARE\_MAP\_). At the second step
  130. a map is subjected to Fierz transformations (1.14) (function
  131. MK\_SIMPLE\_MAP\_). At this step of optimization can be maid (if
  132. switch CVITOP is on) by function MK\_FIRZ\_OP. In this case Fierzing
  133. starts with linked vertices with minimal distance (number of vertices)
  134. between them. After Fierz transformations map is further reduced by
  135. vertex simplification routine MK\_SIMPLE\_VERTEX using (1.9').
  136. Vertices reduced to primitive ones, that is to vertices with three or
  137. less edges. This is the last (third) step in transformation from
  138. input to internal data.
  139. The next step is optional. If switch CVITBTR is on factorisation of
  140. bubble (function FIND\_BUBBLES1) and triangle (function
  141. FIND\_TRIANGLES1) submaps is made. This factorisation is very
  142. efficient for ``wheel'' diagrams and unnecessary for ``lattice'' diagrams.
  143. Factorisation is made recursively by substituting composed edges for
  144. bubbles and composed vertices for triangles. So check (function
  145. SORT\_ATLAS) must be done to test possibility of future marking
  146. procedure. If the check fails then a new attempt to reorganize atlas
  147. (so we call complicated structure witch consists of MAP, COEFFicient
  148. and DENOMinator) is made. This cause backtracking (but very seldom).
  149. Backtracking can be traced by turning on switch CVITRACE. FIND\_BUBLTR
  150. is the top function of this program's branch.
  151. Then atlases must be prepared (top function WORLD\_FROM\_ATLAS) for
  152. final algebraic calculations. The resulted object called ``world''
  153. consists of edges names list (EDGELIST), their marking variants
  154. (VARIANTS) and WORLD1 structure. WORLD1 structure differs from WORLD
  155. structure in one point. It contains MAP2 structure instead of MAP
  156. structure. MAP2 is very complicated structure and consist of VARIANTS,
  157. marking plan and GSTRAND. (GSTRAND constructed by PRE!-CALC!-MAP\_
  158. from INTERFIERZ module.) By marking we understand marking of edges
  159. with numbers according to Cvitanovic - Kennedy algorithm.
  160. The last step is performed by function CALC\_WORLD. At this step
  161. algebraic calculations are done. Two functions CALC\_MAP\_TAR and
  162. CALC\_DENTAR from INTERFIERZ module make algebraic expressions in the
  163. prefix form. This expressions are further simplified by function
  164. {\tt REVAL}. This is the REDUCE system general function for algebraic
  165. expressions simplification. {\tt REVAL} and {\tt SIMP!*} are the only REDUCE
  166. functions used in this module.
  167. There are also some functions for printing several internal
  168. structures: PRINT\_ATLAS, PRINT\_VERTEX, PRINT\_EDGE, PRINT\_COEFF,
  169. PRINT\_DENOM. This functions can be used for debugging.
  170. If an error occur in module CVITMAPPING the error message ``ERROR IN
  171. MAP CREATING ROUTINES'' is displayed. Error has number 55. The switch
  172. CVITERROR allows to give full information about error: name of
  173. function where error occurs and names and values of function's
  174. arguments. If CVITERROR switch is on and backtracking fails message
  175. about error in SORT\_ATLAS function is printed. The result of
  176. computation however will be correct because in this case factorized
  177. structure is not used. This happens extremely seldom.
  178. \begin{verbatim}
  179. List of imported function
  180. -------------------------------------------------
  181. function from module
  182. -------------------------------------------------
  183. REVAL REDUCE
  184. SIMP!* REDUCE
  185. CALC_MAP_TAR INTERFIERZ
  186. CALC_DENTAR INTERFIERZ
  187. PRE!-CALC!-MAP_ INTERFIERZ
  188. GAMMA5P RED_TO_CVIT_INTERFACE
  189. -------------------------------------------------
  190. \end{verbatim}
  191. \begin{verbatim}
  192. List of exported function
  193. -------------------------------------------------
  194. function to module
  195. -------------------------------------------------
  196. CALC_SPUR REDUCE - CVIT interface
  197. -------------------------------------------------
  198. \end{verbatim}
  199. \begin{verbatim}
  200. Data structure
  201. WORLD ::= (EDGELIST,VARIANTS,WORLD1)
  202. WORLD1 ::= (MAP2,COEFF,DENOM)
  203. MAP2 ::= (MAPS,VARIANTS,PLAN)
  204. MAPS ::= (EDGEPAIR . GSTRAND)
  205. MAP1 ::= (EDGEPAIR . MAP)
  206. MAP ::= list of VERTICES (unordered)
  207. EDGEPAIR ::= (OLDEDGELIST . NEWEDGELIST)
  208. COEFF ::= list of WORLDS (unordered)
  209. ATLAS ::= (MAP,COEFF,DENOM)
  210. GSTRAND ::= (STRAND*,MAP,TADPOLES,DELTAS)
  211. VERTEX ::= list of EDGEs (with cyclic order)
  212. EDGE ::= (NAME,PROPERTY,TYPE)
  213. NAME ::= ATOM
  214. PROPERTY ::= (FIRSTPAIR . SECONDPAIR)
  215. TYPE ::= T or NIL
  216. ------------------------------------------------
  217. *Define in module MAP!-TO!-STRAND.
  218. \end{verbatim}
  219. \section*{Modules INTERFIERZ, EVAL\_MAPS, AND MAP-TO-STRAND.}
  220. \begin{center}
  221. Author: A.Taranov \\
  222. Purpose: evaluate single Map
  223. \end{center}
  224. Module INTERFIERZ exports to module CVITMAPPING three functions:
  225. PRE-CALC-MAP\_, CALC-MAP\_TAR, CALC-DENTAR.
  226. Function PRE-CALC-MAP\_ is used for preliminary processing of a map. It
  227. returns a list of the form (STRAND NEWMAP TADEPOLES DELTAS) where
  228. STRAND is strand structure described in MAP-TO-STRAND module. NEWMAP
  229. is a map structure without ``tadepoles'' and ``deltas''. ``Tadepole'' is a
  230. loop connected with map with only one line (edge). ``Delta'' is a single
  231. line disconnected from a map. TADEPOLES is a list of ``tadepole''
  232. submaps. DELTAS is a list (CONS E1 E2) where E1 and E2 are
  233. Function CALC\_MAP\_TAR takes a list of the same form as returned by
  234. PRE-CALC-MAP\_, a-list, of the form (... edge . weight ... ) and
  235. returns a prefix form of algebraic expression corresponding to the map
  236. numerator.
  237. Function CALC-DENTAR returns a prefix form of algebraic expression
  238. corresponding to the map denominator.
  239. Module EVAL-MAP exports to module INTERFIERZ functions MK-NUMR and
  240. STRAND-ALG-TOP.
  241. Function MK-NUMR returns a prefix form for some combinatorial
  242. coefficient (Pohgammer symbol).
  243. Function STRAND-ALG-TOP performs an actual computation of a prefix
  244. form of algebraic expression corresponding to the map numerator. This
  245. computation is based on a ``strand'' structure constructed from the
  246. ``map'' structure.
  247. Module MAP-TO-STRAND exports functions MAP-TO-STRAND, INCIDENT1 to
  248. module INTERFIERZ and functions DELETEZ1, CONTRACT-STRAND,
  249. COLOR-STRAND to module EVAL-MAPS.
  250. Function INCIDENT1 is a selector in ``strand'' structure. DELETEZ1
  251. performs auxiliary optimization of ``strand''. MAP-TO-STRAND transforms
  252. ``map'' to ``strand'' structure. The latter is describe in program
  253. module.
  254. CONTRACT-STRAND do strand vertex simplifications of ``strand'' and
  255. COLOR-STRAND finishes strand generation.
  256. \begin{verbatim}
  257. Description of STRAND data structure.
  258. STRAND ::=<LIST OF VERTEX>
  259. VERTEX ::=<NAME> . (<LIST OF ROAD> <LIST OF ROAD>)
  260. ROAD ::=<ID> . NUMBER
  261. NAME ::=NUMBER
  262. \end{verbatim}
  263. \subsection*{ LIST OF MESSAGES}
  264. \begin{itemize}
  265. \item{CALC\_SPUR: $<$vecdim$>$ IS NOT EVEN SPACE-TIME DIMENSION}
  266. The dimension of space-time $<$vecdim$ $is integer but not
  267. even. Only even numeric dimensions are allowed.
  268. \item{NOSPUR NOT YET IMPLEMENTED}
  269. Attempt to calculate trace when NOSPUR switch is on. This facility
  270. is not implemented now.
  271. \item{G5 INVALID FOR VECDIM NEQ 4}
  272. Attempt to calculate trace with gamma5-matrix for space-time
  273. dimension not equal to 4.
  274. \item{CALC\_SPUR: $<$expr$>$ HAS NON-UNIT DENOMINATOR}
  275. The <expr> has non-unit denominator.
  276. \item{THREE INDICES HAVE NAME $<$name$>$}
  277. There are three indices with equal names in evaluated expression.
  278. \end{itemize}
  279. \begin{verbatim}
  280. List of switches
  281. ------------------------------------------------------------
  282. switch default comment
  283. ------------------------------------------------------------
  284. CVIT ON If it is on then use Kennedy-
  285. Cvitanovic algorithm else use
  286. standard facilities.
  287. CVITOP OFF Fierz optimization switch
  288. CVITBTR ON Bubbles and triangles
  289. factorisation switch
  290. CVITRACE OFF Backtracking tracing switch
  291. ------------------------------------------------------------
  292. \end{verbatim}
  293. \begin{verbatim}
  294. Functions cross references*.
  295. CALC_SPUR
  296. |
  297. +-->SIMP!* (REDUCE)
  298. |
  299. +-->CALC_SPUR0
  300. |
  301. |--->TRANSFORM_MAP_
  302. | |
  303. | |--->MK_SIMPLE_VERTEX
  304. | +--->MK_SIMPLE_MAP_
  305. | |
  306. | +--->MK_SIMPLE_MAP_1
  307. | |
  308. | +--->MK_FIERS_OP
  309. |
  310. |--->WORLD_FROM_ATLAS
  311. | |
  312. | +--->CONSTR_WORLDS
  313. | |
  314. | +---->MK_WORLD1
  315. | |
  316. | +--->MAP_2_FROM_MAP_1
  317. | |
  318. | |--->MARK_EDGES
  319. | +--->MAP_1_TO_STRAND
  320. | |
  321. | +-->PRE!-CALC!-MAP_
  322. | (INTERFIRZ)
  323. |
  324. |--->CALC_WORLD
  325. | |
  326. | |--->CALC!-MAP_TAR (INTERFIRZ)
  327. | |--->CALC!-DENTAR (INTERFIRZ)
  328. | +--->REVAL (REDUCE)
  329. |
  330. +--->FIND_BUBLTR
  331. |
  332. +--->FIND_BUBLTR0
  333. |
  334. |--->SORT_ATLAS
  335. +--->FIND_BUBLTR1
  336. |
  337. |--->FIND_BUBLES1
  338. +--->FIND_TRIANGLES1
  339. *Unmarked functions are from CVITMPPING module.
  340. \end{verbatim}
  341. \section*{References}
  342. \begin{itemize}
  343. \item{1.}
  344. Ilyin V.A., Kryukov A.P., Rodionov A.Ya., Taranov A.Yu.
  345. Fast algorithm for calculation of Diracs gamma-matrices
  346. traces. SIGSAM Bull., 1989, v.23, no.4, pp.15-24.
  347. \item{2.}
  348. Kennedy A.D. Phys.Rev., 1982, D26, p.1936.
  349. \end{itemize}
  350. \section*{Keywords}
  351. REDUCE, GAMMA-MATRIX, TRACE, SPACE-TIME DIMENSION, HIGH ENERGY PHYSICS.
  352. \end{document}