Ask Your Question
1

How to define tensor product of algebras (and make it an algebra)

asked 2021-12-07 11:57:41 +0100

c.p. gravatar image

updated 2021-12-09 18:05:44 +0100

slelievre gravatar image

I'm in my first week of Sage (also new to Python). Aiming at symbolic calculations, suppose I have an associative algebra $A$ (think of the Clifford algebra, or the free algebra, for concreteness).

In particular $A$ is a vector space, and I'd like to define a tensor product $A\otimes A$. I've seen that tensor algebra is implemented in SageMath, but I only need two factors, and anyway, I'd like to make $A\otimes A$ an algebra in a way that is not endowed with the obvious product $(a\otimes b) \cdot (c\otimes d) = ac\otimes bd$. (Ideally, the final algebra will depend on a state on $A$, but for simplicity think of my product being, say, $(a\otimes b) \cdot (c\otimes d) = ac\otimes db$.)

An example of how to do what I wish (although not precisely the same object), is along the lines of Mathematica Stack Exchange answer 165511:

CenterDot[X___, Y_Plus, Z___] := CenterDot[X, #, Z] & /@ Y (* additivity *)
CenterDot[] = 1;
CenterDot[X_] := X
CenterDot[X___, 1, Y___] := CenterDot[X, Y] (* unital*) 
SetAttributes[CenterDot, Flat] (* associativity *)

This allows to create a product CenterDot that behaves as it should. But in SageMath I need to define the analogue of this on $A\otimes A$ and this is not even clear to me how to define this product. (I.e. if it's not implemented, I probably should do something analogous to the code above, first for $\otimes$, tell it that it has to be bilinear, etc.)

edit retag flag offensive close merge delete

Comments

Welcome to Ask Sage! Thank you for your question.

slelievre gravatar imageslelievre ( 2021-12-07 15:42:58 +0100 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2021-12-07 18:39:35 +0100

FrédéricC gravatar image

updated 2021-12-07 18:40:56 +0100

Like this maybe ?

sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
sage: Cl = CliffordAlgebra(Q)
sage: D = Cl.tensor_square()
sage: D in Algebras(ZZ)
True
sage: D.one()**2
1 # 1

EDIT: I missed the point that you wanted some other product. You may look at the doc of tensor_square.

edit flag offensive delete link more

Comments

Merci. I'll try it that way. What confuses me is that it seems that the tensor product $(a\otimes b)$ is represented by a#b which is recognized as a ... comment after that sign. So not sure how to type stuff.

c.p. gravatar imagec.p. ( 2021-12-08 15:47:09 +0100 )edit

To type tensor products:

sage: D.one()
1 # 1
sage: D.one().tensor(D.one())
1 # 1 # 1 # 1
slelievre gravatar imageslelievre ( 2021-12-09 18:02:27 +0100 )edit

I see, thanks. so if Cl.<a,b,c> = CliffordAlgebra(Q) then tensor((a,b)) is $a \otimes b$...

c.p. gravatar imagec.p. ( 2021-12-09 18:21:07 +0100 )edit
1

That is right. Either of the following works:

sage: tensor((a, b))
a # b
sage: a.tensor(b)
a # b
slelievre gravatar imageslelievre ( 2021-12-10 18:23:48 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2021-12-07 11:42:27 +0100

Seen: 482 times

Last updated: Dec 09 '21