It works. Thank you for your answer. But important question remains. Can I get latex output for a and ap like a^{- i_1 ... i_n}_{j_1 ... j_n} with contravariant and covariant indexes? For ncsymbol class I can do it. When I tried to do it with clifford with program cout << latex << endl; cout << indexed(a,nu) << endl; I got next result: {\clifford[0]{e}_{{0} }}_{{\nu} } It contains excess symbols like {\clifford[0]{e}_{{0} }} and don't contains a^{-} or a^{+} On 01/23/2017 03:32 PM, Vladimir V. Kisil wrote:
Hi,
On Mon, 23 Jan 2017 00:35:56 +0500, abpetrov <abpetrov@ufacom.ru> said: ABP> Below is simple example of program with program output. How to ABP> change the class ncsymbol so that it was possible to apply ABP> rules like a*ap==ap*a+1?
If you need just an implementation of the Heisenberg commutation relations you can use clifford class for this. GiNaC clifford class can handle both anti-commutators (proper Clifford algebras) and commutators. The attached example show this: "+1" at the end of definition of e tells to use commutators.
Many years ago I derived a class lie_algebra from the class clifford, it was able to represent an arbitrary Lie algebra. At that time it was badly written (messing with some pointers) and it does not work with the current GiNaC (as I have discovered yesterday). Yet, that can be done properly. However, the speed for large commutators was not great, Singular is doing this much better.
Best wishes, Vladimir