Vérifier l'exactitude de l'élimination du quantificateur, à l'aide de SAT


8

Laisser x=(x1,,xn) et y=(y1,,yn) être n-vecteurs de variables booléennes. J'ai un prédicat booléenQ(x,y) sur x,y. Je donne mon ami PriscillaQ(x,y). En réponse, elle me donneP(x), un prédicat booléen sur xet elle prétend que

P(x)y.Q(x,y),

ou en d'autres termes, que

x.[P(x)y.Q(x,y)].

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 P et Q 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 dansPNP (c.-à-d. Δ2P), et je cherche à vérifier l'affirmation de Priscilla à l'aide d'un algorithme PNP. 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 Q, obtenez P). 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 P,Q, n'hésitez pas à suggérer une solution "saine mais pas complète", c'est-à-dire une technique qui, pour P,Qme permet de vérifier l'équivalence revendiquée. (Même s'il ne parvient pas à vérifier la réclamation sur certainsP,Qqui 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éP,Q, cela pourrait fonctionner ou non; si cela ne fonctionne pas, je ne suis pas pire que là où j'ai commencé.)


Si nous donnons un Priscilla Q(x,y) où y n'est pas pertinent, ne résolvons-nous pas efficacement TAUTcoNP? Si c'est le cas, alors il n'y a aucun certificat que Priscilla pourrait vous donner qui pourrait vous aider à moinsNP=coNP.
mdxn

@mdx, la particularité de ce paramètre est que j'ai un solveur SAT, qui (empiriquement) semble presque toujours fonctionner sur les prédicats que je rencontre en pratique. Donc, si on me donneP(x),Q(x) et je veux vérifier x.P(x)Q(x), Je peux nourrir (P(x)¬Q(x))(¬P(x)Q(x))dans mon solveur SAT; s'il trouve que ce n'est pas satisfaisant, j'ai vérifiéx.P(x)Q(x)est vrai. Donc, même si cela résout efficacementTAUT, c'est toujours OK dans la pratique. Ou ai-je mal compris l'essentiel de votre commentaire?
DW

1
Ah, donc je suppose que vous jouez le rôle d'une machine qui décide des problèmes PNP=Δ2P(ou l'équivalent heuristique de)?
mdxn

@mdx, oui, maintenant que vous en parlez, c'est une belle façon d'y penser. Merci d'avoir suggéré cette perspective!
DW

Je ne pense pas que le first-order-logictag soit justifié. La question porte sur les formules booléennes quantifiées.
gen

Réponses:


2

Voici deux techniques que j'ai pu identifier:

  • Identifiez une fonction Skolem explicite. Supposons que Priscilla puisse identifier une fonction explicitef tel que

    x.P(x)Q(x,f(x))

    tient. Il s'ensuit ensuite que la prétention de Priscilla est correcte.

    Cela signifie que Priscilla peut nous aider à vérifier sa demande en fournissant une fonction fde sorte que la proposition ci-dessus est valable. Nous pouvons confirmer que la proposition ci-dessus est vraie en testant la formule suivante pour la satisfiabilité:

    ¬(P(x)Q(x,f(x))).

    Si cette formule n'est pas satisfaisante, la réclamation de Priscilla a été vérifiée.

    Une mise en garde est que Priscilla doit être en mesure d'identifier une fonction appropriée f. Une autre mise en garde est que nous avons besoinfêtre concrètement représentable sous une forme concise, disons, comme un circuit booléen de taille polynomiale. Cependant, si ces conditions sont remplies, cette technique devrait fonctionner.

  • Un argument hybride. Considérons le cas particulier de ce problème, où nous quantifions sur une variable d'un bit (plutôt qu'unn-bit variable); il s'avère que le problème est facile à résoudre dans ce cas. Cela suggère que nous essayons d'enchaîner cette techniquen fois, chaque fois en supprimant un bit de plus y. Il s'avère que cette idée fonctionnera parfois, mais pas toujours.

    Permettez-moi d'expliquer comment vérifier la réclamation de Priscilla dans le cas où y=(y1)est une variable d'un bit. alorsy.Q(x,y) est équivalent à Q(x,False)Q(x,True). Cette dernière formule est au plus deux fois plus grande queQ, donc toujours de taille polynomiale. Maintenant, nous pouvons utiliser notre solveur SAT pour tester siQ(x,False)Q(x,True) est équivalent à P(x); l'équivalence est exacte si la formule suivante n'est pas satisfaisable:

    ¬(P(x)(Q(x,False)Q(x,True))).

    Donc, si nous quantifions sur un seul bit, cela donne un moyen de vérifier que l'élimination du quantificateur a été effectuée correctement.

    Pour résoudre le problème d'origine, appliquez ceci plusieurs fois. Le travail de Priscilla sera de nous donnern+1 prédicats booléens R0,R1,R2,,Rn tel que

    Ri(x,(yi+1,,yn))y1,y2,,yi.Q(x,y).

    Notre tâche sera de vérifier si tous ces prédicats booléens ont été correctement générés. Nous pouvons le faire en testant siQ(x,y)R0(x,y), P(x)Rn(x),

    Ri+1(x,(yi+2,,yn))yi+1.Ri(x,(yi+1,,yn))for i=1,2,,n1.

    Notez que ce dernier est une instance d'élimination de quantificateur avec un seul bit, nous avons donc déjà décrit comment tester qu'il a été fait correctement en utilisant un solveur SAT. Nous pouvons également tester siQR0 et PRen utilisant un solveur SAT directement. Ainsi, nous pouvons vérifier si Priscilla a généréR0,,Rncorrectement. Si c'est le cas, nous avons vérifié queP a été généré correctement.

    Une mise en garde est que Priscilla doit être en mesure de générer le Ri's. Une mise en garde plus importante est que la taille de tous lesRidoit être raisonnable (par exemple, de taille polynomiale). Si Priscilla génère leRinaïvement, leur taille pourrait croître de façon exponentielle avec i, ce qui n'est pas bon. Ainsi, Priscilla aura besoin d'un moyen de simplifier à chaque étape; il doit exister une séquence deR0,,Rnqui sont tous de taille polynomiale, et Priscilla doit pouvoir trouver une telle séquence. Ce n'est nullement garanti. Cela dit, si Priscilla peut le faire, cette technique devrait fonctionner.

Je ne suis pas entièrement satisfait de ces techniques - ce sont des heuristiques incomplètes, et elles peuvent échouer sur certains / nombreux exemples de problèmes - donc je serais toujours intéressé de voir d'autres façons d'aborder ce problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.