# Computing kernels of maps of modules over a finitely presented algebra

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?

1. Use Magma to compute a Groebner basis of $A$, then compute a matrix representation of $A$.
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.