Verificare la correttezza dell'eliminazione del quantificatore, utilizzando SAT


8

Permettere X=(X1,...,Xn) e y=(y1,...,yn) essere n-vettori di variabili booleane. Ho un predicato booleanoQ(X,y) su X,y. Do al mio amico PriscillaQ(X,y). In risposta, mi dàP(X), un predicato booleano su Xe lei lo afferma

P(X)y.Q(X,y),

o in altre parole, quello

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

Vorrei verificare la sua richiesta in qualche modo. In che modo Priscilla può aiutarmi a verificare questo reclamo?

Puoi presumere che entrambi P e Q sono rappresentati come formule CNF e non sono troppo grandi (dimensione polinomiale o qualcosa del genere).

In un mondo ideale, sarebbe fantastico se potessi ridurre il problema di verificare questo reclamo a SAT: ho un solutore SAT, e sarebbe bello se potessi usare il solutore SAT per verificare questo reclamo. Tuttavia, sono abbastanza sicuro che non sarà possibile formulare il problema di verificare questa affermazione direttamente come istanza SAT; testare la validità di una formula 2QBF è quasi certamente più difficile di SAT. (Il la direzione è facile da formulare come istanza SAT, ma la la direzione è difficile perché coinvolge intrinsecamente due quantificatori alternati.)

Ma supponiamo che Priscilla possa darmi alcune prove aggiuntive a sostegno della sua richiesta. Ci sono ulteriori prove o testimonianze che Priscilla potrebbe darmi, il che mi renderebbe più semplice verificare la sua richiesta? In particolare, ci sono ulteriori prove o testimonianze che potrebbe darmi, il che mi renderebbe più semplice formulare il problema di verificare il suo reclamo come istanza di SAT (a cui posso quindi applicare il mio solutore SAT)?

Un aspetto insolito della mia impostazione è che sto assumendo (euristicamente) che ho un oracolo per SAT. Se ti piace la teoria della complessità, puoi pensarci in questo modo: sto assumendo il ruolo di una macchina in cui è possibile calcolare le cosePNP (ovvero, in Δ2P) e sto cercando di verificare l'affermazione di Priscilla utilizzando un algoritmo in PNP. I miei ringraziamenti a mdx per questo modo di pensare alle cose.


La mia motivazione / applicazione: sto cercando di fare una verifica formale di un sistema (ad es. Controllo simbolico del modello) e un passaggio chiave nel ragionamento prevede l'eliminazione di quantificatori (ovvero, a partire da Q, ottenere P). Spero in un modo pulito per verificare che l'eliminazione del quantificatore sia stata eseguita correttamente.

Se non esiste una soluzione che funzioni per tutto il possibile P,Q, sentiti libero di suggerire una soluzione "sana ma non completa", ovvero una tecnica che per molti P,Qmi consente di verificare l'equivalenza dichiarata. (Anche se non riesce a verificare il reclamo su alcuniP,Qche soddisfano il reclamo, posso ancora provarlo come euristico, purché non dichiari mai in modo inappropriato di aver verificato un falso reclamo. Su ogni datoP,Q, potrebbe funzionare o potrebbe non funzionare; se non funziona, non sto peggio di dove ho iniziato.)


Se diamo a Priscilla a Q(X,y) dove y è irrilevante, non stiamo risolvendo efficacemente TESOCONP? Se è così, allora non esiste un certificato che Priscilla potrebbe darti e che potrebbe aiutare a menoNP=CONP.
mdxn,

@mdx, la particolarità di questa impostazione è che ho un solutore SAT, che (empiricamente) sembra quasi sempre lavorare sui predicati in cui mi imbatto nella pratica. Quindi, se mi viene datoP(X),Q(X) e vuoi verificare X.P(X)Q(X), Posso nutrire (P(X)¬Q(X))(¬P(X)Q(X))nel mio solutore SAT; se trova che ciò non è soddisfacente, ho verificatoX.P(X)Q(X)è vero. Quindi, anche se risolve efficacementeTESO, è ancora OK in pratica. O ho frainteso l'essenza del tuo commento?
DW

1
Ah, quindi presumo che tu stia assumendo il ruolo di una macchina che decide i problemi PNP=Δ2P(o l'equivalente euristico di)?
mdxn,

@mdx, sì, ora che me lo dici, è un bel modo di pensarci. Grazie per aver suggerito questa prospettiva!
DW

Non credo che il first-order-logictag sia giustificato. La domanda riguarda le formule booleane quantificate.
kne

Risposte:


2

Ecco due tecniche che sono stato in grado di identificare:

  • Identifica una funzione Skolem esplicita. Supponiamo che Priscilla possa identificare una funzione esplicitaf tale che

    X.P(X)Q(X,f(X))

    detiene. Quindi ne consegue che l'affermazione di Priscilla è corretta.

    Ciò significa che Priscilla può aiutarci a verificare il suo reclamo fornendo una funzione fin modo che la proposizione di cui sopra sia valida. Possiamo confermare che la proposta di cui sopra è valida testando la seguente formula per verificarne la soddisfazione:

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

    Se questa formula non è soddisfacente, la richiesta di Priscilla è stata verificata.

    Un avvertimento è che Priscilla deve essere in grado di identificare una funzione adatta f. Un ulteriore avvertimento è che abbiamo bisognofessere concretamente rappresentabile in una forma concisa, diciamo, come un circuito booleano di dimensioni polinomiali. Tuttavia, se tali condizioni sono soddisfatte, questa tecnica dovrebbe funzionare.

  • Un argomento ibrido. Considera il caso speciale di questo problema, in cui stiamo quantificando su una variabile a un bit (anziché an-bit variabile); si scopre che il problema è facile da risolvere in questo caso. Questo suggerisce che cerchiamo di incatenare quella tecnican volte, ogni volta rimuovendo un altro bit di y. Si scopre che questa idea a volte funzionerà, ma non sempre.

    Vorrei spiegare come verificare la richiesta di Priscilla nel caso in cui y=(y1)è una variabile a un bit. Poiy.Q(X,y) è equivalente a Q(X,falso)Q(X,Vero). Quest'ultima formula è al massimo doppiaQ, quindi ancora di dimensioni polinomiali. Ora possiamo usare il nostro solutore SAT per verificare seQ(X,falso)Q(X,Vero) è equivalente a P(X); l'equivalenza vale esattamente se la seguente formula non è soddisfacente:

    ¬(P(X)(Q(X,falso)Q(X,Vero))).

    Quindi, se stiamo quantificando su un singolo bit, questo fornisce un modo per verificare che l'eliminazione del quantificatore sia stata eseguita correttamente.

    Per risolvere il problema originale, applicarlo più volte. Il compito di Priscilla sarà quello di darcin+1 predicati booleani R0,R1,R2,...,Rn tale che

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

    Il nostro compito sarà verificare se tutti questi predicati booleani sono stati generati correttamente. Possiamo farlo verificando seQ(x,y)R0(x,y), P(x)Rn(x),

    Rio+1(X,(yio+2,...,yn))yio+1.Rio(X,(yio+1,...,yn))per io=1,2,...,n-1.

    Si noti che quest'ultimo è un'istanza di eliminazione del quantificatore con un singolo bit, quindi abbiamo già descritto come testarlo è stato eseguito correttamente utilizzando un solutore SAT. Possiamo anche verificare seQR0 e PRusando un risolutore SAT in modo diretto. Quindi, possiamo verificare se Priscilla ha generatoR0,...,Rncorrettamente. Se lo ha fatto, lo abbiamo verificatoP è stato generato opportunamente.

    Un avvertimento è che Priscilla deve essere in grado di generare Rio'S. Un avvertimento più grande è che la dimensione di tutto ilRiodeve essere ragionevole (diciamo, di dimensioni polinomiali). Se Priscilla genera il fileRioÈ ingenuo, la loro dimensione potrebbe crescere esponenzialmente con io, che non va bene. Quindi, Priscilla avrà bisogno di un modo per semplificare in ogni fase; deve esistere una sequenza diR0,...,Rnche sono tutti di dimensioni polinomiali e Priscilla deve essere in grado di trovare una tale sequenza. Questo non è affatto garantito. Detto questo, se Priscilla può farlo, questa tecnica dovrebbe funzionare.

Non sono pienamente soddisfatto di queste tecniche - sono euristiche incomplete e potrebbero fallire in alcuni / molti casi problematici - quindi sarei ancora interessato a vedere altri modi di affrontare questo problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.