Laisser et être -vecteurs de variables booléennes. J'ai un prédicat booléen sur . Je donne mon ami Priscilla. En réponse, elle me donne, un prédicat booléen sur et elle prétend que
ou en d'autres termes, que
Je voudrais vérifier sa réclamation en quelque sorte. Comment Priscilla peut-elle m'aider à vérifier cette affirmation?
Vous pouvez supposer que les deux et sont représentés comme des formules CNF, et qu'ils ne sont pas trop grands (taille polynomiale, ou quelque chose).
Dans un monde idéal, ce serait génial si je pouvais réduire le problème de vérification de cette réclamation auprès de SAT: j'ai un solveur SAT, et ce serait génial si je pouvais utiliser le solveur SAT pour vérifier cette réclamation. Cependant, je suis à peu près sûr qu'il ne sera pas possible de formuler le problème de la vérification de cette revendication directement en tant qu'instance SAT; tester la validité d'une formule 2QBF est presque certainement plus difficile que SAT. (Le la direction est facile à formuler comme une instance SAT, mais la la direction est difficile car elle implique intrinsèquement deux quantificateurs alternés.)
Mais supposons que Priscilla puisse me fournir des preuves supplémentaires pour étayer sa demande. Y a-t-il des preuves supplémentaires ou un témoin que Priscilla pourrait me donner, ce qui me permettrait de vérifier facilement sa demande? En particulier, y a-t-il des preuves ou des témoins supplémentaires qu'elle pourrait me fournir, qui me permettraient de formuler facilement le problème de la vérification de sa réclamation en tant qu'instance de SAT (à laquelle je peux ensuite appliquer mon solveur SAT)?
Un aspect inhabituel de mon environnement est que je suppose (heuristiquement) que j'ai un oracle pour SAT. Si vous aimez la théorie de la complexité, vous pouvez y penser de cette façon: je prends le rôle d'une machine capable de calculer des choses dans (c.-à-d. ), et je cherche à vérifier l'affirmation de Priscilla à l'aide d'un algorithme . Merci à mdx pour cette façon de penser les choses.
Ma motivation / application: je cherche à faire une vérification formelle d'un système (par exemple, vérification de modèle symbolique), et une étape clé du raisonnement implique l'élimination du quantificateur (c'est-à-dire, à partir de , obtenez ). J'espère un moyen propre de vérifier que l'élimination du quantificateur a été effectuée correctement.
S'il n'y a pas de solution qui fonctionne pour tous les possibles , n'hésitez pas à suggérer une solution "saine mais pas complète", c'est-à-dire une technique qui, pour me permet de vérifier l'équivalence revendiquée. (Même s'il ne parvient pas à vérifier la réclamation sur certainsqui satisfont la demande, je peux toujours essayer cela comme une heuristique, tant qu'il ne prétend jamais à tort avoir vérifié une fausse demande. Sur tout donné, cela pourrait fonctionner ou non; si cela ne fonctionne pas, je ne suis pas pire que là où j'ai commencé.)
first-order-logic
tag soit justifié. La question porte sur les formules booléennes quantifiées.