Dans certains constraint logic programming systems, vous pouvez facilement voir si l'ensemble de la solution est infinie ou non. Par exemple, dans certaines implémentations CLP (FD), SWI-Prolog, Jekejeke Minlog, d'autres implémentations comme GNU Prolog et B-Prolog, puisqu'ils supposent une limite supérieure/inférieure finie, un certain degré de raisonnement avec des ensembles d'entiers infinis est donc pris en charge. Ceci est vu par les notations d'intervalle tels que (SWI-Prolog):
?- use_module(library(clpfd)).
true.
?- X #\= 2.
X in inf..1\/3..sup.
Mais il y a un inconvénient de ces ensembles, ils ne peuvent pas être utilisées dans l'étiquetage CLP (FD) où sont énumérés les éléments de l'ensemble et un une tentative supplémentaire de résoudre les équations instanciées est faite. Il serait également contraire au résultat suivant, si quelque chose pouvait être fait en général de décider CLP (FD) requêtes:
« En 1900, en reconnaissance de leur profondeur, David Hilbert a proposé la résolubilité de tous Diophantine problèmes comme le dixième de son problèmes célèbres.En 1970, un nouveau résultat dans la logique mathématique connu sous le théorème de Matiyasevich réglé le problème négativement: en problèmes diophantiens généraux sont insolubles. " (article de Wikipédia sur Diophantine equations)
Une autre programmation logique de contrainte qui peut habituellement traiter aussi avec des ensembles de solutions infinies est CLP (R). Le raisonnement parmi les équations est un peu plus fort là.Par exemple CLP (FD) ne détecte pas l'incohérence suivante (dépend du système, c'est le résultat pour SWI-Prolog, dans Jekejeke Minlog vous verrez immédiatement un non pour la deuxième requête, et GNU Prolog boucle pendant environ 4 secondes puis dire Non):
?- X #> Y.
Y#=<X+ -1.
?- X #> Y, Y #> X.
X#=<Y+ -1,
Y#=<X+ -1.
d'autre part CLP (R) trouveront:
?- use_module(library(clpr)).
?- {X > Y}.
{Y=X-_G5542, _G5542 > 0.0}.
?- {X > Y, Y > X}.
false.
travail systèmes de contrainte en mettant en œuvre des algorithmes de la théorie des nombres, l'algèbre linéaire, analyse, etc .. selon sur le domaine qu'ils modélisent, c'est-à-dire ce que * désigne dans la notation CLP (*). Ces algorithmes peuvent aller aussi loin que quantifier elimination.
Au revoir
Correct. Ce que l'OP essaie de mettre en œuvre semble être un prouveur de théorème pour les nombres naturels, nécessairement incomplet par le théorème de Gödel. –