]> www.ginac.de Git - ginac.git/blobdiff - check/exam_clifford.cpp
Synced to HEAD
[ginac.git] / check / exam_clifford.cpp
index dd4b8a24425a7d504bb1f440ca4e962b42212b4b..06396e1a0fb5dd8b09011a85ad48c7a587b357b4 100644 (file)
@@ -184,6 +184,19 @@ static unsigned clifford_check3()
        e = dirac_trace(e);
        result += check_equal(e, 4);
 
+       // traces with multiple representation labels
+       e = dirac_ONE(0) * dirac_ONE(1) / 16;
+       result += check_equal(dirac_trace(e, 0), dirac_ONE(1) / 4);
+       result += check_equal(dirac_trace(e, 1), dirac_ONE(0) / 4);
+       result += check_equal(dirac_trace(e, 2), e);
+       result += check_equal(dirac_trace(e, lst(0, 1)), 1);
+
+       e = dirac_gamma(mu, 0) * dirac_gamma(mu.toggle_variance(), 1) * dirac_gamma(nu, 0) * dirac_gamma(nu.toggle_variance(), 1);
+       result += check_equal_simplify(dirac_trace(e, 0), 4 * dim * dirac_ONE(1));
+       result += check_equal_simplify(dirac_trace(e, 1), 4 * dim * dirac_ONE(0));
+       result += check_equal_simplify(dirac_trace(e, 2), e);
+       result += check_equal_simplify(dirac_trace(e, lst(0, 1)), 16 * dim);
+
        return result;
 }
 
@@ -255,7 +268,7 @@ static unsigned clifford_check6(const matrix & A)
               psi(symbol("psi"),4), lam(symbol("lambda"), 4),
               xi(symbol("xi"), 4),  rho(symbol("rho"),4);
 
-       ex G = indexed(A, sy_symm(), psi, xi);
+       ex G = A;
 
        matrix A2(4, 4);
        A2 = A.mul(A);
@@ -275,13 +288,13 @@ static unsigned clifford_check6(const matrix & A)
        result += check_equal_simplify(e, A.trace() * dirac_ONE());
 
        e = clifford_unit(nu, G) * clifford_unit(nu, G);
-       result += check_equal_simplify(e, G.subs(psi == nu).subs(xi == nu) * dirac_ONE());
+       result += check_equal_simplify(e, indexed(G, sy_symm(), nu, nu) * dirac_ONE());
 
        e = clifford_unit(nu, G) * clifford_unit(nu.toggle_variance(), G) * clifford_unit(mu, G);
        result += check_equal_simplify(e, A.trace() * clifford_unit(mu, G));
 
        e = clifford_unit(nu, G) * clifford_unit(mu, G) * clifford_unit(nu.toggle_variance(), G);
-       result += check_equal_simplify(e, 2*G.subs(psi == mu).subs(xi == mu)*clifford_unit(mu, G) - A.trace()*clifford_unit(mu, G));
+       result += check_equal_simplify(e, 2*indexed(G, sy_symm(), mu, mu)*clifford_unit(mu, G) - A.trace()*clifford_unit(mu, G));
 
        e = clifford_unit(nu, G) * clifford_unit(nu.toggle_variance(), G)
          * clifford_unit(mu, G) * clifford_unit(mu.toggle_variance(), G);
@@ -311,7 +324,7 @@ static unsigned clifford_check6(const matrix & A)
 
        // canonicalize_clifford() checks
        e = clifford_unit(mu, G) * clifford_unit(nu, G) + clifford_unit(nu, G) * clifford_unit(mu, G);
-       result += check_equal(canonicalize_clifford(e), 2*dirac_ONE()*G.subs(psi == mu).subs(xi == nu));
+       result += check_equal(canonicalize_clifford(e), 2*dirac_ONE()*indexed(G, sy_symm(), mu, nu));
 
        e = (clifford_unit(mu, G) * clifford_unit(nu, G) * clifford_unit(lam, G)
           + clifford_unit(nu, G) * clifford_unit(lam, G) * clifford_unit(mu, G)
@@ -319,9 +332,9 @@ static unsigned clifford_check6(const matrix & A)
           - clifford_unit(nu, G) * clifford_unit(mu, G) * clifford_unit(lam, G)
           - clifford_unit(lam, G) * clifford_unit(nu, G) * clifford_unit(mu, G)
           - clifford_unit(mu, G) * clifford_unit(lam, G) * clifford_unit(nu, G)) / 6
-         + G.subs(psi == mu).subs(xi == nu) * clifford_unit(lam, G)
-         - G.subs(psi == mu).subs(xi == lam) * clifford_unit(nu, G)
-         + G.subs(psi == nu).subs(xi == lam) * clifford_unit(mu, G)
+         + indexed(G, sy_symm(), mu, nu) * clifford_unit(lam, G)
+         - indexed(G, sy_symm(), mu, lam) * clifford_unit(nu, G)
+         + indexed(G, sy_symm(), nu, lam) * clifford_unit(mu, G)
          - clifford_unit(mu, G) * clifford_unit(nu, G) * clifford_unit(lam, G);
        result += check_equal(canonicalize_clifford(e), 0);
 
@@ -347,7 +360,7 @@ static unsigned clifford_check7()
 
        ex e;
 
-       ex G = lorentz_g(psi, xi);
+       ex G = minkmetric();
 
        e = dirac_ONE() * dirac_ONE();
        result += check_equal(e, dirac_ONE());
@@ -374,7 +387,7 @@ static unsigned clifford_check7()
 
        // canonicalize_clifford() checks
        e = clifford_unit(mu, G) * clifford_unit(nu, G) + clifford_unit(nu, G) * clifford_unit(mu, G);
-       result += check_equal(canonicalize_clifford(e), 2*dirac_ONE()*G.subs(psi == mu).subs(xi == nu));
+       result += check_equal(canonicalize_clifford(e), 2*dirac_ONE()*indexed(G, sy_symm(), mu, nu));
 
        e = (clifford_unit(mu, G) * clifford_unit(nu, G) * clifford_unit(lam, G)
           + clifford_unit(nu, G) * clifford_unit(lam, G) * clifford_unit(mu, G)
@@ -382,9 +395,9 @@ static unsigned clifford_check7()
           - clifford_unit(nu, G) * clifford_unit(mu, G) * clifford_unit(lam, G)
           - clifford_unit(lam, G) * clifford_unit(nu, G) * clifford_unit(mu, G)
           - clifford_unit(mu, G) * clifford_unit(lam, G) * clifford_unit(nu, G)) / 6
-         + G.subs(psi == mu).subs(xi == nu) * clifford_unit(lam, G)
-         - G.subs(psi == mu).subs(xi == lam) * clifford_unit(nu, G)
-         + G.subs(psi == nu).subs(xi == lam) * clifford_unit(mu, G)
+         + indexed(G, sy_symm(), mu, nu) * clifford_unit(lam, G)
+         - indexed(G, sy_symm(), mu, lam) * clifford_unit(nu, G)
+         + indexed(G, sy_symm(), nu, lam) * clifford_unit(mu, G)
          - clifford_unit(mu, G) * clifford_unit(nu, G) * clifford_unit(lam, G);
        result += check_equal(canonicalize_clifford(e), 0);