# Issues with 'canonicalise'

When I use 'canonicalise', I find following code won't give right results

{\mu,\nu,\rho,\sigma}::Indices(vector).
A^{\mu\nu}::Symmetric.
B^{\mu\nu}::AntiSymmetric.
\tr{#}::LaTeXForm("{\rm Tr}").
\tr{#}::Trace.
\epsilon^{\mu\nu\rho\sigma}::EpsilonTensor.
{A^{\mu\nu}, B^{\mu\nu}}::ImplicitIndex.

ex1:=\epsilon^{\mu\nu\rho\sigma}\tr{A^{\mu\nu} B^{\rho\sigma}};
canonicalise(_);

ex2:=\epsilon^{\mu\nu\rho\sigma} \tr{A^{\mu\nu} B^{\rho\sigma}}+\epsilon^{\mu\nu\rho\sigma} \tr{A^{\nu\mu} B^{\rho\sigma}};
canonicalise(_);

ex3:=\tr{A^{\mu\nu}}\tr{B^{\mu\nu}};
canonicalise(_);

edited

+1 vote

Well spotted, thanks for reporting this. I have just pushed a fix to github that handles part of the problem (when the content of the trace is a simple tensor, not a sum or product). The problem was (and to some extent still is) that the symmetries did not make it 'out of' the trace. Will post here when a full solution is available.

Final fix now on github. Note that if you have a trace containing a sum, you will still need to distribute the trace over the individual terms before canonicalise can pick up any index symmetries (just like when you canonicalise things like A_{m n} * (B^{m n} + C^{m n})).

Thanks, but I can't build successfully, and I get the folllowing errors

[ 44%] Built target cadabra2cadabra
make[2]: *** No rule to make target 'core/CMakeFiles/cadabra2.dir/build'.  Stop.
CMakeFiles/Makefile2:390: recipe for target 'core/CMakeFiles/cadabra2.dir/all' failed
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2


Did you nuke your build directory first?

I have removed the whole file "cadabra2", and git clone agian.

That error does not make any sense, it complains that it does not know how to create a build directory. Have you messed with make/cmake or related tools recently? It builds fine here on various machines from a clean clone.

I don't remember if I have fiddled with make/cmake tool or related tools recently. I find when I write 'cmake ..', the following errors will arise

CMake Error at libs/pybind11/tools/pybind11Tools.cmake:131 (add_library):
Cannot find source file:

properties/TableauInherit.cc

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
Call Stack (most recent call first):



Ah, that was my fault. Missing files. Pull again from github, just pushed them.

Ok, It works now. Nice work.

Hi @kasper, I find another bug

{\mu,\nu,\rho}::Indices(vector).
\nabla{#}::Derivative.
V^{\mu\nu}::AntiSymmetric.
u^{\mu}::SelfNonCommuting.
u^{\mu}::Depends(\nabla{#}).
ex:=V^{\mu\nu}\nabla^{\rho}{u^{\mu}}\nabla^{\rho}{u^{\nu}};
canonicalise(_);