Next: Modules INTERFIERZEVAL_MAPS, AND MAP-TO-STRAND. Up: CVIT - Program for fast calculation of Dirac's Previous: Module RED_TO_CVIT_INTERFACE

Module CVITMAPPING

Author: A.Ya.Rodionov
Purpose: graphs reduction

CVITMAPPING module is intended for diagrams calculation according to Cvitanovic - Kennedy algorithm. The top function of this module CALC_SPURis called from RED_TO_CVIT_INTERFACEinterface module. The main idea of the algorithm consists in diagram simplification according to rules (1.9') and (1.14) from [1]. The input data - trace of Diracs gamma matrices (G-matrices) has a form of a list of identifiers lists with cyclic order. Some of identifiers may be identical. In this case we assume summation over dummy indices. So trace Sp(GbGr).Sp(GwGbGcGwGcGr) is represented as list ((b r) (w b c w c r)).

The first step is to transform the input data to ``map'' structure and then to reduce the map to a ``simple'' one. This transformation is made by function TRANSFORM_MAP_(top function). Transformation is made in three steps. At the first step the input data are transformed to the internal form - a map (by function PREPARE_MAP_). At the second step a map is subjected to Fierz transformations (1.14) (function MK_SIMPLE_MAP_). At this step of optimization can be maid (if switch CVITOP is on) by function MK_FIRZ_OP. In this case Fierzing starts with linked vertices with minimal distance (number of vertices) between them. After Fierz transformations map is further reduced by vertex simplification routine MK_SIMPLE_VERTEXusing (1.9'). Vertices reduced to primitive ones, that is to vertices with three or less edges. This is the last (third) step in transformation from input to internal data.

The next step is optional. If switch CVITBTR is on factorisation of bubble (function FIND_BUBBLES1) and triangle (function FIND_TRIANGLES1) submaps is made. This factorisation is very efficient for ``wheel'' diagrams and unnecessary for ``lattice'' diagrams. Factorisation is made recursively by substituting composed edges for bubbles and composed vertices for triangles. So check (function SORT_ATLAS) must be done to test possibility of future marking procedure. If the check fails then a new attempt to reorganize atlas (so we call complicated structure witch consists of MAP, COEFFicient and DENOMinator) is made. This cause backtracking (but very seldom). Backtracking can be traced by turning on switch CVITRACE. FIND_BUBLTRis the top function of this program's branch.

Then atlases must be prepared (top function WORLD_FROM_ATLAS) for final algebraic calculations. The resulted object called ``world'' consists of edges names list (EDGELIST), their marking variants (VARIANTS) and WORLD1 structure. WORLD1 structure differs from WORLD structure in one point. It contains MAP2 structure instead of MAP structure. MAP2 is very complicated structure and consist of VARIANTS, marking plan and GSTRAND. (GSTRAND constructed by PRE!-CALC!-MAP_from INTERFIERZ module.) By marking we understand marking of edges with numbers according to Cvitanovic - Kennedy algorithm.

The last step is performed by function CALC_WORLD. At this step algebraic calculations are done. Two functions CALC_MAP_TARand CALC_DENTARfrom INTERFIERZ module make algebraic expressions in the prefix form. This expressions are further simplified by function REVAL. This is the REDUCE system general function for algebraic expressions simplification. REVAL and SIMP!* are the only REDUCE functions used in this module.

There are also some functions for printing several internal structures: PRINT_ATLAS, PRINT_VERTEX, PRINT_EDGE, PRINT_COEFF, PRINT_DENOM. This functions can be used for debugging.

If an error occur in module CVITMAPPING the error message ``ERROR IN MAP CREATING ROUTINES'' is displayed. Error has number 55. The switch CVITERROR allows to give full information about error: name of function where error occurs and names and values of function's arguments. If CVITERROR switch is on and backtracking fails message about error in SORT_ATLASfunction is printed. The result of computation however will be correct because in this case factorized structure is not used. This happens extremely seldom.


                  List of imported function
-------------------------------------------------
 function              from module
-------------------------------------------------
 REVAL                 REDUCE
 SIMP!*                REDUCE
 CALC_MAP_TAR          INTERFIERZ
 CALC_DENTAR           INTERFIERZ
 PRE!-CALC!-MAP_       INTERFIERZ
 GAMMA5P               RED_TO_CVIT_INTERFACE
-------------------------------------------------


                  List of exported function
-------------------------------------------------
 function              to module
-------------------------------------------------
 CALC_SPUR             REDUCE - CVIT interface
-------------------------------------------------


                        Data structure
 WORLD     ::=  (EDGELIST,VARIANTS,WORLD1)
 WORLD1    ::=  (MAP2,COEFF,DENOM)
 MAP2      ::=  (MAPS,VARIANTS,PLAN)
 MAPS      ::=  (EDGEPAIR . GSTRAND)
 MAP1      ::=  (EDGEPAIR . MAP)
 MAP       ::=  list of VERTICES (unordered)
 EDGEPAIR  ::=  (OLDEDGELIST . NEWEDGELIST)
 COEFF     ::=  list of WORLDS (unordered)
 ATLAS     ::=  (MAP,COEFF,DENOM)
 GSTRAND   ::=  (STRAND*,MAP,TADPOLES,DELTAS)
 VERTEX    ::=  list of EDGEs (with cyclic order)
 EDGE      ::=  (NAME,PROPERTY,TYPE)
 NAME      ::=  ATOM
 PROPERTY  ::=  (FIRSTPAIR . SECONDPAIR)
 TYPE      ::=  T or NIL
 ------------------------------------------------
 *Define in module MAP!-TO!-STRAND.



Next: Modules INTERFIERZEVAL_MAPS, AND MAP-TO-STRAND. Up: CVIT - Program for fast calculation of Dirac's Previous: Module RED_TO_CVIT_INTERFACE


REDUCE 3.5 Documentation
Strotmann@RRz.Uni-Koeln.DE
Mon Feb 21 18:49:40 MET 1994

see also: REDUCE Home Page