tecnología de la programación - quegrande.org
TRANSCRIPT
![Page 1: Tecnología de la Programación - QueGrande.org](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/35.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/36.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/37.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/38.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/39.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/40.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/41.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/42.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/43.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/44.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/45.jpg)
Terminación
Si w ≡ while true do skip,¿ ∀σ, ∃σ′t .q. < w , σ >→ σ′ ?
![Page 46: Tecnología de la Programación - QueGrande.org](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/46.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/47.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/48.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/49.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/50.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/51.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/52.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/53.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/54.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/55.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/56.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/57.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/58.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/59.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/60.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/61.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/62.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/63.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/64.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/65.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/66.jpg)
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](https://reader031.vdocuments.pub/reader031/viewer/2022021010/6203d5b7cbae1476794e389f/html5/thumbnails/67.jpg)
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))