Como as 'táticas' funcionam nos assistentes de prova?
Suspeito que esta resposta seja um pouco desmedida.
Primeiro, não basta perguntar "como as táticas funcionam em assistentes de prova" porque elas funcionam de maneira diferente em diferentes assistentes de prova. Atualmente, existem duas classes principais de assistentes usadas: as derivadas da LCF original, como Isabelle, HOL e HOL light, e assistentes de prova baseados em teoria de tipos, como Coq e Matita. Nessas duas classes diferentes de assistente de prova, as táticas funcionam de maneiras diferentes, uma reflexão de que o que está acontecendo sob o capô em Isabelle é bastante diferente do que está acontecendo sob o capô em Matita.
Pergunte a si mesmo: o que está acontecendo quando tentamos provar uma proposição P em Matita? Introduzimos um X metavariável com o tipo P. Em seguida, jogamos um jogo, por assim dizer, onde refinamos o X, adicionando cada vez mais estrutura ao termo incompleto, até obtermos um termo lambda completo (ou seja, não contém mais metavariáveis). Uma vez que estamos na posse de um termo lambda completo, digitamos check em relação a P, certificando-se de que ele habita o tipo necessário. Vimos então que, em Coq e Matita, uma tática é meramente uma função de termos de prova incompletos a termos de prova incompletos, o que, esperançosamente, adiciona um pouco de estrutura ao termo após a aplicação (essa observação motivou bastante trabalho recente de, por exemplo, Jojgov , Pientka e outros).
Por exemplo, a tática Matita "introdução" introduz uma abstração lambda sobre o termo existente, "cases" introduz uma expressão de correspondência no termo e "apply" introduz uma aplicação de um termo no outro. Essas táticas básicas podem ser combinadas, usando funções de ordem superior, para criar outras mais complexas. A idéia básica é sempre a mesma: uma tática sempre visa adicionar um pouco de estrutura a um termo de prova incompleto.
Observe que os implementadores visam devolver um termo que verifica novamente após cada aplicação tática. Estritamente falando, não há exigência de que o façam, pois tudo o que importa para os assistentes de prova baseados na teoria de tipos é que, quando o usuário acessa Qed a prova, temos um termo de prova que habita a proposição P. Como chegou a este termo de prova é em grande parte irrelevante. No entanto, Coq e Matita pretendem devolver ao usuário um termo de prova (possivelmente incompleto) que verifica após cada aplicação tática. No entanto, esse invariável pode (e geralmente falha), especialmente em relação às duas verificações sintáticas que os assistentes de prova baseados em CIC devem implementar.
Em particular, podemos realizar o que parece ser uma prova válida, aplicando uma série de táticas até que não haja mais objetivos em aberto. Chegamos então a Qed a suposta prova, apenas para descobrir que o verificador de terminação de Matita, ou seu verificador estrito de positividade, reclama, pois o termo de prova que foi gerado pelas táticas invalidou uma dessas verificações sintáticas (ou seja, uma metavariável na posição de argumento). uma chamada recursiva foi instanciada com um termo que não é sintaticamente menor que o argumento original). Esta é uma reflexão de que a teoria do tipo CIC não é, de certo modo, "suficientemente forte" e não reflete os requisitos sintáticos de positividade ou tamanho em seus tipos (uma observação que motiva os tipos de tamanho de Abel e algum trabalho recente sobre tipos de positividade )
Por outro lado, os assistentes à prova de LCF são bastante diferentes. Aqui, o kernel consiste em um módulo (geralmente implementado em uma variante do ML), contendo um tipo abstrato "thm" e funções que implementam as regras de inferência da lógica do assistente de prova, mapeando "thm" para "thm", e assim adiante. Contamos com a disciplina de digitação do ML para garantir que a única maneira de construir um valor do tipo "thm" seja por meio dessas regras de inferência (táticas básicas). O núcleo de Isabelle está aqui .
As provas consistem, então, em uma série de aplicações dessas táticas básicas (ou táticas maiores e mais complexas, que são feitas novamente juntando táticas mais simples usando funções de ordem superior --- em Isabelle, as funções de ordem superior, chamadas táticas, podem ser visto aqui ). Ao contrário dos assistentes de prova baseados na teoria de tipos, não há necessidade de um assistente no estilo LCF manter uma testemunha explícita de termo de prova por aí. A correção da prova é garantida pela construção e nossa confiança na disciplina de digitação da ML (muitos assistentes, por exemplo, Isabelle, no entanto, geram termos de prova para suas provas).