Coq

Un sistema de gestión de pruebas formal gratuito
Descargar ahora

Coq Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • The Coq Development Team
  • Sitio web del editor:
  • http://coq.inria.fr/coq-eng.html
  • Sistemas operativos:
  • Mac OS X
  • Tamaño del archivo:
  • 3.4 MB

Coq Etiquetas


Coq Descripción

Un sistema de gestión formal gratuito. Una prueba realizada con CoQ está controlada mecánicamente por la máquina. En particular, COQ permite: · definir funciones o predicados, · Establecer teoremas y especificaciones de software matemáticas, · Desarrollar pruebas formales interactivamente de estos teoremas, · Para verificar estas pruebas por una certificación relativamente pequeña "Kernel" .COQ también integra una Idioma funcional de la programación: · Las funciones y los predicados se pueden evaluar de manera eficiente, · Un sistema de desarrollo modular permite la reutilización de las teorías, · Los programas certificados se pueden extraer automáticamente a los idiomas como el objetivo de CAML, Haskell o Scheme.coq se basa en un marco llamado "Cálculo de construcciones inductivas "que es una lógica y un lenguaje de programación funcional. Como un sistema de desarrollo de pruebas, COQ proporciona métodos de prueba interactivos y diversas decisiones certificadas y algoritmos semisímeros. CoQ proporciona un protocolo para conectarse con el sistema de álgebra de computadora externa o el THEOREM ProVers.As una plataforma para la formalización de las matemáticas, COQ proporciona soporte para notaciones de luz y contenidos implícitos. También proporciona algún apoyo para el razonamiento sobre estructuras algebraicas. CoQ está disponible para UNIX (incluyendo Mac OS X) y Windows 95/98 / NT / XP / VISTA SYSTEMS.NOTA: COQ está desarrollado, con licencia y proporcionada bajo la Licencia Pública General de GNU menor. Requisitos: · Objetivo Caml · GNU HACE ¿Qué hay de nuevo en este lanzamiento: Idioma: · Si un punto fijo no está escrito con un {struct ... structure ...}, entonces todos los argumentos se intentan sucesivamente (de izquierda a derecha) hasta que se encuentre uno que satisfaga la condición de disminución estructural. · Nuevo sistema de tipslass experimental que proporciona polimorfismo ad-hoc y sobrecarga basado en registros dependientes y argumentos implícitos. · Nueva sintaxis "Lámina" Pat: = B en C "para la encuadernación de PIEJOS utilizando patrones irrefutables. · Nueva sintaxis "Forlall {a}, t" para especificar los argumentos implícitos insertados a máxim3 en términos. · Tipo de registro / estructura, incumplimientos inductivos y coinductivos para ingresar si se omite. · Soporte para las cláusulas de notación "donde" opcional para los campos de registro. · (CO) Los tipos inductivos se pueden definir como registros (por ejemplo, "flujo coinductor: = {HD: NAT; TL: STREAM}") · Nueva sintaxis "Theorem ID1: T1 ... con IDN: TN" para demostrar declaraciones mutuamente dependientes. · Soporte para el polimorfismo de tipo en constantes que denotan tipos inductivos. · Varias evoluciones del sistema de módulos (manejo de alias de módulos, tipos de módulos functiosos, una característica de inclusión, etc.). · Apoye ahora un subtipo de conjunto (formas predicativas y impreciativas). · Los tipos inductivos recursivos en el apoyo con un constructor único de los cuales todos los argumentos están en el PROP ahora se considera un tipo de singleton. En consecuencia, es compatible con todas las eliminaciones a prop, set y tipo. Como consecuencia, ACC_RECT tiene ahora una prueba más directa ", y "- ", para la estrategia de reducción "Compute" / "CBV", lo que significa respectivamente reducir solo, o todo, pero las constantes ID1 ... IDN. "Lazy" solo o seguido de "", y "- " también admitido, lo que significa que se aplique todo Beta-iota-Zeta-Delta, posiblemente restringiendo Delta. · Nuevo comando "estrategia" para controlar la expansión de las constantes durante las pruebas de conversión. Generaliza los comandos opacos y transparentes al introducir un rango de niveles. Los niveles más bajos se asignan a las constantes que deben ampliarse primero. · Nuevas opciones globales y locales para opacar y transparentes. · Nuevo comando "Imprimir supuestos" para mostrar todas las variables, parámetros o axioms, un teorema o definición se basa en. · "Agregar grabado de grabación" ahora proporciona referencias a las bibliotecas utilizando nombres parcialmente calificados (esto tiene también para la opción COQTOP / COQC). · Searchomo Soporta criterios de búsqueda negados, referencia a objetos lógicos por su notación, y más generalmente búsqueda de subtermentos. · "Declare ML Módulo" ahora permite importar archivos .cmxs cuando Coq se compila en código nativo con una versión de OCAML que admite DynLink nativo (> = 3.11). · Nuevo comando "Crear nombre HINTDB " para declarar explícitamente una nueva base de datos de sugerencias y opcionalmente enciende una implementación neta de discriminación para indexar todos los lemmas en la base de datos. · Nuevos comandos "Sugerencia transparente" y "Sugerencia opaque" para establecer el estado de despliegue de las definiciones utilizadas por Auto. Esta información se toma en cuenta por la red de discriminación y el algoritmo de la Unificación. · "Sugerencia externa" ahora toma un patrón opcional y aplica la táctica dada todo el tiempo si no se da ningún patrón. · Restricciones de clasificación específicas en el registro ahora tomadas en cuenta. · "Imprimir LoadPath" admite un argumento de ruta para filtrar la pantalla. Bibliotecas: · Varias partes de las bibliotecas están ahora en tipo, en particular, FSETS, SECOIDLIST, LISTSET, Clasificación, Zmisc. Esto puede inducir algunas incompatibilidades. En caso de problemas, al solucionar el desarrollo existente, puede ayudar a simplemente declararse establecido como un alias para el tipo (consulte el archivo de configuración del archivo). · Nueva biblioteca aritmética en teorías / números. Contiene: * Un desarrollo modular abstracto de aritmélicos naturales y enteros en números / natural / abstracto y números / entero / abstracto * Una implementación de enteros electrónicos eficientes limitados y sin límites que se pueden asignar a los aritméticos nativos del procesador. Vea los números / Ciclícate / INT31 para enteros y números de 31 bits / Natural / Bign para los números y números naturales ilimitados / números / entero / BIGZ para enteros ilimitados. * Algunas pruebas de que las bibliotecas más antiguas ARITH, Zarith y Narith y Newer Bign y BIGZ implementan el desarrollo modular abstracto. Esto permite, en particular, Bign y BIGZ ya vienen con una gran base de datos de lemas básicos y algunas tácticas genéricas (anillo), esta biblioteca aún tiene un estado experimental, así como el mecanismo de aceleración del procesador, pero tanto su resumen como sus partes concretas. Ya son bastante utilizables y podrían desafiar el uso de NAT, N y Z en los desarrollos reales. Además, una extensión de este marco a números racionales está en curso, y ya se proporciona una estructura Q eficiente (ver Números / Racional / Bigq), pero esta parte está actualmente incompleta (sin capa abstracta y lemmas genéricos). · Muchos cambios en FSET / FMAP. En la práctica, la compatibilidad con la versión anterior debe ser bastante buena, pero pueden requerirse algunas adaptaciones. * Las interfaces de los conjuntos desordenados ("débiles") y se han factorizado factorizados gracias a las nuevas características de los módulos de CoQ (en particular, incluyen), consulte FSETIERFACE. Lo mismo para los mapas. Las sugerencias en estas interfaces se han vuelto a trabajar (ahora se colocan en una base de datos "Set"). * Para permitir un subtipos completos entre conjuntos débiles y pedidos, se ha agregado un campo "EQ_DEC" a PEDIDOEDTYPE. La versión anterior de OrderedType ahora se llama MiniorderDType y Functor MOT_TO_OT permite convertir a la nueva versión. Las interfaces y las implementaciones de los conjuntos ahora contienen también un campo "EQ_DEC". * FSETDECIDE, Contribución de Aaron Bohannon, contiene un procedimiento de decisión que permite resolver los objetivos básicos relacionados con los establecidos (por ejemplo, ¿es un punto en un conjunto particular?). Ver FSETRPERTIES PARA EJEMPLOS. * Se han mejorado los fuentes de propiedades, especialmente los de los mapas, que ahora proponen algunos principios de inducción. Algunas propiedades del pliegue necesitan menos hipótesis. * Más uniformidad en las implementaciones de conjuntos y mapas: todos usan argumentos implícitos, y ya no exportan los ámbitos innecesarios (consulte el error # 1347) * Las partes internas de las implementaciones basadas en AVL han evolucionado mucho. Los archivos principales FSETAVL y FMAVLL son ahora mucho más ligeros ahora. En particular, los cambios menores en algunas funciones han permitido separar completamente las pruebas de corrección operativa de las pruebas de equilibrio: el equilibrio del bien es fundamental para la eficiencia, pero no más para demostrar que estos árboles implementan nuestras interfaces, por lo tanto nos hemos movido Estas pruebas en los archivos del apéndice FSETFULLAVL y FMAPFULLAVL. Además, se han modificado algunas funciones como la unión y comparación para ser estructurales pero eficientes. Los archivos del apéndice también contienen versiones alternativas de estas pocas funciones, mucho más cerca del código de OCAML inicial y se escribe a través del marco de la función. · Internacional de la biblioteca, subsumida por FSET / FMAP, se ha eliminado de la Biblioteca estándar de CoQ y se trasladó a una contribución del usuario Cachan / Intmap · Mejor comportamiento computacional de algunas constantes (EQ_NAT_DEC y Le_LT_DEC más eficiente, Z_LT_LE_DEC y positive_AS_OT.COMPARE transparente, ...) (fuente excepcional de incompatibilidades). · Los operadores booleanos se movieron del módulo BOOL a los tipos de datos del módulo (pueden necesitar cambiar el nombre de referencias calificadas en la guión y las notaciones de fuerza || y estar en los niveles 50 y 40 respectivamente). · Los constructores XI y XO de tipo positivo ahora tienen notaciones de postfix "~ 1" y "~ 0", lo que permite escribir números en forma binaria fácilmente, por ejemplo, 6 ~ 1 ~ 0 y 4 * p es p ~ 0 ~ 0 (ver binpos.v). · Mejoras a Narith (Nminus, Nmin, Nmax), y a Qarith (en particular, una mejor función de potencia). · Cambios en Zarith: varios lemmas adicionales (utilizados en teorías / números), especialmente en ZDIV, Znumtheory, ZPower. Además, muchos resultados en ZDIV han sido generalizados: el divisor puede simplemente no ser nulo en lugar de ser estrictamente positivo (consulte Lemmas con el final de nombre "_Full"). Un archivo alternativo Zodiv propone un comportamiento diferente (el de OCAML) al dividir por números negativos. · Cambios en ARITH: EQNAT y WF_NAT ahora exportados desde ARITH, se encuentran algunas construcciones en NAT que estaban fuera de ARITH ahora están en (por ejemplo, ITER_NAT). · En Setoidlist, Eqlista ahora expresa que dos listas tienen elementos similares en la misma posición, mientras que el predicado previamente llamado EQLISTA es ahora Equivlista (este solo afirma que las listas contienen los mismos elementos, nada más). · CAMBIOS EN REALS: * La mayoría de las afirmaciones en "SIGT" (incluido el axioma de integridad) ahora están en "SIG" (en caso de incompatibilidad, use Proj1_SIG en lugar de ProjT1, SIG en lugar de SIGT, ​​etc.). * Esquema de nombres más uniformes (identificadores en francés se trasladó al inglés, uso consistente de 0 -zero -instead de o -letter O -, etc.). * LEMMA EN PROD_F_SO ESTÁ AHORA EN PROD_F_R0. * La hipótesis inútil de LN_EXISTS1 se cayó. * NUEVO RLOGIC.V establece algunas propiedades lógicas sobre los axiomas R. * Rineq.V extendido y hecho más limpio. · Una ligera reestructuración de la biblioteca lógica con respecto a la elección y la lógica clásica. Adición de archivos que proporcionan axiomatizaciones intuitionarias de descripciones: epsilon.v, descripción.v e indefinityescription.v. · Definición de PRET y menos compatibles con el criterio decreciente estructural para su uso en puntos fijos. · Archivos Relaciones / Rstar.v y Relaciones / Newman.v trasladaron al depósito de la contribución del usuario (CoC_History contribución). Nueva lemas sobre el cierre transitivo añadido y algunas variables ligadas renombrados (riesgo excepcional de incompatibilidades). Notaciones, coacciones, argumentos implícitos y el tipo de inferencia: · Más automatización en la inferencia de la cláusula de retorno de los problemas de patrones de coincidencia dependientes. · Asignación Experimental de la omisión de las cláusulas fácilmente detectables como imposible en problemas de coincidencia de patrones. · Mejora de la inferencia de los argumentos implícitos, que ahora trabaja declaraciones de registro en el interior. · Las nuevas opciones "conjunto máximo de inserción implícito", "patrón del sistema reversible implícito", "Conjunto Muy en estricto implícito" y "Set impresión implícito defensiva" para el control de la inferencia y la utilización de argumentos implícitos. · Nuevo modificador en "Argumentos implícito" para forzar un argumento implícito que se inserta al máximo. · Las nuevas opciones globales y locales a "argumentos implícitos" para sobrevivir a la sección o módulo no fuera exportación. · Nivel "constr" pasado de 9 a 8. · Estructura / Iniciar grabación impreso como Record (a menos que la opción de impresión Todo está listo). · Soporte para notaciones los parámetros que definen constantes. · La inserción de coacciones siguientes tipos de productos se abstiene a constantes de desplegado (posible fuente de incompatibilidad). · El nuevo soporte para fijar / cofix en anotaciones. Idioma de táctica: · Segundo Orden de coincidencia de patrones que ahora trabaja en las cláusulas LTAC "match" (sintaxis para la variable unificación de segundo orden es "@? X"). · Soporte para la coincidencia de fijaciones permiten la entrada de contexto partido usando la sintaxis "H: = cuerpo" o "H: = cuerpo: Tipo". · (? X? Y) patrones coinciden ahora con cualquier aplicación en lugar de sólo las aplicaciones unarios (posible fuente de incompatibilidad). · LTAC acepta número entero argumentos (sintaxis es "LTAC: nnn" para nnn un número entero). · La secuencia general táctico "expr_0; " se extiende de manera que a lo sumo un expr_i puede tener la forma "expr .." o simplemente "..". Además, n puede ser diferente del número de sub-objetivos generados por expr_0. En este caso, el valor de expr (o idtac en caso de que sólo "..") se aplica a los sub-objetivos intermedios para que el número de tácticas igual al número de sub-objetivos. · Nombre A utilizado como el nombre del parámetro de un lema (como f en "aplicar f_equal con (f: = t)") se interpreta ahora como una variable LTAC si existe una variable tal (esto es una posible fuente de incompatibilidad y que puede ser fijado por el cambio de nombre de las variables de una función LTAC en nombres que no chocan con los nombres de los parámetros lemas utilizados en la táctica). · Nueva sintaxis "tac LTAC :: = ..." para volver a enlazar una táctica para una nueva expresión. · "Dejar que rec ... en ..." ahora con el apoyo de las expresiones sin parámetros explícitos; interpretación es perezoso para el contrario de "dejar ... en ..."; por lo tanto, la palabra clave "rec" se puede utilizar para convertir el argumento de un "dejar ... en ..." en un perezoso. · Patrones para los tipos de hipótesis en "gol del partido" se interpretan ahora en type_scope. · Una variable ligada cuyo nombre no se utiliza en otros lugares ahora sirve como metavariable en "partido" y que se crea una instancia por un identificador (por ejemplo, permiten para extraer el nombre de una declaración como "existe x, P x"). · Nueva impresión de LTAC de rastreo de llamadas para una mejor depuración. · El C-zar (anteriormente conocido como declarativa) lengua prueba está debidamente documentado. Táctica: · Las nuevas tácticas "Aplicar -> término", "aplicar plazo en Ident", "aplicar", "++>" y "==>" están ahora anotaciones asociativas derecho declarado en el nivel 55 en signature_scope alcance. Su introducción puede romper los scripts existentes que les definen como anotaciones con diferentes niveles. Uno puede utilizar ] para indicar que no debería ser desplegada durante unificación para la resolución de morfismo, por defecto todas las constantes son transparentes. · Los setoid_rewrite [] 's semántica cambian cuando la reescritura con un lema: se puede volver a escribir dos instancias diferentes del lema de una sola vez. Uso para (casi) la semántica habituales. También tratarán de volver a escribir bajo ligantes ahora, y puede tener éxito en diferentes términos que antes. En particular, se unificará bajo variables de let-atado. Cuando se llama a través , la semántica es, aunque sin cambios. · tiene una semántica diferente cuando se utiliza con morfismo paramétrica: se tratará de encontrar una relación de los parámetros también. El comportamiento también ha cambiado con respecto a las relaciones defecto: se utiliza el Setoid / Relación más recientemente declarada, la documentación se explica cómo personalizar este comportamiento. · La relación paramétrica y el morfismo se declaran de manera diferente, utilizando los nuevos comandos , documentados en el manual. · Setoid_Theory ahora es un alias para la equivalencia, los scripts construyen objetos de tipo setoid_theory necesitan desplegar (o ) las definiciones de reflexivo, simétrico y transitivo para obtener los mismos objetivos que antes. Los scripts que introducidos variables explícitamente no se romperán. · El orden de los subeglatos al realizar con las condiciones laterales es siempre la misma: primero la nueva meta, luego las condiciones. · Nuevas clases de módulos de la biblioteca estándar. Los morfismos declaran morfismos estándar en las relaciones RAP / SYM / TRANS. Clases.morphisms_prop declara morfismos en conectivos proposicionales y clases.Morphisms_Relations en conectivos de predicado generalizado. Clases.equivalence Declara las notaciones y tácticas relacionadas con las equivalencias y clases. LaSsoidTácticas define las tácticas de setoid_replace y algunos soportes para la interfaz "Agregar *", especialmente la táctica aplicada automáticamente antes de cada prueba "Agregar morfismo". · Se admiten las subrelaciones definidas por el usuario, así como los morfismos de orden superior y la reescritura en virtud de carpetas. La táctica también es extensible totalmente en LTAC. La documentación se ha actualizado para cubrir estas características. · y Ahora admite el modificador para seleccionar las apariciones para reescribir, y tanto usar el código , incluso cuando se reescribe con la igualdad de leibniz si se especifican las ocurrencias. Extracción: · Comportamiento mejorado de la extracción de módulos de Caml: los enfrentamientos de nombres ya no deben suceder. · El extracto de comando Inductivo tiene ahora una sintaxis para notaciones de infijo. Esto permite que, en particular, mapee listas de CoQ y pares en Caml Ones: Extrae la lista inductiva => Lista " "(:: :)"]. Extraer productos inductivos => "(*)" ". · En las coincidencias de patrones, un patrón predeterminado "| _ -> ..." ahora se usa siempre que sea posible si varias sucursales son idénticas. Por ejemplo, las funciones correspondientes a la decidibilidad de las igualdades son ahora lineales en lugar de cuadráticas. · Una nueva instrucción de extracción negra ID1 .. idn permite evitar la mezcla de nombre de archivo con código existente, por ejemplo, al extraer la lista de módulos a OCAML. Coqide: · La fuente de coqide se predija la monoespacio para que la sangría sea significativa. · El coqide apoya los objetivos anidados y cualquier otro tipo de declaración en medio de una prueba. · Deshacer los comandos no tácticos en coqide funciona más rápido. · Nuevo menú de coqide para activar la visualización de diversas informaciones implícitas. · Se agregó la posibilidad de elegir la ubicación de las pestañas en coqide: (en edición-> preferencias-> misc) · Nuevo Abrir y guardar como diálogos en coqide que filtra los archivos * .v. Instrumentos: · Nuevo verificador de archivos "COQCHK". · Opción de COQTOP / COQC ANTENDED -I-II para especificar un dir lógico: "-i dir -as coqdir". · Nueva opción COQTOP / COQC -Exclude-dir para excluir a los Subdirs para la opción -R. · El "analizador" binario ha sido renombrado a "CoQ-analizador". · Coqdoc · Mejora de la coqdoc y el vertedero de la información de la globalización para dar más información sobre los identificadores. Todas las categorías de definiciones de CoQ son compatibles, lo que hace que la composición sea trivial en la documentación generada. · Una opción "- TIERPOLATE" permite usar la información de tipografía de la parte tipogremediada del archivo a los identificadores tipográficos que aparecen en las escapes de CoQ dentro de la documentación. · Mejor manejo de la opción UTF8 ("-UTF8") y el respeto de los espacios en la fuente. · Soporte para desarrollos de hipervínculos e indexación en la salida TEX. · Nueva opción "Color" del archivo de estilo coqdoc para prestar identificadores utilizando colores. · Macros adicionales en el TEX OUPUT, lo que permite personalizar la sangría y el tamaño de las líneas vacías. Nuevo entorno "Coqduelo" para el código CoQ. Diverso: · La instalación de CoQ proporciona suficientes archivos para que las extensiones de OCAML no necesiten que las fuentes CoQ se compilen (esto asume O'CAML 3.10 y CAMLP5). · Nuevos comandos "Set Whelp Server" y "set whelp getter" para personalizar la herramienta de búsqueda de WHELP. · Sintaxis de "impresión de prueba, se deje refrescar" y "impresión de prueba si se cambia" se modificó en "Impresión de pruebas de alquiler Ref" y "Prueba de impresión si para ref". · Un sistema de construcción revisado (nuevos makes); Ver dev / doc / build-system.txt. · Añadir la opción -Browser para configurar script. · Construya una biblioteca compartida para la parte C de CoQ, y úsela de forma predeterminada en sistemas no (Windows o MacOS). Los ejecutables de Bytecode son ahora puros. El comportamiento es configurable con -COQRUNBYTEFLAGS, -COQTOOLSBYTEFLAGS y -Custom Configure las opciones. · Las pruebas de complejidad pueden ser


Coq Software relacionado

Fid.gen

Generador fiducial flexible para proyectos basados en reactivisión ...

291 46 KB

Descargar

Júpiter

Abra el entorno de verificación de hardware VeriLog para la plataforma Java ...

200 1.7 MB

Descargar