Distinguir Procedimento de Decisão vs Solver SMT vs Provador de Teoremas vs Solucionador de Restrições

24

Essas terminologias me confundem. Como eu entendo

  • Solucionador SAT: decida a satisfação da lógica proposicional (usando DPLL ou Local Search).
  • Procedimento de decisão é um procedimento para decidir a satisfação de uma certa teoria de primeira ordem decidível.
  • O SMT Solver é um procedimento SAT Solver + Decision.
  • O provador de teoremas indica algo como Dynamic Logic, por exemplo, a ferramenta KeY
  • Solucionador de restrições: não sei.

Mas vejo pessoas chamando Z3 de provador de teoremas. Portanto, não sei como desmentir esses termos. E qual é o termo mais geral para todos eles? Obrigado.

qsp
fonte

Respostas:

19

O SMT Solver é um procedimento SAT Solver + Decision

Um solucionador SAT é um solucionador para um problema de decisão: o problema SAT é um problema de decisão. Além disso, esse problema de decisão é "auto-redutível":

O problema do SAT é auto-redutível, ou seja, cada algoritmo que responde corretamente se uma instância do SAT é solucionável pode ser usado para encontrar uma tarefa satisfatória

- ( wikipedia )

Isso significa que os solucionadores de SAT também podem fornecer a tarefa satisfatória, além de decidir o problema.

Os solucionadores TL; DR SMT resolvem uma generalização do problema SAT, dependendo dos tipos / restrições permitidas na teoria. Além disso, eles também permitem a codificação de relacionamentos de tipo de nível superior ao permitido pelas codificações SAT.

(UMA=B)(B=C)(UMA=C)

  1. Consulte o solucionador Beaver SMT, que pode até gerar o problema SAT equivalente que precisaria ser resolvido.

Enquanto o solucionador QF_BV SMT tem essa vantagem sobre um solucionador SAT, não acho que seja uma vantagem de complexidade: ambos são essencialmente equivalentes e levam um tempo exponencial para resolver seus piores problemas. Mas, na prática, um solucionador QF_BV SMT pode ser muito mais rápido devido a esse conhecimento extra. Veja minha resposta para Limites de solucionadores SMT , para um exemplo de algo considerado "difícil" que os resolvedores (atuais) QF_BV SMT e SAT resolveriam engasgar.

Também existem solucionadores de SMT que tentam resolver problemas ainda mais difíceis do que a Satisfação Booleana (por exemplo, permitindo tipos e restrições em reais ou quantificadores); obviamente, estes são teoricamente pelo menos tão lentos quanto um solucionador de SAT. Esses solucionadores de SMT estão resolvendo uma generalização do problema do SAT; em vez de usar variáveis ​​binárias, cada "teoria" permite relacionamentos / restrições sobre diferentes domínios, como reais ou restrições quantificadas (para todos).

Provador do teorema

P=NP

Mas essas mudanças podem ter uma importância pálida em comparação à revolução, um método eficiente para resolver problemas completos de NP causaria na própria matemática. De acordo com Stephen Cook, [19]

... transformaria a matemática, permitindo que um computador encontrasse uma prova formal de qualquer teorema com uma duração razoável, uma vez que as provas formais podem ser facilmente reconhecidas em tempo polinomial. Problemas de exemplo podem muito bem incluir todos os problemas de prêmios do CMI.

- ( wikipedia )

[19]: Cook, Stephen (abril de 2000). Problema P versus NP. Instituto de Matemática Argila (PDF) .

P=NP

Mas, por enquanto, o teorema automatizado em sua maioria provadores usa heurísticas ou algoritmos de tempo exponencial (mas ainda são úteis).

Solucionador de restrições

Geralmente, são reformulações dos solucionadores SAT / SMT para outros idiomas. Se você já usou algum solucionador SAT / SMT para resolver um problema, pode realmente amar a capacidade não determinística dos solucionadores. Ou seja, em vez de dizer ao computador como fazer algo, você diz o que deseja , ou seja. quais propriedades você deseja que a saída tenha, e um solucionador SAT / SMT em um "preenchimento" não determinístico, sem incomodá-lo com os detalhes da implementação. Esse tipo de paradigma de programação é muito atraente e é chamado de programação de restrições e, para ser executado, ele deve usar um solucionador de restrições (que pode usar um solucionador SAT / SMT no back-end, dependendo dos tipos e restrições que ele permite usar) .

Mas vejo pessoas chamando Z3 de provador de teoremas. Portanto, não sei como desmentir esses termos.

O AFAIK, Z3 é um conjunto de muitas ferramentas, incluindo um solucionador SMT, várias linguagens de verificação de modelo / prova de teoremas e muito mais.

E qual é o termo mais geral para todos eles?

Penso que a generalização do problema da satisfação é a Teoria do Módulo de Satisfação e, portanto, o "solucionador SMT" seria o mais geral de todos. No entanto, nem todas as implementações reais de solucionadores de SMT resolvem todas as teorias, portanto, isso não significa que todos os solucionadores de SMT sejam igualmente gerais.

Realz Slaw
fonte
1
Obrigado pela sua resposta. Mas não acho que o SMT solver seja o termo mais geral. Como as pessoas costumam comparar o solucionador SMT x o solucionador de restrições, consulte, por exemplo, stackoverflow.com/questions/10584990/…
qsp
@ qsp Posso estar errado, mas não tenho certeza de como essa comparação implica isso. De qualquer forma, simplesmente não tenho conhecimento suficiente para saber se o CSP é de alguma forma mais poderoso / geral do que todo o SMT; se você encontrar uma referência para isso, fique à vontade para editar a resposta.
Realz Slaw