ScholarGate
Assistente

Verificação Formal e Assistentes de Prova

A verificação formal estabelece, por meio de prova matemática verificada por máquina, que o software atende à sua especificação; assistentes de prova são as ferramentas que constroem e verificam tais provas.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Verificação formal é a construção de uma prova rigorosa, verificada por máquina, de que um sistema satisfaz uma especificação formal, e um assistente de prova é um software que ajuda um usuário a desenvolver tais provas e verifica mecanicamente sua validade.

Scope

Este tópico abrange a verificação dedutiva e a prova de teoremas interativa: assistentes de prova baseados em teoria de tipos ou lógica de ordem superior (como Coq, Isabelle, Lean e Agda), a abordagem LCF para prova confiável, o fundamento de proposições-como-tipos, automação de prova e táticas, e artefatos verificados marcantes, incluindo compiladores e kernels de sistemas operacionais.

Core questions

  • Como a correção funcional completa pode ser provada e verificada por máquina?
  • Por que os assistentes de prova são confiáveis e qual é a base de computação confiável?
  • Como a correspondência de Curry-Howard conecta provas e programas?
  • O que é preciso para verificar sistemas reais como compiladores e kernels?

Key theories

Abordagem LCF para prova confiável
O Edinburgh LCF de Gordon, Milner e Wadsworth introduziu um pequeno kernel de prova confiável através do qual todos os teoremas devem passar, de modo que mesmo a automação complexa não pode produzir provas inconsistentes.
Compilador verificado (CompCert)
O CompCert de Leroy é um compilador C provado correto em um assistente de prova, com um teorema verificado por máquina de que o código gerado refina a semântica do programa fonte.
Kernel de sistema operacional verificado (seL4)
Klein e colegas produziram uma prova verificada por máquina de correção funcional para o microkernel seL4, demonstrando a verificação de ponta a ponta de software de sistemas de baixo nível.

Clinical relevance

A verificação mecanizada oferece a mais alta garantia disponível para software crítico, produzindo compiladores, kernels e bibliotecas criptográficas com garantias comprovadas, em vez de confiança baseada em testes. Assistentes de prova também são cada vez mais usados para formalizar a própria matemática.

History

A prova de teoremas interativa começou com o Edinburgh LCF na década de 1970, cuja metalinguagem ML e kernel confiável moldaram sistemas posteriores. Assistentes baseados em teoria de tipos, como Coq e Agda, e sistemas de lógica de ordem superior, como Isabelle/HOL, amadureceram nas décadas seguintes, culminando em artefatos verificados marcantes: o compilador CompCert (2009) e o kernel seL4 (2009).

Debates

Custo da verificação versus garantia obtida
A construção de provas verificadas por máquina de grandes sistemas exige um esforço enorme, o que gera debate sobre onde a verificação completa se justifica versus onde métodos mais leves são suficientes, e o quanto da prova pode ser automatizado.

Key figures

  • Robin Milner
  • Michael Gordon
  • Xavier Leroy
  • Gerwin Klein
  • Robert Harper

Related topics

Seminal works

  • gordon1979
  • leroy2009
  • klein2009
  • harper2016

Frequently asked questions

O que é um assistente de prova?
Um assistente de prova é um software no qual um usuário constrói provas formais interativamente enquanto o sistema verifica mecanicamente cada etapa, de modo que uma prova concluída é confiável até um kernel pequeno e bem examinado.
Como a verificação de um programa difere de testá-lo?
Testar verifica o comportamento em entradas selecionadas e só pode revelar a presença de bugs, enquanto a verificação formal prova a correção para todas as entradas permitidas pela especificação, estabelecendo a ausência dos erros especificados.

Methods for this concept

Related concepts