Seja e sejam vetores de variáveis booleanas. Eu tenho um predicado booleano em . Dou à minha amiga Priscilla . Em resposta, ela me fornece , um predicado booleano em , e ela afirma que
ou em outras palavras, que
Eu gostaria de verificar sua reivindicação de alguma forma. Como a Priscilla pode me ajudar a verificar esta reivindicação?
Você pode assumir que e são representados como fórmulas CNF e que não são muito grandes (tamanho polinomial ou algo assim).
Em um mundo ideal, seria incrível se eu pudesse reduzir o problema de verificação dessa reivindicação para SAT: eu tenho um solucionador de SAT e seria ótimo se eu pudesse usar o solucionador de SAT para verificar essa reivindicação. No entanto, tenho certeza de que não será possível formular o problema de verificar essa afirmação diretamente como uma instância SAT; testar a validade de uma fórmula 2QBF é quase certamente mais difícil que o SAT. (A direção é fácil de formular como uma instância SAT, mas a direção é difícil porque envolve inerentemente dois quantificadores alternativos.)
Mas suponha que Priscilla possa me dar alguma evidência adicional para apoiar sua afirmação. Existe alguma evidência adicional ou testemunha que Priscilla possa me dar, o que facilitaria a verificação de sua alegação? Em particular, há alguma evidência ou testemunha adicional que ela poderia me dar, o que facilitaria a formulação do problema de verificação de sua reivindicação como uma instância do SAT (na qual eu posso aplicar meu solucionador SAT)?
Um aspecto incomum da minha configuração é que estou assumindo (heuristicamente) que tenho um oráculo para o SAT. Se você gosta da teoria da complexidade, pode pensar assim: Estou assumindo o papel de uma máquina que pode computar coisas em (ou seja, em ), e estou procurando verificar se Priscilla está declaração usando um algoritmo em . Meus agradecimentos à MDX por essa maneira de pensar sobre as coisas.
Minha motivação / aplicação: estou procurando fazer a verificação formal de um sistema (por exemplo, verificação de modelo simbólico), e uma etapa fundamental no raciocínio envolve a eliminação do quantificador (ou seja, começando com , obtenha ). Espero alguma maneira limpa de verificar se a eliminação do quantificador foi feita corretamente.
Se não houver uma solução que funcione para todos os possíveis fique à vontade para sugerir uma solução "sólida, mas não completa", ou seja, uma técnica que, para muitos permita-me verificar a equivalência reivindicada. (Mesmo que ele não verifique a reivindicação em alguns que satisfazem a reivindicação, ainda posso tentar isso como uma heurística, desde que nunca afirme inadequadamente ter verificado uma declaração falsa. Em qualquer , pode funcionar ou não; se não funcionar, não estou pior do que onde comecei.)
first-order-logic
tag seja justificada. A questão é toda sobre fórmulas booleanas quantificadas.