Tecnología de la Programación

Documentos relacionados
Algoritmos en teoría de números

Lenguajes de programación LÓGICA COMPUTACIONAL LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Lenguajes de programación ANÁLISIS LÓGICO LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Lenguajes funcionales: λ-cálculo

El lenguaje While. Yolanda Ortega Mallén. Dpto. de Sistemas Informáticos y Computación Universidad Complutense de Madrid

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016

Análisis lógico Cálculo de proposiciones

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica

Resumen ANÁLISIS LÓGICO INDUCCIÓN Y RECURSIÓN. Conjuntos inductivos. Definiciones circulares

LENGUAJES Y COMPILADORES

Un tercer ejemplo: verificación de primalidad

MEL* Ejercicios - Inducción 1

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

AMPLIACIÓN DE MATEMÁTICAS. DIVISIBILIDAD DE NÚMEROS ENTEROS. En el conjunto de los números enteros

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

El lenguaje P. Lógica y Computabilidad ( ) símbolos p. Verano convenciones. Lógica Proposicional - clase 1

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

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

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

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

Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid

DE LOS NÚMEROS NATURALES Y ENTEROS

Resumen LÓGICA COMPUTACIONAL INDUCCIÓN Y RECURSIÓN. Conjuntos inductivos. Definiciones circulares

INTRODUCCIÓN A LA PROGRAMACIÓN. 1º Bachillerato

La lógica de segundo orden: Sintaxis

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

Lógica - Conjuntos inductivos

Algoritmos y estructuras de datos II Inducción estructural

Aritmética Entera MATEMÁTICA DISCRETA I. F. Informática. UPM. MATEMÁTICA DISCRETA I () Aritmética Entera F. Informática.

GUÍA BÁSICA DE SCHEME v.4

LEYES, ESTRUCTURAS BÁSICAS Y COCIENTES LÓGICA DE PROPOSICIONES

Lógica Matemática. Contenido. Definición. Finalidad de la unidad. Proposicional. Primer orden

Introducción a la Lógica

Teorema de incompletitud de Gödel

PROBLEMAS RESUELTOS DE PREPARACIÓN PARA OPOSICIONES. Problemas 02

Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción

Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES. Computabilidad-Turing. Tesis de Church-Turing

Lógica Instituto de Computación. 27 de febrero

Tema 1: El cuerpo de los números reales

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

Los modelos abstractos de cómputo. Tema 1: Introducción. El modelo transductor. El modelo reconocedor. ordenador. datos. Modelo Abstracto de Cómputo

INDUCCIÓN. Inducción - 2

INDUCCIÓN Instituto de Computación Lógica Inducción - 1

Tema 4: Recursión e inducción en ACL2

Matemáticas Discretas Lógica

FUNDAMENTOS DE INFORMÁTICA

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Axiomática

Lógicas no clásicas: Introducción a la lógica modal

Sistemas deductivos. Lógica Computacional. Curso 2005/2006. Departamento de Matemática Aplicada Universidad de Málaga

MEL* Ejercicios - Conjuntos 1

Definiciones generales. Alfabeto de la lógica proposicional. Conectivos. Conectivos

Demostración Contraejemplo. Métodos Indirectos

Números primos y compuestos

CIENCIAS FORMALES CIENCIAS FÁCTICAS

Algebras booleanas. B2) Leyes Distributivas. Cada operación es distributiva con respecto a la otra:

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Introducción a la Matemática Discreta

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

los lenguajes WHILE y LOOP X2 := X1; while X2 0 do X1 := X1 + 1; X2 := X2 1 od

ESTRUCTURAS DE CONTROL

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos

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

Qué es la lógica? Esfuerzos por modelar estas leyes del pensamiento humano. Han existido desde la antigüedad.

Teorema de Lagrange. En esta sección demostramos algunos hechos básicos sobre grupos, que se pueden deducir de la definición

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42

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

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42

Tema I Testing Estructurado

Variables, expresiones y sentencias

Matemática y programación

Con los dos conectivos y en las formulas que tienen una sola variable proposicional distinta, no hay forma de construir una contradicción.

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION

Total de horas: Horas de teoría: semana UNIDAD 1 OBJETIVO

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros

Clase 02/10/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

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

Técnicas de prueba y corrección de algoritmos

Bases Formales de la Computación

Introducción a la Inducción Matemática Seminario de Matemáticas

Relaciones de orden. Definición 1. Llamamos conjunto ordenado a un par (E, ) donde E es un conjunto y es un orden definido en E

ARITMÉTICA ENTERA LOS NÚMEROS ENTEROS. = {..., n,..., 3, 2, 1, 0, 1, 2, 3,..., n,...} (Zahlen, en alemán, números)

Estructuras Discretas. Teoremas. Técnicas de demostración. Reglas de Inferencia. Reglas de Inferencia Ley de Combinación.

Conjuntos finitos y conjuntos numerables

Resumen de las clases teóricas del turno tarde a cargo de la Prof. Alcón.

Clase 1: Divisibilidad

La Representación del Conocimiento CÓMO REPRESENTAR EL CONOCIMIENTO?

MODULO II PROGRAMACIÓN ORIENTADA A EVENTOS

Lógica Proposicional

1. Corrección de un programa TEMA 2: ESPECIFICACIÓN Y CORRECCIÓN DE ALGORITMOS. 1. Corrección de un programa. 1. Corrección de un programa

Lenguajes de Programación Programación funcional

Lenguaje de Programación: C++ Repaso de Material C++

Lógica Clásica Proposicional

como les va con las practicas?

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS

Transcripción:

Tecnología de la Programación Semántica Operacional David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal de propiedades. Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal de propiedades. Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal de propiedades. Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal de propiedades. Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal (base matemática) de propiedades. Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal (base matemática) de propiedades (para todos los casos). Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Verificación formal Recordar descriptores BOE: Diseño de algoritmos Análisis de algoritmos Lenguajes de programación Diseño de programas: Descomposición modular y documentación Técnicas de verificación Pruebas de programas Pruebas de programas: validación Ejecución de un conjunto de tests generados sintética o manualmente. Prueba formal de propiedades: verificación Demostración formal (base matemática) de propiedades (para todos los casos). Necesitamos una definición formal del significado (semántica) de los lenguajes de programación.

Lenguaje de ejemplo IMP (IMPerativo) Estructuras básicas: Secuencia Alternativa Repetición Cambio de estado: variables y asignación. Tipos básicos: enteros, strings. Tipos compuestos: arrays. Funciones.

IMP. Sintaxis aproximada IMP ::= eof CMDS eof CMDS ::= CMD ; CMD ; CMDS CMD ::= skip Type Variable := EXP Variable := EXP Type Variable [ Exp ] := EXP Variable [ Exp ] := EXP if EXP then CMDS else CMDS fi while EXP do CMDS done print EXP

Semántica operacional Define la semántica de un lenguaje de programación en función de los cambios de estado que producen cada una de las instrucciones del lenguaje. No es adecuado para todo tipo de lenguajes. El estado se representa mediante un modelo o abstracción.

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (I) Conjuntos sintácticos asociados con IMP. números N Booleanos T = {true, false} Posiciones de memoria Loc Expresiones aritméticas Aexp Expresiones booleanas Bexp Comandos Com

IMP- Definición (II) Convenciones n, m son variables en N n, m N X, Y son variables en Loc X, Y Loc a i son variables en Aexp a i Aexp b i son variables en Bexp b i Bexp c i son variables en Com c i Com

IMP- Definición (II) Convenciones n, m son variables en N n, m N X, Y son variables en Loc X, Y Loc a i son variables en Aexp a i Aexp b i son variables en Bexp b i Bexp c i son variables en Com c i Com

IMP- Definición (II) Convenciones n, m son variables en N n, m N X, Y son variables en Loc X, Y Loc a i son variables en Aexp a i Aexp b i son variables en Bexp b i Bexp c i son variables en Com c i Com

IMP- Definición (II) Convenciones n, m son variables en N n, m N X, Y son variables en Loc X, Y Loc a i son variables en Aexp a i Aexp b i son variables en Bexp b i Bexp c i son variables en Com c i Com

IMP- Definición (II) Convenciones n, m son variables en N n, m N X, Y son variables en Loc X, Y Loc a i son variables en Aexp a i Aexp b i son variables en Bexp b i Bexp c i son variables en Com c i Com

IMP- Definición (Aexp) Expresiones aritméticas Aexp ::= n X a 0 + a 1 a 0 a 1 a 0 a 1

IMP- Definición (Bexp) Expresiones booleanas Bexp ::= true false a 0 = a 1 a 0 <= a 1 not b b 0 and b 1 b 0 or b 1

IMP- Definición (Comm) Instrucciones Comm ::= skip X := a c 0 ; c 1 if b then c 0 else c 1 fi while b do c done

Estados El conjunto de estados Σ está formado por las funciones: σ : Loc > N (Sólo variables enteras) Dado un estado σ, representaremos el valor de la posicion X como: σ(x) Y la extensión de un estado σ[x m]: { m Y = X, σ[x m](y ) = σ(y ) si Y X. Indistintamente σ[x m] ó σ[m/x]

Evaluación Evaluación de una expresión aritmética a en un estado σ < a, σ > n Evaluación de una expresión booleana b en un estado σ < b, σ > {true, false} Ejecución de una instrucción c en un estado σ < c, σ > σ

Secuentes Si las premisas son ciertas, se puede deducir la conclusión. < premisas > < conclusion > F 1... F n F G 1... G 1... F n G 1... G m m Las usaremos para definir la semántica operacional.

Evaluación de expresiones aritméticas Constantes Variables Suma Resta Multiplicación < n, σ > n < X, σ > σ(x) < a 0, σ > n < a 1, σ > m < a 0 + a 1, σ > n + m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m

Evaluación de expresiones aritméticas Constantes Variables Suma Resta Multiplicación < n, σ > n < X, σ > σ(x) < a 0, σ > n < a 1, σ > m < a 0 + a 1, σ > n + m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m

Evaluación de expresiones aritméticas Constantes Variables Suma Resta Multiplicación < n, σ > n < X, σ > σ(x) < a 0, σ > n < a 1, σ > m < a 0 + a 1, σ > n + m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m

Evaluación de expresiones aritméticas Constantes Variables Suma Resta Multiplicación < n, σ > n < X, σ > σ(x) < a 0, σ > n < a 1, σ > m < a 0 + a 1, σ > n + m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m

Evaluación de expresiones aritméticas Constantes Variables Suma Resta Multiplicación < n, σ > n < X, σ > σ(x) < a 0, σ > n < a 1, σ > m < a 0 + a 1, σ > n + m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m < a 0, σ > n < a 1, σ > m < a 0 a 1, σ > n m

Evaluación de expresiones booleanas (I) Constantes < true, σ > true < false, σ > false Comparación aritmética < a 0, σ > n < a 1, σ > m < a 0 = a 1, σ > true < a 0, σ > n < a 1, σ > m < a 0 = a 1, σ > false < a 0, σ > n < a 1, σ > m < a 0 <= a 1, σ > true < a 0, σ > n < a 1, σ > m < a 0 <= a 1, σ > false n = m n m n <= m n > m

Evaluación de expresiones booleanas (I) Constantes < true, σ > true < false, σ > false Comparación aritmética < a 0, σ > n < a 1, σ > m < a 0 = a 1, σ > true < a 0, σ > n < a 1, σ > m < a 0 = a 1, σ > false < a 0, σ > n < a 1, σ > m < a 0 <= a 1, σ > true < a 0, σ > n < a 1, σ > m < a 0 <= a 1, σ > false n = m n m n <= m n > m

Evaluación de expresiones booleanas (II) Negación < b, σ > true < not b, σ > false Conectivas lógicas < b, σ > false < not b, σ > true < b 0, σ > t 0 < b 1, σ > t 1 < b 0 and b 1, σ > t < b 0, σ > t 0 < b 1, σ > t 1 < b 0 or b 1, σ > t t = t 0 t 1 t = t 0 t 1

Evaluación de expresiones booleanas (II) Negación < b, σ > true < not b, σ > false Conectivas lógicas < b, σ > false < not b, σ > true < b 0, σ > t 0 < b 1, σ > t 1 < b 0 and b 1, σ > t < b 0, σ > t 0 < b 1, σ > t 1 < b 0 or b 1, σ > t t = t 0 t 1 t = t 0 t 1

Evaluación de and optimizada Implementación habitual < b 0, σ > false < b 0 and b 1, σ > false < b 0, σ > true < b 1, σ > false < b 0 and b 1, σ > false < b 0, σ > true < b 1, σ > true < b 0 and b 1, σ > true

Ejecución de instrucciones (I) Skip Asignación Secuencia < skip, σ > σ < a, σ > m < X := a, σ > σ[x m] < c 0, σ > σ < c 1, σ > σ < c 0 ; c 1, σ > σ

Ejecución de instrucciones (I) Skip Asignación Secuencia < skip, σ > σ < a, σ > m < X := a, σ > σ[x m] < c 0, σ > σ < c 1, σ > σ < c 0 ; c 1, σ > σ

Ejecución de instrucciones (I) Skip Asignación Secuencia < skip, σ > σ < a, σ > m < X := a, σ > σ[x m] < c 0, σ > σ < c 1, σ > σ < c 0 ; c 1, σ > σ

Ejecución de instrucciones (II) If < b, σ > true < c 0, σ > σ < if b then c 0 else c 1 fi, σ > σ While < b, σ > false < c 1, σ > σ < if b then c 0 else c 1 fi, σ > σ < b, σ > false < while b do c done, σ > σ < b, σ > true < c, σ > σ < while b do c done, σ > σ < while b do c done, σ > σ

Ejecución de instrucciones (II) If < b, σ > true < c 0, σ > σ < if b then c 0 else c 1 fi, σ > σ While < b, σ > false < c 1, σ > σ < if b then c 0 else c 1 fi, σ > σ < b, σ > false < while b do c done, σ > σ < b, σ > true < c, σ > σ < while b do c done, σ > σ < while b do c done, σ > σ

Derivaciones Derivación. Secuencia de aplicación de reglas. Axioma. Regla sin premisas. Instancia de un regla. Sustituimos las metavariables por valores concretos. Las derivaciones representan ejecuciones de las instrucciones o evaluaciones de las expresiones. Ejemplo. a (X + 5) + (7 + 9) y σ 0 = {X 0} < a, σ 0 >? < X, σ 0 > 0 < 5, σ 0 > 5 < 7, σ 0 > 7 < 9, σ 0 > 9 < (X + 5), σ 0 > 5 < (7 + 9), σ 0 > 16 < (X + 5) + (7 + 9), σ 0 > 21 >

Terminación Si w while true do skip, σ, σ t.q. < w, σ > σ?

Preguntas Son iguales? skip b := 1 > 2; x := 1; while b do x := x *2; b := x < 500; done Después de este código, X es par? while x < 3000 do x := x * 2; done

Relaciones de equivalencia a 0 a 1 iff ( n N, σ Σ, < a 0, σ > n < a 1, σ > n) b 0 b 1 iff ( t σ Σ, < b 0, σ > t < b 1, σ > t) c 0 c 1 iff ( σ, σ Σ, < c 0, σ > σ < c 1, σ > σ )

Prueba simple Proposición Sea w while b do c done con b Bexp, c Comm entonces: w if b then c; w else skip fi Demostración. Método menos laborioso: inducción de reglas.

Inducción matemática Sea P(n) una propiedad de los números naturales. El principio de inducción matemática dice que para demostrar que P(n) es cierto para todos los números naturales es suficiente con demostrar que: P(0) es cierto. Si P(m) es cierto, entonces también lo es P(m+1), para cualquier número natural m. Es decir, (P(0) & ( m ω.p(m) P(m + 1))) n ω.p(n) Ejercicio. Demostrar que la propiedad P(n) se cumple para los números naturales. P(n) n (2i 1) = n 2 i=1

Inducción estructural Cómo demostramos que la evaluación de expresiones aritméticas en IMP es determinista? < a, σ > m & < a, σ > m m = m Sea P(a) una propiedad de las expresiones aritméticas. Para demostrar que (P(a) se cumple para todas las expresiones artiméticas es suficiente con demostrar que: Se cumple para todos los número P(m). Se cumple para todas la variables P(X). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 + a 1 ). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 a 1 ). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 a 1 ).

Inducción estructural Cómo demostramos que la evaluación de expresiones aritméticas en IMP es determinista? < a, σ > m & < a, σ > m m = m Sea P(a) una propiedad de las expresiones aritméticas. Para demostrar que (P(a) se cumple para todas las expresiones artiméticas es suficiente con demostrar que: Se cumple para todos los número P(m). Se cumple para todas la variables P(X). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 + a 1 ). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 a 1 ). Para todas la expresiones aritméticas a 0, a 1, si P(a 0 ) y P(a 1 ) se cumplen, entonces también se cumple P(a 0 a 1 ).

Inducción estructural cont. ( m N.P(m)) & ( X Loc.P(X)) & ( a 0, a 1 Aexp.P(a 0 ) y P(a 1 ) P(a 0 + a 1 )) & ( a 0, a 1 Aexp.P(a 0 ) y P(a 1 ) P(a 0 a 1 )) & ( a 0, a 1 Aexp.P(a 0 ) y P(a 1 ) P(a 0 a 1 )) a Aexp.P(a)

Inducción estructural cont. Proposición Para toda expresión aritmética a y números m y m Demostración < a, σ > m & < a, σ > m m = m

Inducción bien fundada Las anteriores son casos particulares. Relación bien fundada Es una relación binaria sobre un conjunto A tal que no hay cadenas descendientes infinitas a i a 1 a 0 Si a b decimos que a es un predecesor de b. Es irreflexiva. a/a a a b a = b o a b Proposición Sea una relación binaria en el conjunto A. La relacion está bien fundada iff todos los subconjuntos no vacíos Q de A tienen un elemento minimal, i.e. un elemento m tal que m Q& b m.b Q

Inducción bien fundada Las anteriores son casos particulares. Relación bien fundada Es una relación binaria sobre un conjunto A tal que no hay cadenas descendientes infinitas a i a 1 a 0 Si a b decimos que a es un predecesor de b. Es irreflexiva. a/a a a b a = b o a b Proposición Sea una relación binaria en el conjunto A. La relacion está bien fundada iff todos los subconjuntos no vacíos Q de A tienen un elemento minimal, i.e. un elemento m tal que m Q& b m.b Q

Inducción bien fundada Las anteriores son casos particulares. Relación bien fundada Es una relación binaria sobre un conjunto A tal que no hay cadenas descendientes infinitas a i a 1 a 0 Si a b decimos que a es un predecesor de b. Es irreflexiva. a/a a a b a = b o a b Proposición Sea una relación binaria en el conjunto A. La relacion está bien fundada iff todos los subconjuntos no vacíos Q de A tienen un elemento minimal, i.e. un elemento m tal que m Q& b m.b Q

Inducción bien fundada (cont.) Demostración está bien fundada m Q& b m.b Q Supongamos que todo conjunto no vacio de A tiene un elemento minimal. Si... a i... a 1 a 0 es una cadena infinita descendente, entonces el conjunto Q = {a i i w} sería no vacío sin un elemento minimal. Por lo tanto está bien fundada. está bien fundada m Q& b m.b Q Suponer que Q es un subconjunto no vacío de A. Construimos una cadena de elementos de esta forma: tomamos un elemento a 0 de Q. Inductivamente, asumimos que hemos construido en Q una cadena de elememntos a n... a 0. Si no existe un b Q t.q. b a n parar la construcción. En caso contrario tomar a n+1 = b. Como es bien fundada la cadena... a i... a 1... a 0 no puede ser infinita. Si es finita, de la forma a n... a 0 con b a n.b Q. Tomar como elemento minimal a n.

El principio de Inducción bien fundada Sea una relacion bien fundada en un conjunto A. Sea P una propiedad. Entonces a A.P(a) iff: a A.([ b a.p(b)] P(a)) Prueba La prueba se basa en la observación de que cualquier subconjunto no vacío Q de un conjunto A con una relación bien fundada tiene un elemento minimal. Trivial Asumimos a A.([ b a.p(b)] P(a)) y producimos una contradicción suponiendo que P(a) para algún a A. Entonces, tiene que existir un elemento minimal m para el conjunto {a A P(a)}. Pero entonces P(m) y sin embargo b m.p(m), lo cual contradice la asumción.

El principio de Inducción bien fundada Sea una relacion bien fundada en un conjunto A. Sea P una propiedad. Entonces a A.P(a) iff: a A.([ b a.p(b)] P(a)) Prueba La prueba se basa en la observación de que cualquier subconjunto no vacío Q de un conjunto A con una relación bien fundada tiene un elemento minimal. Trivial Asumimos a A.([ b a.p(b)] P(a)) y producimos una contradicción suponiendo que P(a) para algún a A. Entonces, tiene que existir un elemento minimal m para el conjunto {a A P(a)}. Pero entonces P(m) y sin embargo b m.p(m), lo cual contradice la asumción.

El principio de Inducción bien fundada Sea una relacion bien fundada en un conjunto A. Sea P una propiedad. Entonces a A.P(a) iff: a A.([ b a.p(b)] P(a)) Prueba La prueba se basa en la observación de que cualquier subconjunto no vacío Q de un conjunto A con una relación bien fundada tiene un elemento minimal. Trivial Asumimos a A.([ b a.p(b)] P(a)) y producimos una contradicción suponiendo que P(a) para algún a A. Entonces, tiene que existir un elemento minimal m para el conjunto {a A P(a)}. Pero entonces P(m) y sin embargo b m.p(m), lo cual contradice la asumción.

El principio de Inducción bien fundada Sea una relacion bien fundada en un conjunto A. Sea P una propiedad. Entonces a A.P(a) iff: a A.([ b a.p(b)] P(a)) Prueba La prueba se basa en la observación de que cualquier subconjunto no vacío Q de un conjunto A con una relación bien fundada tiene un elemento minimal. Trivial Asumimos a A.([ b a.p(b)] P(a)) y producimos una contradicción suponiendo que P(a) para algún a A. Entonces, tiene que existir un elemento minimal m para el conjunto {a A P(a)}. Pero entonces P(m) y sin embargo b m.p(m), lo cual contradice la asumción.

Ejemplos Inducción matemática n m m = n + 1 Inducción estructural a b a es una subexpresión directa de b

Ejemplos Inducción matemática n m m = n + 1 Inducción estructural a b a es una subexpresión directa de b

Ejercicio Algoritmo de Euclides (máximo común divisor) Euclid while (not (M = N)) do if (M <= N) then N := N - M; else M := M - N; fi done Teorema (Terminación). Para todos los estados σ σ(m) 1 & σ(n) 1 σ. < Euclid, σ > σ

Ejercicio Algoritmo de Euclides (máximo común divisor) Euclid while (not (M = N)) do if (M <= N) then N := N - M; else M := M - N; fi done Teorema (Terminación). Para todos los estados σ σ(m) 1 & σ(n) 1 σ. < Euclid, σ > σ

Ejercicio. Prueba Deseamos probar que la propiedad P(σ) σ. < Euclid, σ > σ se cumple σ S = {σ Σ σ(m) 1 & σ(n) 1} Usaremos inducción bien fundada sobre la relación: σ σ iff (σ (M) σ(m) & σ (N) σ(n)) & (σ (M) σ(m) o σ (N) σ(n))

Ejercicio. Prueba Deseamos probar que la propiedad P(σ) σ. < Euclid, σ > σ se cumple σ S = {σ Σ σ(m) 1 & σ(n) 1} Usaremos inducción bien fundada sobre la relación: σ σ iff (σ (M) σ(m) & σ (N) σ(n)) & (σ (M) σ(m) o σ (N) σ(n))