X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=check%2Fexam_clifford.cpp;h=06396e1a0fb5dd8b09011a85ad48c7a587b357b4;hp=dd4b8a24425a7d504bb1f440ca4e962b42212b4b;hb=547db2f0380c03c7d013aa8bda36aa33ff5559e1;hpb=97bcb4160e08260339677cfe800a826f4bcb9a02 diff --git a/check/exam_clifford.cpp b/check/exam_clifford.cpp index dd4b8a24..06396e1a 100644 --- a/check/exam_clifford.cpp +++ b/check/exam_clifford.cpp @@ -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);