Improve linear system solving
Much functionality for linear system solving is still missing, even over a field. This ticket is to collect a laundry list of stuff we'd like to add.
A lot of work has already been done by Kulkarni (see #559 ) but it hasn't been merged as it relies on old semantics for aliasing and unsafe functions, etc., and generally needs some work to whip it into shape according to what we already decided.
Also note a lot already exists in Hecke.jl, but needs moving over, cleanup, documentation and testing. See:
https://github.com/thofma/Hecke.jl/blob/master/src/Misc/Matrix.jl
Some of the following may already exist, but we can check it off if done, tested and documented correctly:
- [x] Deal with non-square matrices in lufact and friends
- [x] Deal with undetermined/overdetermined/inconsistent systems in solve and friends
- [x] Implement solve_left/right for the two different conventions Ax = b, xA = b that are common
- [x] Implement solve consistently in terms of hnf
- [ ] Kernel/nullspace should work over the ring, not over the fraction field
- [ ] Upper right/lower left hnf without unnecessary transposes
I'm busy these days, but still around. Please let me know if you have any questions :-).