
Can anyone suggest a library written in Haskell which can solve equations of the form xM(transpose(x)) = y, where x should be an integer vector, M is an integer matrix and y is an integer? I'm aware that Mathematica can do this, but I would like something written in Haskell. I haven't been sure of what exact keywords I should be searching for, hence my asking here.
You may interpret the function x ↦ x M transpose(x) as a quadratic form on the additive group of vectors. The group of integer vectors, together with such a quadratic form, is usually called a /lattice/ (not to be confused with its other meaning, of a set with a partial order and some meet/join operators). A vector x satisfying your equation is sometimes said to /represent/ the number y, with respect to the quadratic form. On hackage, a quick search gives the "Lattices" package, which seems related. (There is also the "lattices" package, but this is about the other lattices.) Incidentally, I also have use for this functionality, but specifically for vectors with 2 components (so the quadratic form is then binary). The equation is then a generalised Pell equation, and I think I have read somewhere how to solve it. If such code does not exist yet, I will probably write it, but this might not be very soon. Regards, Arie