<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>On Oct 17, 2012, at 3:35 AM, Justin Paston-Cooper &lt;<a href="mailto:paston.cooper@gmail.com">paston.cooper@gmail.com</a>&gt; wrote:</div><blockquote type="cite"><div>Thanks for all the informative replies. SBV seems the simplest solution right now, and speed isn't too much of an issue here. Anything under 20 seconds per solution should be bearable.</div></blockquote><br><div>I'm happy to announce the SMT based linear equation solver library:&nbsp;<a href="http://hackage.haskell.org/package/linearEqSolver">http://hackage.haskell.org/package/linearEqSolver</a></div><div><br></div><div>You can use it get solutions over Integers only, or over Rationals if so needed. Functions are provided to extract one solution, or all possible solutions (as a lazy list). The latter variant is useful for underspecified systems.&nbsp;</div><div><br></div><div>Regarding performance: SMT solvers are very good at solving such equations, so aside from the overhead of calling out to an external program, it should be fairly fast. I'd expect no practical instance to come to anywhere near the 20 second limit you've mentioned. For most practical instances, the process switch overhead would dominate computation time, which should be negligible. Let me know if you find otherwise.&nbsp;</div><div><br></div><div>-Levent.&nbsp;</div></body></html>