DiophantineSolutionPackageΒΆ

solvedio.spad line 1

any solution of a homogeneous linear Diophantine equation can be represented as a sum of minimal solutions, which form a “basis” (a minimal solution cannot be represented as a nontrivial sum of solutions) in the case of an inhomogeneous linear Diophantine equation, each solution is the sum of a inhomogeneous solution and any number of homogeneous solutions therefore, it suffices to compute two sets: 1. all minimal inhomogeneous solutions 2. all minimal homogeneous solutions the algorithm implemented is a completion procedure, which enumerates all solutions in a recursive depth-first-search it can be seen as finding monotone paths in a graph for more details see Reference

dioSolve: Equation Polynomial Integer -> Record(varOrder: List Symbol, inhom: Union(List Vector NonNegativeInteger, failed), hom: List Vector NonNegativeInteger)
dioSolve(u) computes a basis of all minimal solutions for linear homogeneous Diophantine equation u, then all minimal solutions of inhomogeneous equation