Solving Linear Diophantine Constraints Incrementally

In this paper, we show how to handle linear Diophantine constraints incre-mentally by using several variations of the algorithm by Contejean and Devie (hereafter called ABCD) for solving linear Diophantine systems 4, 5]. The basic algorithm is based on a certain enumeration of the potential solutions of a system, and termination is ensured by an adequate restriction on the search. This algorithm generalizes a previous algorithm due to Fortenbacher 2], which was restricted to the case of a single equation. Note that using Fortenbacher's algorithm for solving systems of Diophantine equations by repeatedly applying it to the successive equations is completely unrealistic: the tuple of variables in the solved equation must then be substituted in the rest of the system by a linear combination of the minimal solutions found in which the coeecients stand for new variables. Unfortunately, the number of these minimal solutions is actually exponential in both the number of variables and the value of the coeecients of the equation solved. In contrast, ABCD solves systems faster, without any intermediate blow-up, since it considers the system as a whole. Besides, and this is the new feature described in this paper, it can easily tolerate additional constraints such as membership constraints, linear monotonic inequations, and so on. This is due to the enumeration of tuples which allows a componentwise control of potential solutions. This is not the case with others (more recent) algorithms for solving systems of Diophantine equations, which are based on algebraic and combinatorial techniques 7, 17].