Prova de uso assistente na pesquisa da teoria da complexidade?

14

Considerando os tópicos abordados em uma conferência como a STOC, existem pesquisadores de algoritmo ou complexidade usando ativamente o COQ ou Isabelle? Se sim, como eles estão usando isso em suas pesquisas? Suponho que a maioria das pessoas não usaria essas ferramentas porque as provas seriam de nível muito baixo. Alguém está usando esses assistentes de prova de uma maneira crítica para sua pesquisa, em vez de um bom complemento?

Estou interessado porque posso começar a aprender uma dessas ferramentas e seria divertido aprender sobre elas no contexto de provas de reduções, correção ou tempo de execução.

nish2575
fonte
1
Deseja excluir a "Teoria B" e, em particular, a teoria das linguagens de programação? O meu entendimento é que os assistentes de prova se acostumar com muito mais freqüência no PL ...
Joshua Grochow
1
Olhei para o termo, eu acho que eu estou focado em aplicações dentro "Teoria A"
nish2575
1
Até onde eu sei, a maior parte da Teoria A está na mesma categoria que a maioria do restante da matemática: poucas fundações foram adicionadas até agora a esses sistemas, portanto, os teoremas mais interessantes precisariam de um esforço significativo para desenvolver primeiro o infraestrutura para implementar as definições necessárias. Existem alguns trechos interessantes da teoria dos autômatos que foram formalizados, de modo que pode ser um lugar para procurar.
András Salamon
1
Os resultados na teoria da complexidade tendem a ser comprováveis ​​em sistemas muito mais fracos, normalmente você nem precisa de PA. Coq e Isabeller não são muito adequados para a teoria da complexidade, eu diria. Existem esboços de prova quase formais como os do livro de Cook e Nguyen, mas o principal interesse é prová-los em um sistema de provas relacionado a classes de complexidade. Por que alguém gostaria de prová-los em, digamos, Switching Lemma in Coq, quando pode ser provado em sistemas muito mais fracos?
Kaveh 25/05
2
@Kaveh A fraqueza / força de vários sistemas de prova não é um problema: queremos formalmente verificar as provas na teoria da complexidade pelo mesmo motivo que gostaríamos de verificar programas: ter graus mais altos de confiabilidade. Além disso, também é um desafio interessante estender a teoria dos provadores para que eles possam lidar com as provas da teoria da complexidade de maneira mais conveniente.
Martin Berger

Respostas:

15

Uma regra geral é que, quanto mais abstrata / exótica for a matemática que você deseja mecanizar, mais fácil será. Por outro lado, quanto mais concreta / familiar for a matemática, mais difícil será. Portanto (por exemplo) animais raros, como topologia sem pontos predicativos, são muito mais fáceis de mecanizar do que a topologia métrica comum.

Inicialmente, isso pode parecer um pouco surpreendente, mas isso ocorre basicamente porque objetos concretos, como números reais, participam de uma variedade selvagem de estruturas algébricas, e as provas que os envolvem podem fazer uso de qualquer propriedade de qualquer visualização delas. Portanto, para poder entender o raciocínio comum a que os matemáticos estão acostumados, é necessário mecanizar todas essas coisas. Por outro lado, construções altamente abstratas têm um conjunto (deliberadamente) pequeno e restrito de propriedades; portanto, você precisa mecanizar muito menos antes de obter os bons bits.

Provas na teoria da complexidade e algoritmos / estruturas de dados tendem (via regra) a usar propriedades sofisticadas de dispositivos simples como números, árvores ou listas. Por exemplo, argumentos combinatórios, probabilísticos e teóricos dos números rotineiramente aparecem todos ao mesmo tempo em teoremas da teoria da complexidade. Obter suporte à biblioteca assistente de provas até o ponto em que isso é bom de fazer é bastante trabalho!

Um contexto em que as pessoas estão dispostas a colocar o trabalho é em algoritmos criptográficos. Existem restrições algorítmicas muito sutis por razões matemáticas complexas e, como o código criptográfico é executado em um ambiente adversário, até o menor erro pode ser desastroso. Por exemplo, o projeto Certicrypt construiu muita infraestrutura de verificação com o objetivo de criar provas verificadas por máquina da exatidão dos algoritmos criptográficos.

Neel Krishnaswami
fonte
6

Um exemplo muito importante é a formalização de Gonthiers Coq do teorema das 4 cores em Coq, que utiliza muita combinação.

Meu colega Uli Schöpp usou a biblioteca ssreflect desenvolvida por Gonthier para esse fim, a fim de verificar (e estender um pouco) também no Coq um resultado de Cook e Rackoff em autômatos gráficos. https://scholar.google.at/scholar?oi=bibs&cluster=4944920843669159892&btnI=1&hl=de (Schöpp, U. (2008). Um limite inferior formalizado para a acessibilidade de gráficos não direcionados. Em lógica para programação, inteligência artificial e raciocínio 621-635). Springer Berlin / Heidelberg.)

Martin Hofmann
fonte