- result += check_equal(e, pow(2 - dim, 2).expand() * clifford_unit(mu, G));
-
- // 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()*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)
- + clifford_unit(lam, G) * clifford_unit(mu, G) * clifford_unit(nu, G)
- - 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
- + 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);
-
+ result += check_equal(e, pow(scalar*(dim-2), 2).expand() * clifford_unit(mu, G));
+
+ // canonicalize_clifford() checks, only for symmetric metrics
+ if (ex_to<symmetry>(ex_to<indexed>(ex_to<clifford>(clifford_unit(mu, G)).get_metric()).get_symmetry()).has_symmetry()) {
+ 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()*unit.get_metric(nu, mu));
+
+ 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)
+ + clifford_unit(lam, G) * clifford_unit(mu, G) * clifford_unit(nu, G)
+ - 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
+ + unit.get_metric(mu, nu) * clifford_unit(lam, G)
+ - unit.get_metric(mu, lam) * clifford_unit(nu, G)
+ + unit.get_metric(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);
+ } else {
+ e = clifford_unit(mu, G) * clifford_unit(nu, G) + clifford_unit(nu, G) * clifford_unit(mu, G);
+ result += check_equal(canonicalize_clifford(e), dirac_ONE()*(unit.get_metric(mu, nu) + unit.get_metric(nu, mu)));
+
+ 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)
+ + clifford_unit(lam, G) * clifford_unit(mu, G) * clifford_unit(nu, G)
+ - 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
+ + half * (unit.get_metric(mu, nu) + unit.get_metric(nu, mu)) * clifford_unit(lam, G)
+ - half * (unit.get_metric(mu, lam) + unit.get_metric(lam, mu)) * clifford_unit(nu, G)
+ + half * (unit.get_metric(nu, lam) + unit.get_metric(lam, nu)) * clifford_unit(mu, G)
+ - clifford_unit(mu, G) * clifford_unit(nu, G) * clifford_unit(lam, G);
+ result += check_equal(canonicalize_clifford(e), 0);
+ }