Coq.

Um sistema de gerenciamento de prova formal gratuito
Baixe Agora

Coq. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • GPL
  • Preço:
  • FREE
  • Nome do editor:
  • The Coq Development Team
  • Site do editor:
  • http://coq.inria.fr/coq-eng.html
  • Sistemas operacionais:
  • Mac OS X
  • Tamanho do arquivo:
  • 3.4 MB

Coq. Tag


Coq. Descrição

Um sistema de gerenciamento prova formal livre Uma prova feito com Coq é mecanicamente controlados pela máquina. Em particular, Coq permite: · para definir funções ou predicados, · afirmar teoremas matemáticos e especificações de software, · para desenvolver provas interativamente formais destes teoremas, · Para verificar essas provas por um relativamente pequeno de certificação "núcleo" .Coq também integra uma linguagem de programação funcional: · funções e predicados pode ser avaliada de forma eficiente, · um sistema de desenvolvimento modular permite a reutilização de teorias, · programas certificados podem ser extraídas automaticamente para linguagens como Objective Caml, Haskell ou Scheme.Coq é baseada em um quadro chamado "Calculus de indutivo Construções", que é ao mesmo tempo uma lógica e um funcional language.As programação um sistema de desenvolvimento de prova, Coq fornece ambos os métodos de prova interativos e vários algoritmos de decisão certificada e semi-decisão. Coq proporciona um protocolo para a ligação com o sistema de computação algébrica externo ou provers.As teorema uma plataforma para a formalização de matemática, coq proporciona apoio para as notações de luz e conteúdos implícitos. Ele também fornece algum suporte para raciocínio em estruturas algébricas. Coq está disponível para Unix (incluindo Mac OS X) e Windows 95/98 / NT / XP / Vista systems.NOTE: Coq é desenvolvido, licenciado e fornecido sob a GNU Lesser General Public License. Requisitos: · Caml Objetivo · Gnu make. O que há de novo nesta versão: Língua: · Se um fixpoint não está escrito com um explícita {struct ...}, em seguida, todos os argumentos são experimentadas sucessivamente (da esquerda para a direita) até que seja encontrado um que satisfaça a condição diminuindo estrutural. · Novo sistema typeclass experimental dando polimorfismo ad-hoc e sobrecarga com base em registros de dependentes e argumentos implícitos. · Nova sintaxe "vamos pat: = b em c" para a utilização de padrões irrefutáveis de ligação let. · Nova sintaxe "forall {A}, T" para especificar argumentos implícitos máximo inseridos em termos. · Tipo de registro / Estrutura, indutivo e padrões CoInductive para tipo se omitido. · Suporte de opcionais "onde" cláusulas de notação para campos de registro. · (Co) tipos indutivos podem ser definidos como registos (por exemplo, "fluxo CoInductive: = {HD: nat; tl: fluxo}.") · Nova sintaxe "Teorema id1: t1 ... com IDN: tn" para provar declarações mutuamente dependentes. · Suporte para tipo-polimorfismo em constantes que denotam tipos indutivos. · Vários evoluções do módulo do sistema (manuseamento de pseudónimos de módulos, os tipos de módulos functorial, uma característica Incluir, etc). · Prop agora um subtipo de Set (predicativo e formas impredicativa). · Tipos indutivos recursiva em Prop com um único construtor de que todos os argumentos estão em Prop é agora considerado um tipo singleton. É, consequentemente, suporta todas as eliminações a Prop, Set e Tipo. Como consequência, Acc_rect tem agora uma prova mais direta . · Nova sintaxe para fazer generalização implícita em pastas e dentro termos. · Nova sintaxe provisória para introdução de objetos de registro sem mencionar o construtor {| campo: = corpo; ... |}, transformando campos em falta em buracos (compatível com refinar e Programa). comandos vernacular: · Adicionado opção Global de "Argumentos Scope" para seção de sobreviver. · Adicionado opção "Esquemas Unset Eliminação" para desativar a geração automática de sistemas de eliminação. · Modificação do comando Esquema de modo que você pode pedir o nome a ser calculado automaticamente (por exemplo Esquema de indução para nat Ordenar Set). · Novo comando "Esquema Combinada" aos princípios de indução mútua construção combinado de princípios de indução mútua existentes. · Novo comando "Programa de Igualdade" para construir uma igualdade decidable (boolean) para tipos de dados indutivos simples e uma propriedade por decisão sobre esta igualdade (por exemplo Programa de Igualdade de nat). · Adicionado opção "Definir Esquema de Igualdade" para tornar automática a declaração da igualdade boolean quando possível. · Fonte de inconsistências universo agora impresso quando a opção "Definir impressão Universos" é ativado. · Nova opção "Set Printing existenciais instâncias" para fazer a exibição de instâncias variáveis existenciais explícitas. · Suporte para a opção "", e "- ", para a estratégia de redução "compute" / "CBV", respectivamente, significa apenas reduzir, ou tudo, mas as constantes ID1 ... IDN. "Lazy" sozinho ou seguido por "", e "- " também apoiou, o que significa aplicar todos os beta-iota-zeta-delta, possivelmente restringindo delta. · Novo comando "estratégia" para controlar a expansão de constantes durante os testes de conversão. Generaliza comandos opaco e transparente, introduzindo uma gama de níveis. Os níveis mais baixos são atribuídos a constantes que devem ser expandidos primeiro. · Novas opções globais e locais para opacas e transparentes. · Novos comando "Print SuposiTS" para exibir todas as variáveis, parâmetros ou axiomas um teorema ou definição depende. · "Adicionar REC LoadPath" Agora fornece referências às bibliotecas usando nomes parcialmente qualificados (isso também é para a opção COQTOP / COQC). · Busca de pesquisa suporta os critérios de pesquisa negados, referência a objetos lógicos por sua notação e, mais geralmente, pesquisa de subterrmilhões. · "Declarar módulo ml" agora permite importar arquivos .cmxs quando o COQ é compilado no código nativo com uma versão do OCAML que suporta dynlink nativa (> = 3.11). · Novo comando "Crie o nome do HINTDB " para declarar explicitamente um novo banco de dados da dica e opcionalmente ativar uma implementação líquida de discriminação para indexar todos os lemmas no banco de dados. · Novos comandos "Dica Transparente" e "Dica opaca" para definir o status desdobramento de definições usadas pelo Auto. Esta informação é levada em conta pela rede de discriminação e pelo algoritmo de unificação. · "Dica externa" agora leva um padrão opcional e aplica a tática dada o tempo todo se nenhum padrão for dado. · Restrições específicas de classificação no registro agora levadas em conta. · "Imprimir LoadPath" suporta um argumento de caminho para filtrar o visor. Bibliotecas: · Várias partes das bibliotecas estão agora no tipo, em particular Fsets, Setoidlist, lista, classificação, ZMISC. Isso pode induzir algumas incompatibilidades. Em caso de problemas ao corrigir o desenvolvimento existente, ele pode ajudar a simplesmente declarar definido como um alias para tipo (consulte o arquivo setistype). · Nova biblioteca aritmética em teorias / números. Ele contém: * Um desenvolvimento modular abstrato de aritmética natural e inteira em números / natural / resumo e números / inteiro / abstrato * Uma implementação de inteiros limitados e sementes computacionais eficientes que podem ser mapeados para o processador nativo aritmética. Veja números / Cyclic / Int31 para inteiros e números de 31 bits / Natural / Big para números naturais não ilimitados / números / inteiro / bigz para inteiros ilimitados. * Algumas provas de ambas as bibliotecas mais antigas, Arith, Zarith e Narith e Narith Bign e Bigz implementam o desenvolvimento modular abstrato. Isso permite, em particular, o BIGN e o Bigz já vêm com um grande banco de dados de lemmas básicos e algumas táticas genéricas (anel), esta biblioteca ainda tem um status experimental, bem como o mecanismo de aceleração do processador, mas tanto seu resumo quanto suas partes de concreto já são bastante utilizáveis e podem desafiar o uso de NAT, N e Z em desenvolvimentos reais. Além disso, uma extensão deste quadro para números racionais está em andamento, e uma estrutura Q eficiente já é fornecida (veja números / racional / BigQ), mas esta parte é atualmente incompleta (sem camada abstrata e Lemmas genéricas). · Muitas mudanças em fsets / FMaps. Na prática, a compatibilidade com versão anterior deve ser bastante bom, mas pode ser necessário algumas adaptações. * Interfaces de não ordenadas conjuntos ( "fraco") e ordenados foram fatorado graças aos novos recursos de módulos Coq (em particular Incluir), consulte FSetInterface. Mesmo para mapas. Dicas na essas interfaces foram reformulados (eles já estão colocados em um banco de dados "set"). * Para permitir subtipos completa entre as séries fracos e ordenados, um campo "eq_dec" foi adicionada para OrderedType. A versão antiga do OrderedType é agora chamado MiniOrderedType e functor MOT_to_OT permitem converter para a nova versão. As interfaces e implementações de conjuntos agora conter também um campo tão "eq_dec". * FSetDecide, contribuído por Aaron Bohannon, contém um procedimento de decisão permitindo resolver objetivos básicos relacionados com o conjunto (por exemplo, é um ponto em um jogo particular?). Veja FSetProperties para exemplos. * Functores de propriedades foram melhorados, especialmente os cerca de mapas, que agora propor alguns princípios de indução. Algumas propriedades de necessidade vezes menos hipótese. * Mais uniformidade em implementações de conjuntos e mapas: Todos eles usam argumentos implícitos, e não mais exportação escopos desnecessárias (veja bug # 1347) * As peças internas das implementações baseadas em AVL evoluíram muito. Os principais arquivos FSetAVL e FMapAVL são agora muito mais leve agora. Em particular, pequenas alterações em algumas funções tem permitido para separar completamente as provas de correção operacional das provas de bem-equilíbrio: bem-equilíbrio é fundamental para a eficiência, mas não mais para provar que estas árvores implementar nossas interfaces, daí passámos essas provas em apêndice arquivos FSetFullAVL e FMapFullAVL. Além disso, algumas funções como a união e compare foram modificados de modo a ser estrutural, mas eficiente. Os arquivos apêndice também contém versões alternativas de estas poucas funções, muito mais próximo do código inicial Ocaml e escrito por meio da estrutura de funções. · Biblioteca IntMap, subsumido por fsets / FMaps, foi removido da biblioteca padrão Coq e se mudou para uma contribuição do usuário Cachan / IntMap · Melhor comportamento computacional de algumas constantes (... eq_nat_dec e le_lt_dec mais eficiente, Z_lt_le_dec e Positive_as_OT.compare transparente) (fonte excepcional de incompatibilidades). · Operadores booleanos transferida do módulo para módulo Bool tipos de dados (pode ser necessário para mudar o nome referências qualificados no script e força notações || e para ser a níveis 50 e 40, respectivamente). · Os construtores XI e XO de tipo positivo têm agora notações sufixo "~ 1" e "~ 0", permitindo aos números de gravação em forma binária facilmente, por exemplo 6 é 1 ~ 1 ~ 0 e 4 * p é p ~ 0 ~ 0 (ver BinPos.v). · Melhorias NArith (Nminus, Nmin, Nmax), e a QArith (em particular, uma melhor função de potência). · Alterações em Zarith: vários lemas adicional (utilizado em teorias / Números), especialmente em Zdiv, Znumtheory, ZPower. Além disso, muitos resultados em Zdiv foram generalizados: o divisor pode ser simplesmente não nulo em vez de estritamente positivo (ver lemas com nome terminando por "_Full"). Um arquivo alternativo ZOdiv propõe um comportamento diferente (a um dos Ocaml) quando divisão por números negativos. · Alterações em Arith: EqNat e Wf_nat agora exportados a partir Arith, algumas construções em nat que estavam fora Arith estão agora em (por exemplo iter_nat). · Em SetoidList, eqlistA agora expressa que duas listas têm elementos semelhantes na mesma posição, enquanto o predicado anteriormente chamado eqlistA é agora equivlistA (este afirma apenas que as listas contêm os mesmos elementos, nada mais). · Alterações em reais: * A maioria declaração em "sigT" (incluindo o axioma completude) estão agora em "sig" (no caso de incompatibilidade, proj1_sig uso em vez de projT1, sig em vez de sigT, etc). * Mais esquema de nomenclatura uniforme (identificadores em francês se mudou para Inglês, o uso consistente de 0 -Zero -em vez de O -Carta O -, etc). * Lema em prod_f_SO está agora em prod_f_R0. * Hipótese inútil de ln_exists1 caiu. * New Rlogic.v afirma algumas propriedades lógicas sobre axiomas R. * RIneq.v estendida e fez mais limpo. · Reestruturação ligeira da biblioteca lógica a respeito da escolha e da lógica clássica. Adição de arquivos fornecendo axiomatizações intuitionistic de descrições: Epsilon.v, Description.v e IndefiniteDescription.v. · Definição de pred e menos compatível com o critério de diminuição estrutural para uso em pontos fixos. · Relações de arquivos / rstar.v e relações / newman.v mudou para o repositório de contribuição do usuário (contribuição Coc_History). Novos Lemmas sobre fechamento transitivo adicionado e algumas variáveis ligadas renomeadas (risco excepcional de incompatibilidades). Notações, coerções, argumentos implícitos e inferência de tipo: · Mais automação na inferência da cláusula de retorno de problemas de correspondência de padrão dependente. · Subsídio experimental para omissão das cláusulas facilmente detectáveis como impossíveis em problemas de correspondência de padrões. · A melhoria da inferência de argumentos implícitos, agora trabalhando dentro de declarações de registro. · Novas opções "Definir a inserção máxima implícita", "definir padrão reversível implícito", "definido fortemente estrita" e "definir defensivo implícito" para controlar a inferência e o uso de argumentos implícitos. · Novo modificador em "argumentos implícitos" para forçar um argumento implícito a ser inserido maximamente. · Novas opções globais e locais para "argumentos implícitos" para seção sobrevivente ou não exportação externa do módulo. · Nível "Const" movido de 9 a 8. · Estrutura / registro agora impresso como registro (a menos que a impressão de opções seja definida). · Suporte para notações paramétricas definindo constantes. · A inserção de coerções abaixo dos tipos de produtos se refrões para desdobrar as constantes (possível fonte de incompatibilidade). · Novo suporte para correção / cofix em notações. Linguagem Tática: · Correspondência de padrão de segunda ordem agora trabalhando em cláusulas de "correspondência" LTAC (sintaxe para variável de unificação de segunda ordem é "@? X"). · Suporte para correspondência de ligações em contexto de correspondência usando sintaxe "h: = corpo" ou "h: = corpo: tipo". · (? X? Y) Os padrões agora correspondem a qualquer aplicativo em vez de apenas aplicativos unários (possível fonte de incompatibilidade). · LTAC aceita argumentos inteiros (sintaxe é "ltac: nnn" para nnn um inteiro). · A sequência geral tática "expr_0; " é estendida para que, no máximo, um expr_i possa ter o formulário "Expr." .. ". Além disso, N pode ser diferente do número de subgoals gerados pela Expr_0. Nesse caso, o valor do EXPR (ou IDTAC em caso de justo "..") é aplicado aos subgoals intermediários para tornar o número de táticas iguais ao número de subgoals. · Um nome usado como o nome do parâmetro de um lema (como f em "aplicar f_equal (f: = t)") agora é interpretado como uma variável LTAC se existir uma variável (esta é uma possível fonte de incompatibilidade e Ele pode ser corrigido, renomeando as variáveis de uma função LTAC em nomes que não se chocam com os nomes dos parâmetros de Lemmas usados na tática). · Nova sintaxe "LTAC TAC :: = ..." para reindar uma tática para uma nova expressão. · "Deixe isso ... em ..." agora suportado para expressões sem parâmetros explícitos; A interpretação é preguiçosa ao contrário de "deixar ... em ..."; Assim, a palavra-chave "REC" pode ser usada para transformar o argumento de uma "let ... em ..." em um preguiçoso. · Padrões para tipos de hipóteses em "Match Goal" são agora interpretados no Type_Scope. · Uma variável ligada cujo nome não é usado em outro lugar agora serve como metadrabilizado em "correspondência" e é instanciado por um identificador (permita que e. Para extrair o nome de uma declaração como "existe x, p x"). · Nova impressão do traço de chamada LTAC para melhor depuração. · O C-ZAR (anteriormente sabe como a linguagem de prova declaração) é agora devidamente documentada. Táticas: · Novas táticas "Aplicar -> Termo", "Apply Term in Ident", "Aplicar", "++>" e "==>" agora estão corretos nomes associativos declarados no nível 55 em Signature_Scope. Sua introdução pode quebrar scripts existentes que os definiram como notações com diferentes níveis. Pode-se usar ] para indicar que não deve ser desdobrado durante a Unificação para resolução do morfismo, por padrão, todas as constantes são transparentes. · A semântica altera ao reescrever com um lema: pode reescrever duas instanciações diferentes do lema de uma só vez. Use para (quase) a semântica habitual. também tentará reescrever sob ligantes agora e pode ter sucesso em termos diferentes do que antes. Em particular, não se unificará em variáveis deixadas. Quando chamado através de , a semântica não é inalterada. · Tem semântica diferente quando usado com o morfismo paramétrico: tentará encontrar uma relação nos parâmetros também. O comportamento também mudou com relação às relações padrão: o setóide / relação mais recentemente declarado será usado, a documentação explica como personalizar esse comportamento. · A relação paramétrica e o morfismo são declaradas de maneira diferente, usando os novos comandos , documentados no manual. · Setóide_Theory agora é um alias para equivalência, os scripts construindo objetos de tipo setóide_theory precisam desdobrar (ou ) as definições de reflexivo, simétrico e transitivo, a fim de obter os mesmos objetivos que antes. Scripts que introduziram variáveis explicitamente não vão quebrar. · A ordem dos subgoals ao fazer com condições laterais agora é sempre o mesmo: primeiro o novo objetivo, depois as condições. · Novas classes de módulos de biblioteca padrão.Morfismos declaram os morfismos padrão nas relações REBL / SYM / TRAS. Classes.Morphisms_prop declara morfismos em conectivos e classes proposicionais.Morfisms_relações em conectivos predicados generalizados. As classes.Equivalência declara notações e táticas relacionadas a equivalências e classes.settactics define as táticas Setoid_Replace e alguns suporte para a interface "Adicionar *", nomeadamente a tática aplicada automaticamente antes de cada prova "add morfismo". · Subrelas definidas pelo usuário são suportadas, bem como morfismos de ordem superior e reescrita sob ligantes. A tática também é extensível inteiramente no LTAC. A documentação foi atualizada para cobrir esses recursos. · e Agora suporte o modificador para selecionar ocorrências para reescrever e ambos usam o código , mesmo ao reescrever com a igualdade de Leibniz se as ocorrências forem especificadas. Extração: · Comportamento Melhorado da Extração de Módulos: Nome Clashes não deve mais acontecer. · O extrato de comando indutivo tem agora uma sintaxe para notações de infix. Isso permite, em particular, para mapear listas e pares de COQ em câmeras: extrair lista indutiva => Lista " "(:)"]. Extraia Indutive Prod => "(*)" . · Em correspondências de padrão, um padrão padrão "| _ -> ..." agora é usado sempre que possível se vários ramos forem idênticos. Por exemplo, as funções correspondentes à decidibilidade das igualdades são agora lineares em vez de quadráticas. · Uma nova extração de instruções Blacklist ID1 .. O IDN permite impedir que as conflitos do nome do arquivo com código existente, por exemplo, ao extrair a lista do módulo para o OCAML. Coqide: · Padrões de fonte de coqide para monoespace, de modo que a indentação seja significativa. · Coqide suporta metas aninhadas e qualquer outro tipo de declaração no meio de uma prova. · Desfazer comandos não-táticos em Coqide funciona mais rápido. · Novo menu de coqide para ativar a exibição de várias informações implícitas. · Adicionado a possibilidade de escolher a localização das guias em Coqide: (em edição-> Preferências-> Misc) · Novo aberto e salvar como diálogos em coqide que filtro * .v arquivos. Ferramentas: · Novo autônomo .VO arquivos verificadores "coqchk". · Opção Extended -i COQTOP / COQC para especificar um diry lógico: "-i dir -as coqdir". · Nova opção COQTOP / COQC -EXCLUDE-DIR para excluir subdirs para a opção -r. · O "analisador" binário foi renomeado para "coq-parser". · Coqdoc. · Melhor coqdoc e despejo de informações de globalização para dar mais meta-informação sobre identificadores. Todas as categorias de definições de COQ são suportadas, o que torna a tipografia trivial na documentação gerada. · Uma opção "--interpolate" permite usar informações sobre como typeChecks da parte tipoChecked do arquivo para identificadores typeset aparecendo em escape de COQ dentro da documentação. · Melhor manuseio da opção UTF8 ("--utf8") e respeito de espaços na fonte. · Suporte para evolução de hiperlink e indexação na saída TEX. · Nova opção "cor" do arquivo de estilo COQDOC para renderizar identificadores usando cores. · Macros adicionais no Tex OUPUT permitindo personalizar a indentação e o tamanho das linhas vazias. Novo ambiente "coqdoccode" para o código COQ. Diversos: · A instalação de CoQ fornece arquivos suficientes para que as extensões de OCAML não precisem as fontes de COQ a serem compiladas (isso assume O'CAML 3.10 e CAMLP5). · Novos comandos "Set Whelp Server" e "Set Whelp Getter" para personalizar a ferramenta de busca de Whelp. · Sintaxe de "Impressão de teste permita que Ref" e "Impressão de teste se a Ref" alterada em "Impressão de teste permitem para Ref" e "Impressão de teste se for para Ref". · Um sistema de construção revisado (novos makefiles); Veja dev / doc / build-system.txt. · Adicionar opção de escovação para configurar o script. · Criar uma biblioteca compartilhada para a parte C do COQ e usá-lo por padrão em sistemas não (Windows ou MacOS). Os executáveis bytecode são agora puros. O comportamento é configurável com -coqrunbyteflags, -Coqtoolsbyteflags e -custom configure opções. · Testes de complexidade podem ser


Coq. Software Relacionado

Fid.gen.

gerador fiducial flexível para projetos baseados em reativisão ...

291 46 KB

Download

Jove

Abrir o ambiente de verificação de hardware de verilog para a plataforma Java ...

200 1.7 MB

Download