File: components.tex

package info (click to toggle)
cadabra 1.46-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,244 kB
  • sloc: cpp: 33,188; ansic: 2,724; makefile: 329; yacc: 180; sh: 157; python: 45; lex: 38; lisp: 19
file content (35 lines) | stat: -rw-r--r-- 1,240 bytes parent folder | download | duplicates (6)
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

\section{Component expansion}



# algorithm:
#
# - need to cache information because there are potentially many operations
# - need to canonicalise indices 
#
# Eval first works at C_{\alpha} level. 
#
#
# Estimates:
#
#   Kretschmann in 10d: 10^4 values to sum over. So we need to be able to cut
#   this down to the non-zero ones early: as soon as a zero combination is found
#   for one of the factors, remove this branch of the search tree.
#   Need to:
#        a) make the algorithm work at the top, recursively down, since
            we need to keep memory/cache of already evaluated objects.
#        b) for all levels recursively visited, determine whether substitution
#           rules fix the value (hence allowing D_1 + E_1 -> 3 even if E_1 is 
#           not known as a component.
#        c) use a 'base n' type notation to map an index value combination for 
#           an n-valent tensor to an integer, so that we can make a map from
#           integers to expressions for any tensor, avoiding repeated substitutions.
#
#  A_m ( B_m + C_m ) D_n Q_n:
#
#   - collect free and dummy indices.
#   - do a depth-first walk
#          - for each node, determine the index values for which
#            a rule is available