tecnología de la programación -...
TRANSCRIPT
-
Tecnología de la ProgramaciónSemántica Operacional
David Cabrero Souto
Facultad de InformáticaUniversidade da Coruña
Curso 2007/2008
-
Verificación formal
Recordar descriptores BOE:
Diseño de algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
Prueba formal de propiedades: verificación
Demostración formal (base matemática) de propiedades (paratodos 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 algoritmosAnálisis de algoritmosLenguajes de programaciónDiseño de programas: Descomposición modular ydocumentaciónTécnicas de verificaciónPruebas de programas
Pruebas de programas: validación
Ejecución de un conjunto de tests generados sintética omanualmente.
Prueba formal de propiedades: verificación
Demostración formal (base matemática) de propiedades (paratodos 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:
SecuenciaAlternativaRepetició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 enfunción de los cambios de estado que producen cada una delas 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 NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (I)
Conjuntos sintácticos asociados con IMP.
números NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (I)
Conjuntos sintácticos asociados con IMP.
números NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (I)
Conjuntos sintácticos asociados con IMP.
números NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (I)
Conjuntos sintácticos asociados con IMP.
números NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (I)
Conjuntos sintácticos asociados con IMP.
números NBooleanos T = {true, false}Posiciones de memoria LocExpresiones aritméticas AexpExpresiones booleanas BexpComandos Com
-
IMP- Definición (II)
Convenciones
n,m son variables en N n,m ∈ NX ,Y son variables en Loc X ,Y ∈ Locai son variables en Aexp ai ∈ Aexpbi son variables en Bexp bi ∈ Bexpci son variables en Com ci ∈ Com
-
IMP- Definición (II)
Convenciones
n,m son variables en N n,m ∈ NX ,Y son variables en Loc X ,Y ∈ Locai son variables en Aexp ai ∈ Aexpbi son variables en Bexp bi ∈ Bexpci son variables en Com ci ∈ Com
-
IMP- Definición (II)
Convenciones
n,m son variables en N n,m ∈ NX ,Y son variables en Loc X ,Y ∈ Locai son variables en Aexp ai ∈ Aexpbi son variables en Bexp bi ∈ Bexpci son variables en Com ci ∈ Com
-
IMP- Definición (II)
Convenciones
n,m son variables en N n,m ∈ NX ,Y son variables en Loc X ,Y ∈ Locai son variables en Aexp ai ∈ Aexpbi son variables en Bexp bi ∈ Bexpci son variables en Com ci ∈ Com
-
IMP- Definición (II)
Convenciones
n,m son variables en N n,m ∈ NX ,Y son variables en Loc X ,Y ∈ Locai son variables en Aexp ai ∈ Aexpbi son variables en Bexp bi ∈ Bexpci son variables en Com ci ∈ Com
-
IMP- Definición (Aexp)
Expresiones aritméticasAexp ::= n
| X| a0 + a1| a0 − a1| a0 ∗ a1
-
IMP- Definición (Bexp)
Expresiones booleanasBexp ::= true
| false| a0 = a1| a0
-
IMP- Definición (Comm)
InstruccionesComm ::= skip
| X := a| c0; c1| if b then c0 else c1 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 Xcomo:
σ(X )Y la extensión de un estado σ[X ← m]:
σ[X ← m](Y ) =
{m Y = X ,σ(Y ) si Y 6= 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 >
F1 . . .FnG1 . . .Gm
F1 . . .Fn → G1 . . .Gm
Las usaremos para definir la semántica operacional.
-
Evaluación de expresiones aritméticas
Constantes
< n, σ >→ nVariables
< X , σ >→ σ(X )Suma
< a0, σ >→ n < a1, σ >→ m< a0 + a1, σ >→ n + m
Resta< a0, σ >→ n < a1, σ >→ m< a0 − a1, σ >→ n −m
Multiplicación
< a0, σ >→ n < a1, σ >→ m< a0 ∗ a1, σ >→ n ∗m
-
Evaluación de expresiones aritméticas
Constantes
< n, σ >→ nVariables
< X , σ >→ σ(X )Suma
< a0, σ >→ n < a1, σ >→ m< a0 + a1, σ >→ n + m
Resta< a0, σ >→ n < a1, σ >→ m< a0 − a1, σ >→ n −m
Multiplicación
< a0, σ >→ n < a1, σ >→ m< a0 ∗ a1, σ >→ n ∗m
-
Evaluación de expresiones aritméticas
Constantes
< n, σ >→ nVariables
< X , σ >→ σ(X )Suma
< a0, σ >→ n < a1, σ >→ m< a0 + a1, σ >→ n + m
Resta< a0, σ >→ n < a1, σ >→ m< a0 − a1, σ >→ n −m
Multiplicación
< a0, σ >→ n < a1, σ >→ m< a0 ∗ a1, σ >→ n ∗m
-
Evaluación de expresiones aritméticas
Constantes
< n, σ >→ nVariables
< X , σ >→ σ(X )Suma
< a0, σ >→ n < a1, σ >→ m< a0 + a1, σ >→ n + m
Resta< a0, σ >→ n < a1, σ >→ m< a0 − a1, σ >→ n −m
Multiplicación
< a0, σ >→ n < a1, σ >→ m< a0 ∗ a1, σ >→ n ∗m
-
Evaluación de expresiones aritméticas
Constantes
< n, σ >→ nVariables
< X , σ >→ σ(X )Suma
< a0, σ >→ n < a1, σ >→ m< a0 + a1, σ >→ n + m
Resta< a0, σ >→ n < a1, σ >→ m< a0 − a1, σ >→ n −m
Multiplicación
< a0, σ >→ n < a1, σ >→ m< a0 ∗ a1, σ >→ n ∗m
-
Evaluación de expresiones booleanas (I)
Constantes
< true, σ >→ true < false, σ >→ false
Comparación aritmética
< a0, σ >→ n < a1, σ >→ m< a0 = a1, σ >→ true
n = m
< a0, σ >→ n < a1, σ >→ m< a0 = a1, σ >→ false
n 6= m
< a0, σ >→ n < a1, σ >→ m< a0 → true
n → n < a1, σ >→ m< a0 → false
n > m
-
Evaluación de expresiones booleanas (I)
Constantes
< true, σ >→ true < false, σ >→ false
Comparación aritmética
< a0, σ >→ n < a1, σ >→ m< a0 = a1, σ >→ true
n = m
< a0, σ >→ n < a1, σ >→ m< a0 = a1, σ >→ false
n 6= m
< a0, σ >→ n < a1, σ >→ m< a0 → true
n → n < a1, σ >→ m< a0 → false
n > m
-
Evaluación de expresiones booleanas (II)
Negación
< b, σ >→ true< not b, σ >→ false
< b, σ >→ false< not b, σ >→ true
Conectivas lógicas
< b0, σ >→ t0 < b1, σ >→ t1< b0 and b1, σ >→ t
t = t0 ∧ t1
< b0, σ >→ t0 < b1, σ >→ t1< b0 or b1, σ >→ t
t = t0 ∨ t1
-
Evaluación de expresiones booleanas (II)
Negación
< b, σ >→ true< not b, σ >→ false
< b, σ >→ false< not b, σ >→ true
Conectivas lógicas
< b0, σ >→ t0 < b1, σ >→ t1< b0 and b1, σ >→ t
t = t0 ∧ t1
< b0, σ >→ t0 < b1, σ >→ t1< b0 or b1, σ >→ t
t = t0 ∨ t1
-
Evaluación de and optimizada
Implementación habitual
< b0, σ >→ false< b0 and b1, σ >→ false
< b0, σ >→ true < b1, σ >→ false< b0 and b1, σ >→ false
< b0, σ >→ true < b1, σ >→ true< b0 and b1, σ >→ true
-
Ejecución de instrucciones (I)
Skip
< skip, σ >→ σ
Asignación
< a, σ >→ m< X := a, σ >→ σ[X ← m]
Secuencia< c0, σ >→ σ′′ < c1, σ′′ >→ σ′
< c0; c1, σ >→ σ′
-
Ejecución de instrucciones (I)
Skip
< skip, σ >→ σ
Asignación
< a, σ >→ m< X := a, σ >→ σ[X ← m]
Secuencia< c0, σ >→ σ′′ < c1, σ′′ >→ σ′
< c0; c1, σ >→ σ′
-
Ejecución de instrucciones (I)
Skip
< skip, σ >→ σ
Asignación
< a, σ >→ m< X := a, σ >→ σ[X ← m]
Secuencia< c0, σ >→ σ′′ < c1, σ′′ >→ σ′
< c0; c1, σ >→ σ′
-
Ejecución de instrucciones (II)
If< b, σ >→ true < c0, σ >→ σ′< if b then c0 else c1 fi, σ >→ σ′
< b, σ >→ false < c1, σ >→ σ′< if b then c0 else c1 fi, σ >→ σ′
While< 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 < c0, σ >→ σ′< if b then c0 else c1 fi, σ >→ σ′
< b, σ >→ false < c1, σ >→ σ′< if b then c0 else c1 fi, σ >→ σ′
While< 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 porvalores concretos.Las derivaciones representan ejecuciones de lasinstrucciones o evaluaciones de las expresiones.Ejemplo. a ≡ (X + 5) + (7 + 9) y σ0 = {X ← 0}¿< a, σ0 >?
< X , σ0 >→ 0 < 5, σ0 >→ 5< (X + 5), σ0 >→ 5
< 7, σ0 >→ 7 < 9, σ0 >→ 9< (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 dox := x * 2;
done
-
Relaciones de equivalencia
a0 ∼ a1 iff(∀n ∈ N , ∀σ ∈ Σ, < a0, σ >→ n⇐⇒< a1, σ >→ n)b0 ∼ b1 iff(∀t∀σ ∈ Σ, < b0, σ >→ t ⇐⇒< b1, σ >→ t)c0 ∼ c1 iff(∀σ, σ′ ∈ Σ, < c0, σ >→ σ′ ⇐⇒< c1, σ >→ σ′)
-
Prueba simple
ProposiciónSea w ≡ while b do c done con b ∈ Bexp, c ∈ Commentonces:
w ∼ if b then c; w else skip fiDemostració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 demostrarque P(n) es cierto para todos los números naturales essuficiente con demostrar que:
P(0) es cierto.Si P(m) es cierto, entonces también lo es P(m+1), paracualquier 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 paralos números naturales.
P(n) ⇐⇒n∑
i=1
(2i − 1) = n2
-
Inducción estructural
¿ Cómo demostramos que la evaluación de expresionesaritmé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 lasexpresiones 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 a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 + a1).Para todas la expresiones aritméticas a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 − a1).Para todas la expresiones aritméticas a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 × a1).
-
Inducción estructural
¿ Cómo demostramos que la evaluación de expresionesaritmé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 lasexpresiones 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 a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 + a1).Para todas la expresiones aritméticas a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 − a1).Para todas la expresiones aritméticas a0, a1, si P(a0) y P(a1)se cumplen, entonces también se cumple P(a0 × a1).
-
Inducción estructural cont.
(∀m ∈ N.P(m))& (∀X ∈ Loc.P(X ))& (∀a0,a1 ∈ Aexp.P(a0) y P(a1)⇒ P(a0 + a1))& (∀a0,a1 ∈ Aexp.P(a0) y P(a1)⇒ P(a0 − a1))& (∀a0,a1 ∈ Aexp.P(a0) y P(a1)⇒ P(a0 ∗ a1))⇒ ∀a ∈ Aexp.P(a)
-
Inducción estructural cont.
Proposición Para toda expresión aritmética a y números m y m′
< a, σ >→ m & < a, σ >→ m′ ⇒ m = m′
Demostración
-
Inducción bien fundada
Las anteriores son casos particulares.
Relación bien fundada Es una relación binaria ≺ sobre unconjunto A tal que no hay cadenas descendientesinfinitas · · · ≺ ai ≺ · · · ≺ a1 ≺ a0Si a ≺ b decimos que a es un predecesor de b.
Es irreflexiva. 6 ∃a/a ≺ a
a � b ⇐⇒ a = b o a ≺ bProposición Sea ≺ una relación binaria en el conjunto A. La
relacion ≺ está bien fundada iff todos lossubconjuntos no vacíos Q de A tienen un elementominimal, i.e. un elemento m tal que
m ∈ Q&∀b ≺ m.b 6∈ Q
-
Inducción bien fundada
Las anteriores son casos particulares.
Relación bien fundada Es una relación binaria ≺ sobre unconjunto A tal que no hay cadenas descendientesinfinitas · · · ≺ ai ≺ · · · ≺ a1 ≺ a0Si a ≺ b decimos que a es un predecesor de b.
Es irreflexiva. 6 ∃a/a ≺ a
a � b ⇐⇒ a = b o a ≺ bProposición Sea ≺ una relación binaria en el conjunto A. La
relacion ≺ está bien fundada iff todos lossubconjuntos no vacíos Q de A tienen un elementominimal, i.e. un elemento m tal que
m ∈ Q&∀b ≺ m.b 6∈ Q
-
Inducción bien fundada
Las anteriores son casos particulares.
Relación bien fundada Es una relación binaria ≺ sobre unconjunto A tal que no hay cadenas descendientesinfinitas · · · ≺ ai ≺ · · · ≺ a1 ≺ a0Si a ≺ b decimos que a es un predecesor de b.
Es irreflexiva. 6 ∃a/a ≺ a
a � b ⇐⇒ a = b o a ≺ bProposición Sea ≺ una relación binaria en el conjunto A. La
relacion ≺ está bien fundada iff todos lossubconjuntos no vacíos Q de A tienen un elementominimal, i.e. un elemento m tal que
m ∈ Q&∀b ≺ m.b 6∈ Q
-
Inducción bien fundada (cont.)
Demostración
≺ está bien fundada⇐ m ∈ Q&∀b ≺ m.b 6∈ Q
Supongamos que todo conjunto no vacio de A tiene un elementominimal. Si ... ≺ ai ≺ ... ≺ a1 ≺ a0 es una cadena infinitadescendente, entonces el conjunto Q = {ai | i ∈ w} sería no vacíosin un elemento minimal. Por lo tanto ≺ está bien fundada.
≺ está bien fundada⇒ m ∈ Q&∀b ≺ m.b 6∈ Q
Suponer que Q es un subconjunto no vacío de A. Construimos unacadena de elementos de esta forma: tomamos un elemento a0 deQ. Inductivamente, asumimos que hemos construido en Q unacadena de elememntos an ≺ ... ≺ a0. Si no existe un b ∈ Q t.q.b ≺ an parar la construcción. En caso contrario tomar an+1 = b.Como ≺ es bien fundada la cadena ... ≺ ai ≺ ... ≺ a1... ≺ a0 nopuede ser infinita. Si es finita, de la forma an ≺ ... ≺ a0 con∀b ≺ an.b 6∈ Q. Tomar como elemento minimal an.
-
El principio de Inducción bien fundada
Sea ≺ una relacion bien fundada en un conjunto A. Sea Puna propiedad. Entonces ∀a ∈ A.P(a) iff:
∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a))
PruebaLa prueba se basa en la observación de que cualquiersubconjunto no vacío Q de un conjunto A con una relaciónbien fundada ≺ tiene un elemento minimal.
⇒Trivial⇐Asumimos ∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a)) y producimos unacontradicción suponiendo que ¬P(a) para algún a ∈ A.Entonces, tiene que existir un elemento minimal m para elconjunto {a ∈ A | ¬P(a)}. Pero entonces ¬P(m) y sinembargo ∀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 Puna propiedad. Entonces ∀a ∈ A.P(a) iff:
∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a))
PruebaLa prueba se basa en la observación de que cualquiersubconjunto no vacío Q de un conjunto A con una relaciónbien fundada ≺ tiene un elemento minimal.
⇒Trivial⇐Asumimos ∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a)) y producimos unacontradicción suponiendo que ¬P(a) para algún a ∈ A.Entonces, tiene que existir un elemento minimal m para elconjunto {a ∈ A | ¬P(a)}. Pero entonces ¬P(m) y sinembargo ∀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 Puna propiedad. Entonces ∀a ∈ A.P(a) iff:
∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a))
PruebaLa prueba se basa en la observación de que cualquiersubconjunto no vacío Q de un conjunto A con una relaciónbien fundada ≺ tiene un elemento minimal.
⇒Trivial⇐Asumimos ∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a)) y producimos unacontradicción suponiendo que ¬P(a) para algún a ∈ A.Entonces, tiene que existir un elemento minimal m para elconjunto {a ∈ A | ¬P(a)}. Pero entonces ¬P(m) y sinembargo ∀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 Puna propiedad. Entonces ∀a ∈ A.P(a) iff:
∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a))
PruebaLa prueba se basa en la observación de que cualquiersubconjunto no vacío Q de un conjunto A con una relaciónbien fundada ≺ tiene un elemento minimal.
⇒Trivial⇐Asumimos ∀a ∈ A.([∀b ≺ a.P(b)]⇒ P(a)) y producimos unacontradicción suponiendo que ¬P(a) para algún a ∈ A.Entonces, tiene que existir un elemento minimal m para elconjunto {a ∈ A | ¬P(a)}. Pero entonces ¬P(m) y sinembargo ∀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 → σ′
-
Ejercicio
Algoritmo de Euclides (máximo común divisor)Euclid ≡while (not (M = N)) do
if (M → σ′
-
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) 6= σ(M) o σ′(N) 6= σ(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) 6= σ(M) o σ′(N) 6= σ(N))