Apply2Isar: Automatically Converting Isabelle/HOL Apply-Style Proofs to Structured Isar

O artigo apresenta o Apply2Isar, uma ferramenta que converte automaticamente scripts de prova procedurais no estilo "apply" para provas declarativas Isar legíveis e robustas no Isabelle/HOL, validada em um conjunto de benchmarks do Archive of Formal Proofs.

Sage Binder, Hanna Lachnitt, Katherine Kosaian

Publicado Tue, 10 Ma
📖 4 min de leitura☕ Leitura rápida

Each language version is independently generated for its own context, not a direct translation.

Imagine que você está construindo uma casa. Existem duas maneiras principais de fazer isso:

  1. O Método "Aplicar" (Apply-Style): É como se você fosse um pedreiro muito rápido, mas um pouco caótico. Você pega um martelo, bate na parede, depois pega uma serra, corta uma janela, e assim por diante. O resultado é uma casa, mas se você tentar olhar para trás e entender exatamente como cada peça foi encaixada, é difícil. Se o projeto mudar (digamos, a prefeitura exige que a janela seja mais larga), você pode ter que refazer a parede inteira porque não sabe onde ela começou. É rápido para construir, mas frágil para manter.
  2. O Método "Estruturado" (Isar): É como um arquiteto que escreve um manual de instruções passo a passo. "Primeiro, construa a fundação. Depois, levante a parede norte. Em seguida, instale a janela." É mais lento de escrever, mas qualquer pessoa pode ler, entender e, se algo der errado, saber exatamente qual parafuso soltar para consertar sem derrubar a casa toda.

O Problema

No mundo da matemática e da lógica computacional (especificamente no programa chamado Isabelle/HOL), muitos matemáticos e programadores gostam do método rápido e caótico (o "Aplicar") porque permite explorar ideias rapidamente. Mas, quando eles querem salvar esse trabalho para sempre ou compartilhá-lo, o código fica ilegível e fácil de quebrar. Eles precisam transformar aquele "rabisco rápido" em um "manual de instruções" perfeito, mas fazer essa tradução manualmente é um trabalho exaustivo e chato.

A Solução: Apply2Isar

Os autores deste artigo criaram um robô chamado Apply2Isar. Pense nele como um tradutor automático de "rabiscos" para "documentos oficiais".

O Apply2Isar faz o seguinte:

  1. Você joga para ele aquele código rápido e confuso (o estilo "Aplicar").
  2. O robô "joga" o código internamente, observando cada passo que o computador dá.
  3. Ele anota o que aconteceu em cada momento.
  4. Em seguida, ele reescreve tudo do contrário (como se estivesse montando um quebra-cabeça de trás para frente) para criar um código novo, organizado e legível (o estilo "Isar").

Como funciona na prática?

Imagine que você escreveu um código que diz: "Bata aqui, corte ali, depois use a cola X".
O Apply2Isar olha para isso e diz: "Ok, para fazer isso, primeiro precisamos ter a cola X pronta. Depois, cortamos a peça Y. Finalmente, batemos na peça Z."

O resultado final é um texto que qualquer pessoa pode ler e entender a lógica, mesmo que o código original fosse um mistério.

Os Desafios (Por que não é mágica?)

O artigo explica que não é tão simples quanto um tradutor de texto comum. É como tentar traduzir um poema que foi escrito em um idioma onde a ordem das palavras muda a cada frase.

  • O problema dos "fantasmas": Às vezes, o código original usa variáveis que mudam de nome no meio do caminho. O robô precisa ter cuidado para não confundir o "João" do início com o "João" do fim.
  • O problema do "e se": Às vezes, o código original testa várias possibilidades (como tentar abrir uma porta com três chaves diferentes). O robô precisa decidir qual caminho escolher para escrever a história final, garantindo que a lógica ainda faça sentido.

O Resultado

Os autores testaram esse robô em milhares de exemplos reais (provas matemáticas complexas guardadas em um arquivo público chamado AFP).

  • Sucesso: Em cerca de 95% a 99% dos casos, o robô conseguiu transformar o código confuso em um código limpo e organizado.
  • Falhas: Em alguns casos raros, o robô travou porque o código original era tão estranho ou dependia de truques muito específicos que não têm equivalente no "idioma" organizado.

Por que isso é importante?

Pense no Apply2Isar como uma ferramenta de preservação histórica e manutenção.

  • Se um matemático escreve uma prova rápida hoje, ele pode usar o robô amanhã para transformá-la em algo que seus colegas (ou ele mesmo daqui a 10 anos) consigam entender.
  • Isso torna o conhecimento matemático mais robusto. Se algo mudar no futuro, é fácil consertar o "manual de instruções" sem ter que adivinhar como o "pedreiro rápido" fez as coisas.

Em resumo: O Apply2Isar é a ponte que permite que a velocidade da exploração rápida se una à segurança e clareza de um trabalho bem documentado, garantindo que as descobertas matemáticas do futuro não se percam em códigos ilegíveis.