For a given quadratic form Q, I'd wish to symbolically manipulate expressions in ClQ⊗C⟨x1,…,xn⟩ (if my notation is unclear, the latter factor is the free algebra).
If I take the product of ClQ⊗ ClQ, no problem:
Q=DiagonalQuadraticForm(ZZ,[1,2,3,4])
Cl = CliffordAlgebra(Q)
Cl.<e1,e2,e3,e4> = CliffordAlgebra(Q)
e1*e2 - e2*e1 == 2*e1*e2 # True
e4**2 == 4 # True.
( e1.tensor(e2) + e2.tensor(e1) ) * e2.tensor(e1) ==
-2*Cl(1). tensor(Cl(1)) + (e1*e2).tensor( e1*e2) # True
If I take the product C⟨x1,…,xn⟩⊗C⟨x1,…,xn⟩, no problem either:
F=FreeAlgebra(SR,2,'x')
Fsq = F.tensor(F)
x0,x1=F.gens()
x0.tensor(x1) in Fsq #True
Naively I tried to define ClQ⊗C⟨x1,…,xn⟩ via Cl.tensor(F)
which yields error
'Rings_with_category' object has no attribute 'TensorProducts'
Is there a way to implement ClQ⊗C⟨x1,…,xn⟩ in Sagemath, without the necessity to create a class to deal with linearity, cancellations, etc, and rather inherit those properties as implemented in each of the factors?