These breakages happen because Lt has two completely different internal representations (self.R vs self.lt_dict) that are chosen base on the constructor (.spinor = True vs .spinor = False), and most of the methods pick between them.
>>> base = Ga('a b', g=[1, 1], coords=symbols('x, y', real=True))
>>> R = base.mv('R', 'spinor')
>>> f = base.lt(R)
>>> f
R = R + R__xy*a^b
>>> f + f
Lt(a) = 0
Lt(b) = 0
>>> f * 2
Lt(a) = 0
Lt(b) = 0
My recommendation would be to eliminate the spinor representation entirely, and just convert to lt_dict at construction.
These breakages happen because
Lthas two completely different internal representations (self.Rvsself.lt_dict) that are chosen base on the constructor (.spinor = Truevs.spinor = False), and most of the methods pick between them.My recommendation would be to eliminate the spinor representation entirely, and just convert to
lt_dictat construction.