Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
WHIZARD etc.
OMega
Commits
fa6645b6
Commit
fa6645b6
authored
Mar 25, 2016
by
Thorsten Ohl
Browse files
UFO: failed to factor Rep
parent
e336fbc3
Pipeline
#19
skipped
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/uFOx.ml
View file @
fa6645b6
...
...
@@ -92,34 +92,36 @@ module Index : Index =
end
module
type
Rep
=
sig
type
t
val
to_string
:
t
->
string
val
of_int
:
int
->
t
val
conjugate
:
t
->
t
end
module
type
Atomic_Tensor
=
sig
type
t
val
of_expr
:
string
->
UFOx_syntax
.
expr
list
->
t
val
to_string
:
t
->
string
type
r
val
classify_indices
:
t
list
->
(
int
*
r
)
list
val
rep_to_string
:
r
->
string
val
rep_of_int
:
int
->
r
val
rep_conjugate
:
r
->
r
module
Rep
:
Rep
val
classify_indices
:
t
list
->
(
int
*
Rep
.
t
)
list
end
module
type
Tensor
=
sig
type
tensor
type
t
type
t
=
(
tensor
list
*
Q
.
t
)
list
val
of_expr
:
UFOx_syntax
.
expr
->
t
val
of_string
:
string
->
t
val
to_string
:
t
->
string
type
r
val
classify_indices
:
t
->
(
int
*
r
)
list
val
rep_to_string
:
r
->
string
val
rep_of_int
:
int
->
r
val
rep_conjugate
:
r
->
r
module
Rep
:
Rep
val
classify_indices
:
t
list
->
(
int
*
Rep
.
t
)
list
end
module
Tensor
(
A
:
Atomic_Tensor
)
:
Tensor
with
type
tensor
=
A
.
t
and
type
r
=
A
.
r
=
with
type
tensor
=
A
.
t
and
type
Rep
.
t
=
A
.
Rep
.
t
=
struct
module
S
=
UFOx_syntax
...
...
@@ -169,10 +171,7 @@ module Tensor (A : Atomic_Tensor) : Tensor
|
_
->
failwith
"UFOx.Tensor.of_expr: power of tensor"
end
type
r
=
A
.
r
let
rep_to_string
=
A
.
rep_to_string
let
rep_of_int
=
A
.
rep_of_int
let
rep_conjugate
=
A
.
rep_conjugate
module
Rep
=
A
.
Rep
let
classify_indices'
filter
tensors
=
ThoList
.
uniq
...
...
@@ -310,43 +309,47 @@ module Atomic_Lorentz =
|
name
,
_
->
invalid_arg
(
"UFOx.Lorentz.of_expr: invalid tensor '"
^
name
^
"'"
)
type
r
=
S
|
V
|
Sp
|
CSp
|
Ghost
let
rep_to_string
=
function
|
S
->
"0"
|
V
->
"1"
|
Sp
->
"1/2"
|
CSp
->
"1/2bar"
|
Ghost
->
"Ghost"
let
rep_of_int
=
function
|
-
1
->
Ghost
|
1
->
S
|
2
->
Sp
|
3
->
V
|
_
->
invalid_arg
"UFOx.Lorentz: impossible representation!"
let
rep_conjugate
=
function
|
S
->
S
|
V
->
V
|
Sp
->
CSp
(* ??? *)
|
CSp
->
Sp
(* ??? *)
|
Ghost
->
Ghost
let
classify_indices1
=
function
|
C
(
i
,
j
)
->
[(
i
,
CSp
);
(
j
,
Sp
)]
(* ??? *)
|
Gamma5
(
i
,
j
)
|
Identity
(
i
,
j
)
|
ProjP
(
i
,
j
)
|
ProjM
(
i
,
j
)
->
[(
i
,
CSp
);
(
j
,
Sp
)]
|
Epsilon
(
mu
,
nu
,
ka
,
la
)
->
[(
mu
,
V
);
(
nu
,
V
);
(
ka
,
V
);
(
la
,
V
)]
|
Gamma
(
mu
,
i
,
j
)
->
[(
mu
,
V
);
(
i
,
CSp
);
(
j
,
Sp
)]
|
Metric
(
mu
,
nu
)
->
[(
mu
,
V
);
(
nu
,
V
)]
|
P
(
mu
,
n
)
->
[(
mu
,
V
)]
|
Sigma
(
mu
,
nu
,
i
,
j
)
->
[(
mu
,
V
);
(
nu
,
V
);
(
i
,
CSp
);
(
j
,
Sp
)]
module
Rep
=
struct
type
t
=
S
|
V
|
Sp
|
CSp
|
Ghost
let
to_string
=
function
|
S
->
"0"
|
V
->
"1"
|
Sp
->
"1/2"
|
CSp
->
"1/2bar"
|
Ghost
->
"Ghost"
let
of_int
=
function
|
-
1
->
Ghost
|
1
->
S
|
2
->
Sp
|
3
->
V
|
_
->
invalid_arg
"UFOx.Lorentz: impossible representation!"
let
conjugate
=
function
|
S
->
S
|
V
->
V
|
Sp
->
CSp
(* ??? *)
|
CSp
->
Sp
(* ??? *)
|
Ghost
->
Ghost
let
classify_indices
=
function
|
C
(
i
,
j
)
->
[(
i
,
CSp
);
(
j
,
Sp
)]
(* ??? *)
|
Gamma5
(
i
,
j
)
|
Identity
(
i
,
j
)
|
ProjP
(
i
,
j
)
|
ProjM
(
i
,
j
)
->
[(
i
,
CSp
);
(
j
,
Sp
)]
|
Epsilon
(
mu
,
nu
,
ka
,
la
)
->
[(
mu
,
V
);
(
nu
,
V
);
(
ka
,
V
);
(
la
,
V
)]
|
Gamma
(
mu
,
i
,
j
)
->
[(
mu
,
V
);
(
i
,
CSp
);
(
j
,
Sp
)]
|
Metric
(
mu
,
nu
)
->
[(
mu
,
V
);
(
nu
,
V
)]
|
P
(
mu
,
n
)
->
[(
mu
,
V
)]
|
Sigma
(
mu
,
nu
,
i
,
j
)
->
[(
mu
,
V
);
(
nu
,
V
);
(
i
,
CSp
);
(
j
,
Sp
)]
end
let
classify_indices
tensors
=
List
.
sort
compare
(
List
.
fold_right
(
fun
v
acc
->
classify_indices
1
v
@
acc
)
(
fun
v
acc
->
Rep
.
classify_indices
v
@
acc
)
tensors
[]
)
end
...
...
@@ -414,48 +417,53 @@ module Atomic_Color =
|
K6
(
i'
,
j
,
k
)
->
Printf
.
sprintf
"K6(%d,%d,%d)"
i'
j
k
|
K6Bar
(
i'
,
j
,
k
)
->
Printf
.
sprintf
"K6Bar(%d,%d,%d)"
i'
j
k
type
r
=
S
|
Sbar
|
F
|
C
|
A
let
rep_to_string
=
function
|
S
->
"1"
|
Sbar
->
"1bar"
|
F
->
"3"
|
C
->
"3bar"
|
A
->
"8"
let
rep_of_int
=
function
|
1
->
S
|
-
1
->
Sbar
(* UFO appears to use this for colorless antiparticles!. *)
|
3
->
F
|
-
3
->
C
|
8
->
A
|
6
|
-
6
->
failwith
"UFOx.Color: sextets not supported yet!"
|
_
->
invalid_arg
"UFOx.Color: impossible representation!"
module
Rep
=
struct
type
t
=
S
|
Sbar
|
F
|
C
|
A
let
to_string
=
function
|
S
->
"1"
|
Sbar
->
"1bar"
|
F
->
"3"
|
C
->
"3bar"
|
A
->
"8"
let
of_int
=
function
|
1
->
S
(* UFO appears to use this for colorless antiparticles!. *)
|
-
1
->
Sbar
|
3
->
F
|
-
3
->
C
|
8
->
A
|
6
|
-
6
->
failwith
"UFOx.Color: sextets not supported yet!"
|
_
->
invalid_arg
"UFOx.Color: impossible representation!"
let
rep_conjugate
=
function
|
Sbar
->
S
|
S
->
Sbar
|
C
->
F
|
F
->
C
|
A
->
A
let
classify_indices1
=
function
|
Identity
(
i
,
j
)
->
[(
i
,
F
);
(
j
,
C
)]
|
T
(
a
,
i
,
j
)
->
[(
i
,
F
);
(
j
,
C
);
(
a
,
A
)]
|
F
(
a
,
b
,
c
)
|
D
(
a
,
b
,
c
)
->
[(
a
,
A
);
(
b
,
A
);
(
c
,
A
)]
|
Epsilon
(
i
,
j
,
k
)
->
[(
i
,
F
);
(
j
,
F
);
(
k
,
F
)]
|
EpsilonBar
(
i
,
j
,
k
)
->
[(
i
,
C
);
(
j
,
C
);
(
k
,
C
)]
|
T6
(
a
,
i'
,
j'
)
->
failwith
"UFOx.Color: sextets not supported yet!"
|
K6
(
i'
,
j
,
k
)
->
failwith
"UFOx.Color: sextets not supported yet!"
|
K6Bar
(
i'
,
j
,
k
)
->
failwith
"UFOx.Color: sextets not supported yet!"
let
conjugate
=
function
|
Sbar
->
S
|
S
->
Sbar
|
C
->
F
|
F
->
C
|
A
->
A
let
classify_indices
=
function
|
Identity
(
i
,
j
)
->
[(
i
,
F
);
(
j
,
C
)]
|
T
(
a
,
i
,
j
)
->
[(
i
,
F
);
(
j
,
C
);
(
a
,
A
)]
|
F
(
a
,
b
,
c
)
|
D
(
a
,
b
,
c
)
->
[(
a
,
A
);
(
b
,
A
);
(
c
,
A
)]
|
Epsilon
(
i
,
j
,
k
)
->
[(
i
,
F
);
(
j
,
F
);
(
k
,
F
)]
|
EpsilonBar
(
i
,
j
,
k
)
->
[(
i
,
C
);
(
j
,
C
);
(
k
,
C
)]
|
T6
(
a
,
i'
,
j'
)
->
failwith
"UFOx.Color: sextets not supported yet!"
|
K6
(
i'
,
j
,
k
)
->
failwith
"UFOx.Color: sextets not supported yet!"
|
K6Bar
(
i'
,
j
,
k
)
->
failwith
"UFOx.Color: sextets not supported yet!"
end
let
classify_indices
tensors
=
List
.
sort
compare
(
List
.
fold_right
(
fun
v
acc
->
classify_indices
1
v
@
acc
)
(
fun
v
acc
->
Rep
.
classify_indices
v
@
acc
)
tensors
[]
)
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment