tecnología de la programación - quegrande.org

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

Upload: others

Post on 09-Feb-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecnología de la Programación - QueGrande.org

Tecnología de la ProgramaciónSemántica Operacional

David Cabrero Souto

Facultad de InformáticaUniversidade da Coruña

Curso 2007/2008

Page 2: Tecnología de la Programación - QueGrande.org

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.

Page 3: Tecnología de la Programación - QueGrande.org

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.

Page 4: Tecnología de la Programación - QueGrande.org

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.

Page 5: Tecnología de la Programación - QueGrande.org

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.

Page 6: Tecnología de la Programación - QueGrande.org

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.

Page 7: Tecnología de la Programación - QueGrande.org

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.

Page 8: Tecnología de la Programación - QueGrande.org

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.

Page 9: Tecnología de la Programación - QueGrande.org

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.

Page 10: Tecnología de la Programación - QueGrande.org

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

Page 11: Tecnología de la Programación - QueGrande.org

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.

Page 12: Tecnología de la Programación - QueGrande.org

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

Page 13: Tecnología de la Programación - QueGrande.org

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

Page 14: Tecnología de la Programación - QueGrande.org

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

Page 15: Tecnología de la Programación - QueGrande.org

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

Page 16: Tecnología de la Programación - QueGrande.org

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

Page 17: Tecnología de la Programación - QueGrande.org

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

Page 18: Tecnología de la Programación - QueGrande.org

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

Page 19: Tecnología de la Programación - QueGrande.org

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

Page 20: Tecnología de la Programación - QueGrande.org

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

Page 21: Tecnología de la Programación - QueGrande.org

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

Page 22: Tecnología de la Programación - QueGrande.org

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

Page 23: Tecnología de la Programación - QueGrande.org

IMP- Definición (Aexp)

Expresiones aritméticasAexp ::= n

| X| a0 + a1| a0 − a1| a0 ∗ a1

Page 24: Tecnología de la Programación - QueGrande.org

IMP- Definición (Bexp)

Expresiones booleanasBexp ::= true

| false| a0 = a1| a0 <= a1| not b| b0 and b1| b0 or b1

Page 25: Tecnología de la Programación - QueGrande.org

IMP- Definición (Comm)

InstruccionesComm ::= skip

| X := a| c0; c1| if b then c0 else c1 fi| while b do c done

Page 26: Tecnología de la Programación - QueGrande.org

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 ]

Page 27: Tecnología de la Programación - QueGrande.org

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, σ >→ σ′

Page 28: Tecnología de la Programación - QueGrande.org

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.

Page 29: Tecnología de la Programación - QueGrande.org

Evaluación de expresiones aritméticas

Constantes

< n, σ >→ n

Variables

< 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

Page 30: Tecnología de la Programación - QueGrande.org

Evaluación de expresiones aritméticas

Constantes

< n, σ >→ n

Variables

< 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

Page 31: Tecnología de la Programación - QueGrande.org

Evaluación de expresiones aritméticas

Constantes

< n, σ >→ n

Variables

< 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

Page 32: Tecnología de la Programación - QueGrande.org

Evaluación de expresiones aritméticas

Constantes

< n, σ >→ n

Variables

< 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

Page 33: Tecnología de la Programación - QueGrande.org

Evaluación de expresiones aritméticas

Constantes

< n, σ >→ n

Variables

< 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

Page 34: Tecnología de la Programación - QueGrande.org

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 <= a1, σ >→ true

n <= m

< a0, σ >→ n < a1, σ >→ m< a0 <= a1, σ >→ false

n > m

Page 35: Tecnología de la Programación - QueGrande.org

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 <= a1, σ >→ true

n <= m

< a0, σ >→ n < a1, σ >→ m< a0 <= a1, σ >→ false

n > m

Page 36: Tecnología de la Programación - QueGrande.org

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

Page 37: Tecnología de la Programación - QueGrande.org

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

Page 38: Tecnología de la Programación - QueGrande.org

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

Page 39: Tecnología de la Programación - QueGrande.org

Ejecución de instrucciones (I)

Skip

< skip, σ >→ σ

Asignación

< a, σ >→ m< X := a, σ >→ σ[X ← m]

Secuencia< c0, σ >→ σ′′ < c1, σ

′′ >→ σ′

< c0; c1, σ >→ σ′

Page 40: Tecnología de la Programación - QueGrande.org

Ejecución de instrucciones (I)

Skip

< skip, σ >→ σ

Asignación

< a, σ >→ m< X := a, σ >→ σ[X ← m]

Secuencia< c0, σ >→ σ′′ < c1, σ

′′ >→ σ′

< c0; c1, σ >→ σ′

Page 41: Tecnología de la Programación - QueGrande.org

Ejecución de instrucciones (I)

Skip

< skip, σ >→ σ

Asignación

< a, σ >→ m< X := a, σ >→ σ[X ← m]

Secuencia< c0, σ >→ σ′′ < c1, σ

′′ >→ σ′

< c0; c1, σ >→ σ′

Page 42: Tecnología de la Programación - QueGrande.org

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, σ >→ σ′

Page 43: Tecnología de la Programación - QueGrande.org

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, σ >→ σ′

Page 44: Tecnología de la Programación - QueGrande.org

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 >

Page 45: Tecnología de la Programación - QueGrande.org

Terminación

Si w ≡ while true do skip,¿ ∀σ, ∃σ′t .q. < w , σ >→ σ′ ?

Page 46: Tecnología de la Programación - QueGrande.org

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

Page 47: Tecnología de la Programación - QueGrande.org

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, σ >→ σ′)

Page 48: Tecnología de la Programación - QueGrande.org

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.

Page 49: Tecnología de la Programación - QueGrande.org

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

Page 50: Tecnología de la Programación - QueGrande.org

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).

Page 51: Tecnología de la Programación - QueGrande.org

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).

Page 52: Tecnología de la Programación - QueGrande.org

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)

Page 53: Tecnología de la Programación - QueGrande.org

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

Page 54: Tecnología de la Programación - QueGrande.org

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 ≺ a0

Si 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

Page 55: Tecnología de la Programación - QueGrande.org

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 ≺ a0

Si 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

Page 56: Tecnología de la Programación - QueGrande.org

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 ≺ a0

Si 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

Page 57: Tecnología de la Programación - QueGrande.org

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.

Page 58: Tecnología de la Programación - QueGrande.org

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.

Page 59: Tecnología de la Programación - QueGrande.org

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.

Page 60: Tecnología de la Programación - QueGrande.org

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.

Page 61: Tecnología de la Programación - QueGrande.org

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.

Page 62: Tecnología de la Programación - QueGrande.org

Ejemplos

Inducción matemática

n ≺ m ⇐⇒ m = n + 1

Inducción estructural

a ≺ b ⇐⇒ a es una subexpresión directa de b

Page 63: Tecnología de la Programación - QueGrande.org

Ejemplos

Inducción matemática

n ≺ m ⇐⇒ m = n + 1

Inducción estructural

a ≺ b ⇐⇒ a es una subexpresión directa de b

Page 64: Tecnología de la Programación - QueGrande.org

Ejercicio

Algoritmo de Euclides (máximo común divisor)Euclid ≡while (not (M = N)) do

if (M <= N) thenN := N - M;

elseM := M - N;

fidone

Teorema (Terminación). Para todos los estados σ

σ(M) ≥ 1 & σ(N) ≥ 1⇒ ∃σ′. < Euclid , σ >→ σ′

Page 65: Tecnología de la Programación - QueGrande.org

Ejercicio

Algoritmo de Euclides (máximo común divisor)Euclid ≡while (not (M = N)) do

if (M <= N) thenN := N - M;

elseM := M - N;

fidone

Teorema (Terminación). Para todos los estados σ

σ(M) ≥ 1 & σ(N) ≥ 1⇒ ∃σ′. < Euclid , σ >→ σ′

Page 66: Tecnología de la Programación - QueGrande.org

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))

Page 67: Tecnología de la Programación - QueGrande.org

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))