My basic problem is as follows. M is a fairly complex quotient module over a hypersurface ring R, and I would like to construct an element of M (really, I just need the i-th generator). When I call M_i, the construction is immensely slow (measured in minutes, which is orders of magnitude slower than what would be practical for my application). While I can construct a map f from R^1 to the free cover of M almost instantly, the call to map(M, R^1, f) is again very slow.
Can anybody illuminate what is happening under the hood that is slowing this computation down? I had hoped that the call to map would consist only of an inexpensive update to the target key on f, but evidently I am missing something. Is it reducing the columns of f to some "minimal form" in M? In general, is there any way around this slowdown?
For context, R=GF(5)[x1..x6]/(x1^3+..x6^3) and M is presented by a roughly 5000x5000 matrix. R also has a non-standard grading (each variable has degree 5), but I don't expect that to be relevant...
Any suggestions are much appreciated.