Construcción Formal de Programas en Teoría de Tipos

Documentos relacionados
Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte

Ejercicios de Lógica Proposicional *

Capítulo 4. Lógica matemática. Continuar

Lógica proposicional. Ivan Olmos Pineda

Tema 6: Teoría Semántica

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

SOBRE LOGICA MATEMATICA. Sandra M. Perilla-Monroy. Departamento de Ciencias Básicas, Universidad Santo Tomás, Bogotá, Colombia.

Matemáticas Discretas TC1003

Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos

Introd. al Pens. Científico Nociones básicas de la lógica ClasesATodaHora.com.ar

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Ampliación Matemática Discreta. Justo Peralta López

Introducción a la Lógica

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Lógica Proposicional. Sergio Stive Solano Sabié. Marzo de 2012

LEYES DE COMPOSICIÓN INTERNA Y ELEMENTOS DISTINGUIDOS

Métodos de Inteligencia Artificial

Semana02[1/23] Conjuntos. 9 de marzo de Conjuntos

Conjuntos, relaciones y funciones Susana Puddu

Asignatura: Matemática Fundamental [405036M-02] Taller 1 Lenguaje Simbólico y lógica proposicional

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

Matemáticas Discretas TC1003

Teoremas de Convergencia

Java para no Programadores

DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta

Demostraciones a Teoremas de Límites

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Grupos libres. Presentaciones.

GUÍA BÁSICA DE SCHEME v.4

Límite superior y límite inferior de una sucesión

Tema 9: Cálculo Deductivo

Expresiones Regulares y Derivadas Formales

Lógica Matemática, Sistemas Formales, Cláusulas de Horn

Cálculo Proposicional

Escenas de episodios anteriores

El lenguaje C. 1. Identificadores, constantes y variables

Números naturales y recursividad

PROGRAMA DE ESTUDIOS LÓGICA MATEMÁTICA. Valor en créditos horas 3 semestre Tipo de curso Obligatorio

Material diseñado para los estudiantes del NUTULA, alumnos del profesor Álvaro Moreno.01/10/2010 Lógica Proposicional

Teoría de Números. Divisibilidad. Olimpiada de Matemáticas en Tamaulipas

Axiomas de separación

Clase 1: Primalidad. Matemática Discreta - CC3101 Profesor: Pablo Barceló. P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros

Algoritmos y Estructura de Datos I

UNIVERSIDAD LIBRE PROGRAMAS ANALÍTICOS SECCIONAL: PEREIRA FACULTAD: INGENIERIAS. PROGRAMA ACADÉMICO: Ingeniería de Sistemas

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE CIENCIAS NATURALES Y MATEMÁTICAS DEPARTAMENTO DE MATEMÁTICAS CURSO DE NIVELACIÓN S

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

encontramos dos enunciados. El primero (p) nos afirma que Pitágoras era griego y el segundo (q) que Pitágoras era geómetra.

Proposicional. Curso Mari Carmen Suárez de Figueroa Baonza

Conjuntos y proposiciones

2. Si P; Q; R son verdaderas y S; T son falsas, determine el valor de verdad de la proposición: [P =) (R =) T )] () [(:P ^ S) =) (Q =) :T )]

Lenguajes y Gramáticas

LÓGICA MATEMÁTICA O FORMAL O SIMBÓLICA

Introducción. El uso de los símbolos en matemáticas.

Estructuras Algebraicas

13.3. MT para reconocer lenguajes

ELEMENTOS DE LA MATEMATICA

Información y materiales sobre la asignatura Toda la información y materiales sobre la asignatura los podeis encontrar en:

Teoría de la Computabilidad

APENDICE REGLAS Y LEYES DE LA LOGICA DE PRIMER ORDEN

b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A

Guía para el estudiante

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE CIENCIAS CARRERA DE MATEMÁTICO CONJUNTOS Y LÓGICA

Apuntes de Lógica Proposicional

LÓGICA PROPOSICIONAL

Funciones de Clase C 1

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

GUIA DE CATEDRA Matemática Empresarial Guía N.3 F. Elaboración 09 abril /11 F. 1 Revisión 09/04/11 Pagina 1 de 8

Bases de Datos y Sistemas de Información. Fundamentos de Lógica

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Manual de turbo pascal

Apuntes de Lógica Introducción Nociones de Lógica elemental Tablas de verdad Tautología y Contradicción Equivalencia lógica Algebra de proposiciones

6.1. Anillos de polinomios.

Conjuntos finitos y conjuntos numerables

Inteligencia Artificial II La Lógica Proposicional como un lenguaje formal

INTRODUCCION A LA INTELIGENCIA ARTIFICIAL MÓDULO 6- CÁLCULO DE PREDICADOS Y LÓGICA DE PRIMER ORDEN

UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERÍA FACULTAD DE CONTABILIDAD Y FINANZAS NATURALEZA DE LA TECNOLOGIA Y EL CONOCIMIENTO CIENTIFICO

Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

RAZONAMIENTO MATEMÁTICO

IIC2213. IIC2213 Teorías 1 / 42

Práctico 5. Definiciones Inductivas - Segunda Parte -

Conjuntos Infinitos. Ramón Espinoza Armenta AVC APOYO VIRTUAL PARA EL CONOCIMIENTO

Razonamientos. Premisas Conclusión Premisas Conclusión V V V V V F F V F V F F F F

Creación y Mantenimiento de Componentes Software en Sistemas de Planificación de Recursos Empresariales y de Gestión de...

1. NÚMEROS PRIMOS Y COMPUESTOS.

Lógicas para la inteligencia natural y artificial

Una proposición es una afirmación que debe ser cierta o falsa (aunque no lo sepamos).

MATEMÁTICA 1 JRC El futuro pertenece a aquellos que creen en la belleza de sus sueños

UNIVERSIDAD NACIONAL EXPERIMENTAL MARÍTIMA DEL CARIBE PLAN DE ESTUDIO INGENIERÍA INFORMÁTICA

Maestría en Seguridad Informática. Jorge Ezequiel, Bo Hugo Pagola Alberto Dums

ÍNDICE PRIMERA PARTE METODOLOGÍA JURÍDICA

Números irracionales famosos

Teoría de Lenguajes. Clase Teórica 7 Autómatas de Pila y Lenguajes Independientes del Contexto Primer cuartimestre 2014

Para qué se creó? El objetivo del estándar es proporcionar un conjunto estandarizado de documentos para la documentación de pruebas de software.

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 3: Relaciones, Funciones, y Notación Asintótica

Transcripción:

Construcción Formal de Programas en Teoría de Tipos http://www.fing.edu.uy/inco/grupos/mf/tppsf Gustavo Betarte Carlos Luna Grupo de Métodos Formales www.fing.edu.uy/~mf/ Instituto de Computación (InCo) 2013 InCo 2013

Objetivos Generales: Iniciación al uso de métodos formales para la producción de software correcto por construcción Particulares: presentación de lateoría de Tipos como lógica de programación familiarización con ambientes de desarrollo de programas basados en ese formalismo InCo 2013 CFPTT - 1.2

Certificación de Calidad de Software Normas internacionales de calidad (ISO9001, CC (ITSEC, TCSEC), etc.) Diferentes niveles/criterios de calidad que involucran evaluación de el proceso de producción el producto Niveles altos de garantía exigen la aplicación de métodos formales en: la especificación la verificación del código fuente la verificación del código objeto InCo 2013 CFPTT - 1.3

Métodos Formales y Desarrollo Industrial de Software Métodos formales Verificación de modelos Lenguajes para sistemas comunicantes Lógicas de programación - Lógica de Hoare - Lógicas de orden superior - Teorías de tipos... Aplicaciones Industriales Críticas Transporte Aeronáutica Centrales nucleares Software embebido Comercio electrónico... InCo 2013 CFPTT - 1.4

Aplicación de métodos formales en el desarrollo de software Tiene (hoy) un costo elevado Es rentable a largo plazo desarrollo incremental y descubrimiento temprano de incoherencias entre los requerimientos calidad del diseño mantenimiento documentación fiable comunicación no ambigua (posibilita la terciarización de servicios y la verificación de la funcionalidad) evaluación de los planes de calidad (en particular, de los protocolos de test) InCo 2013 CFPTT - 1.5

Costrucción Formal de Programas en Teoría de Tipos Métodos formales: Lógicas de Programación Teorías de Tipos Asistentes de Pruebas Coq Lenguaje formal para la especificación de programas (Teoría de Tipos) Razonamiento sobre la especificación y demostración propiedades Asistentes mecánicos InCo 2013 CFPTT - 1.6

Programa Asistentes de pruebas para lógicos y matemáticos Una presentación formal de la lógica proposicional y de primer orden Asistentes de pruebas para programadores Cálculo lambda con definiciones inductivas como lenguaje de programación funcional Pruebas y programas. Especificaciones y Tipos Isomorfismo de Curry-Howard Extracción de programas a partir de pruebas Caso de estudio: Modelado y verificación de políticas de seguridad en VirtualCert InCo 2013 CFPTT - 1.7

Capítulo 1: Asistentes de Pruebas para Lógicos y Matemáticos 1. Lógica Proposicional InCo 2013

Sean a y b N, b 0. 0.Motivación Ejemplo: División Calculamos a div b y a mod b simultáneamente haciendo recursión en a: 0 divmod b = <0,0> (n+1) divmod b = let <q,r> = n divmod b in if r < b-1 then <q,r+1> else <q+1,0> InCo 2013 CFPTT - 1.9

División: especificación y prueba Especificación: Para todos a,b N tq. b 0 existen q y r tq. a=b.q+r y r < b. Prueba de que el programa es correcto: por inducción en a: 0 divmod b = <0,0> (n+1) divmod b = let <q,r> = n divmod b in if r < b-1 then <q,r+1> else <q+1,0> 0 = b.0 + 0 y 0 < b supongamos n=b.q+r y r < b. luego, si r < b - 1 entonces n+1 = b.q+(r+1) y r+1<b sino n+1 = b.(q+1)+0 y 0<b InCo 2013 CFPTT - 1.10

1. Cálculo proposicional Lógica como herramienta para especificar y probar corrección de programas. Cálculo proposicional Sintaxis variables de proposición: A,B,C,... conectivos:,,,, ~, Semántica noción de verdad: existencia de prueba (lógica constructivista) InCo 2013 CFPTT - 1.11

Cálculo proposicional en Coq Prop es la familia de proposiciones Declaración de variables de proposición: Variable A B C: Prop Conectivos:,,, son primitivos (/\, \/,->, False) ~ y son definidos: ~α := (α ) α β:= (α β) (β α) InCo 2013 CFPTT - 1.12

Construcción de pruebas en Coq Para comenzar: Queremos probar cierta fórmula objetivo (goal) Para ello, utilizaremos diferentes tácticas que transforman al objetivo original e introducen hipótesis adicionales InCo 2013 CFPTT - 1.13

Desarrollo de pruebas lógicas Situación general: existen varios objetivos a probar, cada uno a partir de ciertas hipótesis: donde: 1 α 1 2 α 2... n α n cada i es un conjunto de fórmulas (hipótesis) de la forma: H0: γ 0, H1: γ 1,... Hk: γ k. α i es una fórmula cada α i debe ser probada a partir de i secuentes InCo 2013 CFPTT - 1.14

Tácticas = Reglas de inferencia Una táctica transforma un secuente de la forma: i α i en cero o más secuentes: i1 α i 1 i 2 α i 2... in α in tales que probar los últimos es suficiente para construir una prueba del secuente original InCo 2013 CFPTT - 1.15

Prueba completa = Árbol α 1 α 1 2 α 2 11 12 1 α 11 α n 12 α 1 n 21 α 21 Goal inicial Subgoals.................. InCo 2013 CFPTT - 1.16

Tácticas caso trivial H: α α assumption Probado! InCo 2013 CFPTT - 1.17

Tácticas (II) Reglas de introducción introducción α β intro H el identificador H es opcional H: α β variantes: intros, intros H 1...H n InCo 2013 CFPTT - 1.18

Tácticas (III) Reglas de introducción (cont.) introducción (Izq.) α β left α introducción (Der.) α β right β InCo 2013 CFPTT - 1.19

Tácticas (IV) Reglas de introducción (cont.) introducción α β split α β introducción False absurd α α α InCo 2013 CFPTT - 1.20

Tácticas (V) Reglas de eliminación eliminación H: α β β apply H H: α β α en general: H: α 1 α 2... β β apply H H:... α 1 H:... α 2... InCo 2013 CFPTT - 1.21

eliminación Tácticas (VI) Reglas de eliminación (cont.) H: α β σ elim H H: α β α σ H: α β β σ eliminación H: α β σ elim H H: α β α β σ InCo 2013 CFPTT - 1.22

Tácticas (VII) Reglas de eliminación (cont.) eliminación H: False σ elim H Probado! InCo 2013 CFPTT - 1.23

Tácticas (VIII) Otras tácticas Utilización de lema intermediario α cut β β α β Explicitación de la prueba: α exact t Probado! donde: t debe ser una prueba de α (figura en las hipótesis de o es el nombre de un lema ya probado) InCo 2013 CFPTT - 1.24

Tácticas (IX) Eliminación de definiciones Eliminación de definición α unfold not α False Eliminación de definición α β unfold iff (α β) (β α) unfold las hipótesis: unfold nom in h InCo 2013 CFPTT - 1.25

Observaciones En general: si term es una prueba de una proposición α (que figura en las hipótesis o es el nombre de un lema ya probado), entonces elim term, aplica la regla de eliminación del conectivo principal de α. apply y elim no se aplican solamente a hipótesis sino también a lemas previamente demostrados. InCo 2013 CFPTT - 1.26

Esquemas de proposición Si demostramos Variable A:Prop. Lemma L1 : A A. Proof. Qed. La prueba es análoga para cualquier proposición A. Un esquema de proposición se expresa como: Para toda proposición A, se cumple A A. En Coq este esquema se expresa: forall A:Prop, A A InCo 2013 CFPTT - 1.27

Esquemas de proposición Instanciación Ejemplo: Si ya demostramos en Coq Lemma Lid : forall A:Prop, A A Proof. Qed. Para demostrar ~False ~False podemos utilizar exact (Lid ~False). InCo 2013 CFPTT - 1.28

2. Cálculo proposicional clásico Principio del tercero excluído: Para toda proposición P, se cumple P ~P En lógica constructiva, una proposición es verdadera si y sólo si podemos exhibir una prueba. Sabemos probar instancias de este axioma, pero no sabemos probar el esquema pues para cada proposición deberíamos exhibir una prueba de ella o de su negación como haríamos con las conjeturas y resultados indecidibles? Ejemplo: sabemos probar 1=0 ~1=0 no sabemos (hoy) probar P=NP ~P=NP InCo 2013 CFPTT - 1.29

Cálculo proposicional clásico El principio del tercero excluído no se puede demostrar en la lógica constructiva puede agregarse como un AXIOMA En Coq este axioma está declarado en el módulo Classical y se llama classic. Require Import Classical.... check (classic A). (classic A) : (A \/ ~A) InCo 2013 CFPTT - 1.30

3. Razonamiento automatizado Tautologías constructivas α tauto Probado! tauto implementa una estrategia de construcción de pruebas de tautologías constructivas. Esta estrategia tiene éxito cuando α es una tautología cuya prueba no usa el tercero excluído. Construye una prueba. InCo 2013 CFPTT - 1.31

Táctica (Semi)Automática Aplicación (hacia atrás) de lemas e hipótesis O bien α α auto auto Probado! auto implementa una estrategia de construcción de pruebas similar a la de Prolog (razonamiento hacia atrás) aplicando lemas e hipótesis. Considera únicamente aquellos lemas declarados como Hint. Construye una prueba. InCo 2013 CFPTT - 1.32 α