Entendendo o desempenho dos solucionadores de QFBV SMT

9

Os solucionadores SMT como Z3 ou Boolector usam um conjunto complexo de heurísticas para resolver problemas. No entanto, isso também dificulta muito a previsão do desempenho de um solucionador para um determinado problema. Minha pergunta é assim:

Questão

Existe uma maneira de entender ou obter informações sobre o desempenho de um solucionador SMT para um específico na teoria dos vetores de bit sem quantificadores (QFBV)?

Isso também inclui todas as ferramentas de visualização que ajudariam a entender onde o solucionador está "preso" / não faz progresso.

Formulários

  • Entenda de antemão como diferentes codificações do mesmo problema afetam o desempenho do solucionador (o estado da arte aqui não pode ser "apenas tente algumas codificações diferentes e espero que uma seja rápida o suficiente", certo?)

  • Se um determinado problema não puder ser solucionado por um solucionador SMT devido a restrições de tempo, encontre uma maneira de expressar o problema de maneira diferente para que ele possa ser resolvido.

  • Evite perder tempo com simplificações de problemas específicos do domínio que não afetarão o desempenho do solucionador, nem mesmo afetem negativamente o desempenho do solucionador.

Pesquisa existente

Tentei encontrar pesquisas sobre esse tópico, mas não consegui encontrar muita coisa. Ainda não tenho muita experiência no campo de solucionadores de SAT / SMT, então peço desculpas se perdi alguma coisa.

  • SATzilla : prevê o solucionador com melhor desempenho com base em recursos extraídos do problema usando técnicas de aprendizado de máquina.

    Isso se aplica apenas ao SAT em vez do SMT e não explica os motivos do desempenho do solucionador.

  • Perfil de axioma Z3 Uma visualização do gráfico de instanciação Z3 e análise de loops correspondentes

    Parece que isso se concentra apenas nas teorias quantificadas.

bennofs
fonte

Respostas:

3

A resposta curta é não, não a entendemos. A resposta longa é sim, temos alguns limites, mas esses limites não são muito úteis. É bastante claro que o pior caso de execução é exponencial. Isso não ajuda muito, porque sabemos que em algumas / muitas situações práticas, parece correr rapidamente - e não sabemos o porquê.

Não sabemos por que isso é verdade para os solucionadores SAT, muito menos para QFBV. Entender por que os solucionadores de QFBV geralmente são rápidos parece pelo menos tão difícil quanto entender por que os solucionadores de SAT são rápidos, o que já está além do nosso nível atual de entendimento. Se você pesquisar mais neste site, poderá encontrar um resumo das tentativas atuais de entender o último tópico.

DW
fonte
obrigado pela sua resposta! eu já tinha, embora esse possa ser o caso. Você sabe se existe alguma pesquisa que não tente encontrar regras gerais, mas visualize o motivo do desempenho lento de um solucionador de sat / smt (ou de outra maneira ajude o usuário a entender qual parte do problema está dando e o SMT
resolvido