Tensor product of elements of non-free algebras

asked 2021-01-19 21:04:27 +0100

Will Orrick gravatar image

updated 2021-01-20 04:42:10 +0100

In SageMath 9.1 I am unable to execute the code

a = SteenrodAlgebra(2).an_element()
M = CombinatorialFreeModule(GF(2), 's,t,u')
s = M.basis()['s']
T = tensor([a,s])

which is copied verbatim from this answer posted back in 2012. Instead, I get AttributeError on the tensor command. Is there some ingredient I'm missing?

More to the point, I am unable to run

N = 2
k.<w> = CyclotomicField(N)

A.<X,Z> = FreeAlgebra(k, 2)
F = A.monoid()
X, Z = F.gens()

monomials = [X^i*Z^j for j in range(0,N) for i in range(0,N)]

MS = MatrixSpace(k, len(monomials))
matrices = [
    # matrix showing the action of the first generator, X, on the monomials
    MS([0, 1, 0, 0,    # 1*X = X
          1, 0, 0, 0,    # X*X = 1
          0, 0, 0, -1,   # Z*X = -XZ
          0, 0, -1, 0    # XZ*X = -Z
         ]),
    # matrix showing the action of the second generator, Z, on the monomials
    MS([0, 0, 1, 0,     # 1*Z = Z
          0, 0, 0, 1,    # X*Z = XZ
          1, 0, 0, 0,    # Z*Z = 1
          0, 1, 0, 0     # XZ*Z = X
         ]),
]
B.<X,Z> = A.quotient(monomials, matrices)

tensor( (X*Z,X) )

which is the code I'm actually interested in. In this instance I get AssertionError on the tensor command. Is there some restriction on using tensor on non-free algebras? The code below executes fine:

N = 3
k.<w> = CyclotomicField(N)

A.<X,Z> = FreeAlgebra(k, 2)

tensor( (X*Z,X) )
edit retag flag offensive close merge delete

Comments

2

The code

a = SteenrodAlgebra(2).an_element()
M = CombinatorialFreeModule(GF(2), ['s', 't', 'u'])
s = M.basis()['s']
T = tensor([a, s])

works fine in Sage 8.8 but fails in Sage 8.9.

This might have to do with the changes in Sage Trac ticket 25603.

slelievre gravatar imageslelievre ( 2021-01-19 21:52:16 +0100 )edit
1

Thanks for reporting. This appears to reveal a bug. Fixing it is now tracked at

slelievre gravatar imageslelievre ( 2021-01-20 19:03:42 +0100 )edit

Thanks. I've been trying (with difficulty) to follow the discussion there, and there seems to be some question about whether tensor() is even supposed to be defined on elements. I did find examples in the documentation here and here. But maybe it's not defined for every type of algebra? If not, is this something that is feasible for a user to define themselves?

Will Orrick gravatar imageWill Orrick ( 2021-01-20 20:52:29 +0100 )edit