I have the following problem: I have an associative (noncommutative) algebra $A$ defined over a rational function field $k = \mathbb{Q}(\delta, \lambda)$. $A$ is given by a presentation in terms of generators and relations, and is finite-dimensional but typically large.

I want to consider $A$ as a bimoodule over itself. I can then define some linear maps $f_i : A \to A$ by $f_i(x) = a_i x b_i$ for fixed elements $a_i, b_i \in A$. I want to compute the kernels of the maps $f_i$, in particular their intersection.

I'm having a lot of difficulty finding a computer algebra system (CAS) that can do this. Basically the only CAS that will effectively work with such an $A$ is Magma, because it can compute noncommutative Groebner bases over rational function fields. In particular, it can compute a basis of $A$ as a matrix algebra over $k$.

Unfortunately, I can't find a good way of working with the matrix algebra representation of $A$; if Magma has a good way of dealing with bimodules or computing kernels of linear maps of algebras, I can't find it.

An alternate method would be to simply compute the matrices of the $f_i$ as linear maps and use standard linear algebra techniques. I would want to do this in another CAS, most likely Sage, because I've found it very difficult to script anything in Magma.

Unfortunately I can't figure out a good way of exporting the basis of $A$ (given as matrices with entries in $k$), since Magma prints matrices in an odd format and the Sage-Magma interface runs into an error when trying to convert it itself. I might just print the basis to a text file and write a script to parse it into a format Sage can read, but I'd rather not have to do that.

Does anyone have any suggestions for dealing with this problem?


My eventual solution was as follows:

  1. Use Magma to compute a Groebner basis of $A$, then compute a matrix representation of $A$.
  2. Export this representation to Sage,* then compute the matrices of the linear maps over the vector space of matrices with coefficients in the symbolic ring (which was suitably vectorized.)
  3. Compute the intersections of the kernels in Sage or another CAS.

I wound up doing (3) in Mathematica, because Sage was extremely slow at computing kernels of matrices with symbolic entries. I think this was because it doesn't know to try to simplify polynomials at each step, because there was no speedup when adding relations on the symbols (setting $\delta = \sqrt2 $ or the like.) Mathematica was much faster in this case.

*For some reason there was no automatic way to do this, or at least I couldn't get the Sage-Magma link working properly. Instead I had to print the matrices to a text file, reformat them using a script, then load them into Sage.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.