Nous savons par le théorème de Church que la détermination de la satisfiabilité du premier ordre est indécidable en général, mais il existe plusieurs techniques que nous pouvons utiliser pour déterminer la satisfiabilité du premier ordre. Le plus évident est de rechercher un modèle fini. Cependant, il existe un certain nombre d'énoncés dans la logique du premier ordre dont nous pouvons démontrer qu'ils n'ont pas de modèles finis. Par exemple, tout domaine dans lequel opère une fonction injective et non surjective est infini.
Comment pouvons-nous démontrer la satisfiabilité pour les énoncés de premier ordre où il n'y a pas de modèles finis ou où l'existence de modèles finis est inconnue? Dans la démonstration automatisée de théorèmes, nous pouvons déterminer la satisfiabilité de plusieurs façons:
- Nous pouvons annuler la phrase et rechercher une contradiction. Si l'on en trouve, nous prouvons la validité de premier ordre de l'énoncé et donc la satisfiabilité.
- Nous utilisons la saturation avec résolution et nous manquons d'inférences. Plus souvent qu'autrement, nous aurons une quantité infinie d'inférences à faire, donc ce n'est pas fiable.
- Nous pouvons utiliser le forçage, qui suppose l'existence d'un modèle et également la cohérence de la théorie.
Je ne connais personne implémentant le forçage comme technique mécanisée pour la démonstration automatisée de théorèmes, et cela ne semble pas facile, mais je suis intéressé si cela a été fait ou tenté, car il a été utilisé pour prouver l'indépendance pour un certain nombre de déclarations dans la théorie des ensembles, qui elle-même n'a pas de modèles finis.
Existe-t-il d'autres techniques connues pour rechercher la satisfiabilité du premier ordre applicables au raisonnement automatisé ou quelqu'un a-t-il travaillé sur un algorithme de forçage automatisé?
Réponses:
Voici une approche amusante de Brock-Nannestad et Schürmann:
Abstractions monadiques véridiques
L'idée est d'essayer de traduire des phrases de premier ordre en logique monadique de premier ordre , en "oubliant" certains arguments. Certes, la traduction n'est pas complète : il y a des phrases cohérentes qui deviennent incohérentes après la traduction.
Cependant, la logique monadique du premier ordre est décidable . On peut donc vérifier si la traduction d'une formule F est cohérente:F¯¯¯¯ F
can be checked by a decision procedure, and implies
Which implies thatF has a model, by the completeness theorem.
This theme can apply somewhat more generally: identify a decidable sub-logic of your problem, then translate your problem into it, in a way that preserves truth. In particular modern SMT solvers like Z3 have gotten astonishingly good at proving satisfiability of formulas with quantifiers (by defaultΣ01 , but can perform well on Π02 formulas).
Forcing seems to be far out of reach of automated methods at the present.
la source