Skip to main content

deep_causality_multivector/alias/
alias_complex.rs

1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2023 - 2026. The DeepCausality Authors and Contributors. All Rights Reserved.
4 */
5use crate::{ComplexMultiVector, Metric};
6use deep_causality_num::Complex64;
7
8impl ComplexMultiVector {
9    /// Cl_C(2): Complex Quaternions / Pauli Algebra over C
10    /// Note: The Clifford factor L_C ~ Cl(0, 1) and L_H ~ Cl(0, 2) are negative definite.
11    /// However, the canonical complex Pauli Algebra is often taken as Cl(2, 0).
12    /// We retain Euclidean(2) here for the canonical Cl_C(2) ~ Cl(2, 0) definition.
13    pub fn new_complex_pauli(data: Vec<Complex64>) -> Self {
14        Self::new_complex_clifford_2(data)
15    }
16
17    /// Cl_C(2): Complex Quaternions / Pauli Algebra over C
18    /// Note: The Clifford factor L_C ~ Cl(0, 1) and L_H ~ Cl(0, 2) are negative definite.
19    /// However, the canonical complex Pauli Algebra is often taken as Cl(2, 0).
20    /// We retain Euclidean(2) here for the canonical Cl_C(2) ~ Cl(2, 0) definition.
21    pub fn new_complex_clifford_2(data: Vec<Complex64>) -> Self {
22        Self::new(data, Metric::Euclidean(2)).unwrap()
23    }
24
25    /// Cl_C(4) (Full Multiplication Algebra of the Quaternions, M_H ~ Cl(0, 4)).
26    /// This algebra hosts the Spin(4) ~ SU(2)_L * SU(2)_R symmetries of the Pati-Salam and LR Symmetric models.
27    /// It is a key building block for the electroweak sector.
28    pub fn new_quaternion_operator(data: Vec<Complex64>) -> Self {
29        Self::new_complex_clifford_4(data)
30    }
31
32    /// Cl_C(4) (Full Multiplication Algebra of the Quaternions, M_H ~ Cl(0, 4)).
33    /// This algebra hosts the Spin(4) ~ SU(2)_L * SU(2)_R symmetries of the Pati-Salam and LR Symmetric models.
34    /// It is a key building block for the electroweak sector.
35    pub fn new_complex_clifford_4(data: Vec<Complex64>) -> Self {
36        // Metric is NonEuclidean(4) for M_H ~ Cl(0, 4).
37        // Dimension is 4, size is 2^4 = 16 complex coefficients.
38        Self::new(data, Metric::NonEuclidean(4)).unwrap()
39    }
40
41    /// Cl_C(6): The algebra acting on Octonions (via Left Multiplication), L_O ~ Cl(0, 6)
42    /// Used for the initial decomposition in the paper (Spin(10) -> Pati-Salam).
43    pub fn new_octonion_operator(data: Vec<Complex64>) -> Self {
44        Self::new_complex_clifford_6(data)
45    }
46    /// Cl_C(6): The algebra acting on Octonions (via Left Multiplication), L_O ~ Cl(0, 6)
47    /// Used for the initial decomposition in the paper (Spin(10) -> Pati-Salam).
48    pub fn new_complex_clifford_6(data: Vec<Complex64>) -> Self {
49        // Metric is NonEuclidean(6) to represent the generators e_i^2 = -1 (imaginary units).
50        Self::new(data, Metric::NonEuclidean(6)).unwrap()
51    }
52
53    /// Cl_C(6): The algebra of the Dixon state space, A = C*H*O ~ Cl(0, 6)
54    /// This is used to host the 64 complex components of the Standard Model generations.
55    pub fn new_dixon_state_space(data: Vec<Complex64>) -> Self {
56        Self::new_complex_clifford_6(data)
57    }
58
59    /// Cl_C(8): The Left Multiplication Algebra of the Dixon Algebra, L_A ~ Cl(0, 8)
60    /// L_A = L_C * L_H * L_O ~ Cl(0, 1) * Cl(0, 2) * Cl(0, 6) ~ Cl(0, 8).
61    /// This is used to host Spin(8) triality and the Cl(6) decomposition.
62    pub fn new_dixon_algebra_left(data: Vec<Complex64>) -> Self {
63        Self::new_complex_clifford_8(data)
64    }
65
66    /// Cl_C(8): The Left Multiplication Algebra of the Dixon Algebra, L_A ~ Cl(0, 8)
67    /// L_A = L_C * L_H * L_O ~ Cl(0, 1) * Cl(0, 2) * Cl(0, 6) ~ Cl(0, 8).
68    /// This is used to host Spin(8) triality and the Cl(6) decomposition.
69    pub fn new_complex_clifford_8(data: Vec<Complex64>) -> Self {
70        // Metric is NonEuclidean(8) for L_A ~ Cl(0, 8).
71        Self::new(data, Metric::NonEuclidean(8)).unwrap()
72    }
73
74    /// Cl_C(10): The Grand Unified Algebra (Spin(10)) ~ L_A * R_H ~ Cl(0, 10)
75    /// This is the full multiplication algebra of A = R*C*H*O.
76    pub fn new_gut_algebra(data: Vec<Complex64>) -> Self {
77        Self::new_complex_clifford_10(data)
78    }
79
80    /// Cl_C(10): The Grand Unified Algebra (Spin(10)) ~ L_A * R_H ~ Cl(0, 10)
81    /// This is the full multiplication algebra of A = R*C*H*O.
82    pub fn new_complex_clifford_10(data: Vec<Complex64>) -> Self {
83        // Metric is NonEuclidean(10) for M_A ~ Cl(0, 10).
84        Self::new(data, Metric::NonEuclidean(10)).unwrap()
85    }
86}