Está en la página 1de 4

Metodologı́a de la Programación – 16-03-2015 – g01B – Tema 3: Verificación formal de programas – Enunciado 1

Metodologı́a de la Programación
Grado en Ingenierı́a Informática de Gestión y Sistemas de Información
Escuela de Ingenierı́a de Bilbao (UPV/EHU)
Departamento de Lenguajes y Sistemas Informáticos
Curso: 1o
Curso académico: 2014-2015
Grupo 01 – Examen B
Tema 3: Verificación formal de programas
2 puntos
16-03-2015

Enunciado

Última actualización: 27 - 02 - 2023

Índice
1 Verificación formal de un programa iterativo (2 puntos) 1

Lista de figuras
1 Programa a verificar, definiciones de ϕ, IN V , E y ψ y definiciones de los predicados utilizados. 3
2 Propiedad que cumplen dos elementos x e y cualesquiera que pertenecen al conjunto {0, 1}. 3

Lista de tablas
1 Abreviaciones que se recomienda utilizar. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Denominaciones de las letras griegas utilizadas en el enunciado. . . . . . . . . . . . . . . . 4
3 Puntuación por apartados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

****************************************

1 Verificación formal de un programa iterativo (2 puntos)


Verificar, utilizando el Cálculo de Hoare, la corrección total del programa que se muestra en la figura 1
(página 3), con respecto a la precondición ϕ, la postcondición ψ, el invariante IN V y la expresión cota E
que se muestran en esa misma figura. Según la especificación pre-post formalizada mediante las fórmulas ϕ
y ψ, dados dos vectores no vacı́os de enteros A(1..n) y B(1..n) que solo contienen ceros y unos, el programa
deberı́a decidir en la variable booleana w si en todas las posiciones el valor de A(1..n) es distinto al valor de
B(1..n).

Durante el proceso de verificación, al analizar el punto (IV ) de la regla del While, es necesario utilizar
la propiedad matemática (P rop) de la figura 2 (página 3), que dice que, si se tienen dos valores enteros x
Metodologı́a de la Programación – 16-03-2015 – g01B – Tema 3: Verificación formal de programas – Enunciado 2

e y donde tanto x como y solo pueden ser o cero o uno, entonces la suma de x e y será 1 si y solo si x e y
son distintos, es decir, que el que la suma de x e y sea 1 es equivalente a decir que x e y son distintos. Por
ejemplo, si x = 1 e y = 0, tenemos que son distintos y la suma es 1. Si x = 1 e y = 1, tenemos que son
iguales y la suma no es 1. Si x = 0 e y = 0, tenemos que son iguales y la suma no es 1. Por último, si x = 0
e y = 1, tenemos que son distintos y la suma es 1.

En la tabla 1 (página 3) se recogen las abreviaciones que se recomienda utilizar durante el proceso de
verificación. En la tabla 2 (página 4) se recopilan las denominaciones de las letras griegas utilizadas en este
enunciado. Finalmente, en la tabla 3 (página 4) se muestra la puntuación de los distintos pasos o apartados
que han de ser considerados en el proceso de verificación.

Teniendo en cuenta las abreviaciones de la tabla 1, la propiedad (P rop) de la figura 2 expresa que cada
expresión lógica γ(`) tiene el mismo valor que la correspondiente expresión lógica σ(`), siempre que se
garantice que A(`) y B(`) pertenecen al conjunto {0, 1}.

Ejemplo 1.1. (Para el programa de la figura 1 de la página 3) Sean los siguientes vectores A(1.. 8) y
B(1.. 8):

A(1..8) 1 0 0 0 1 0 1 0
1 2 3 4 5 6 7 8
B(1..8) 0 1 1 1 0 1 0 1
1 2 3 4 5 6 7 8
Para esos valores de A(1.. 8) y B(1.. 8), el programa de la figura 1 devolverı́a el valor booleano T rue
en w, porque cada elemento de A(1.. 8) es distinto al elemento que ocupa la misma posición de B(1.. 8).

En cambio, si los vectores A(1.. 8) y B(1.. 8) son los siguientes:

A(1..8) 1 0 0 0 1 0 1 0
1 2 3 4 5 6 7 8
B(1..8) 0 1 0 1 1 0 0 1
1 2 3 4 5 6 7 8
el programa de la figura 1 devolverı́a el valor booleano F alse en w, porque al menos un elemento de
A(1.. 8) es igual al elemento que ocupa la misma posición de B(1.. 8). En concreto, se cumple para A(3),
A(5) y A(6). Es decir, A(3) = B(3), A(5) = B(5) y A(6) = B(6).
Metodologı́a de la Programación – 16-03-2015 – g01B – Tema 3: Verificación formal de programas – Enunciado 3

Programa:

{ϕ}
w := True;
while {IN V } {E} i 6= n + 1 and w loop
w := (A(i) + B(i) = 1);
i := i + 1;
end loop;
{ψ}

Definición de ϕ, IN V , E y ψ:

ϕ ≡ n ≥ 1 ∧ bits(A(1..n)) ∧ bits(B(1..n)) ∧ i = 1

IN V ≡ n ≥ 1 ∧ bits(A(1..n)) ∧ bits(B(1..n)) ∧ (1 ≤ i ≤ n + 1) ∧
(w ↔ todas las sumas uno(A(1..n), B(1..n), i − 1))

E= n+1−i

ψ ≡ w ↔ ∀k(1 ≤ k ≤ n → A(k) 6= B(k))

Definición de los predicados utilizados:

bits(H(1..r)) ≡ ∀k(1 ≤ k ≤ r → (H(k) = 0 ∨ H(k) = 1))

todas las sumas uno(F (1..r), G(1..r), pos) ≡ ∀k(1 ≤ k ≤ pos → F (k) + G(k) = 1)

Figura 1: Programa a verificar, definiciones de ϕ, IN V , E y ψ y definiciones de los predicados utilizados.

Propiedad (P rop):

∀x, y(((0 ≤ x ≤ 1) ∧ (0 ≤ y ≤ 1)) → ((x + y = 1) ↔ (x 6= y)))

Figura 2: Propiedad que cumplen dos elementos x e y cualesquiera que pertenecen al conjunto {0, 1}.

Abreviaciones recomendadas:

λ ≡ n ≥ 1 ∧ bits(A(1..n)) ∧ bits(B(1..n))

B ≡ i 6= n + 1 and w

γ(`) ≡ A(`) + B(`) = 1

σ(`) ≡ A(`) 6= B(`)

µ(`) ≡ todas las sumas uno(A(1..n), B(1..n), `)

Tabla 1: Abreviaciones que se recomienda utilizar.


Metodologı́a de la Programación – 16-03-2015 – g01B – Tema 3: Verificación formal de programas – Enunciado 4

Letras griegas utilizadas en el enunciado:

ϕ : fi ψ : psi γ : gamma σ : sigma µ : mu λ : lambda

Tabla 2: Denominaciones de las letras griegas utilizadas en el enunciado.

Puntuación:

(a) Partición inicial y esquema: 0,050


(b) Verificación de la asignación inicial: 0,150
(Cálculo de fórmulas: 0,050. Comprobación de la implicación: 0,100)
(c) Punto (I) de la regla del while: 0,005
(d) Punto (II) de la regla del while: 0,020
(e) Punto (III) de la regla del while: 0,750
(Cálculo de fórmulas: 0,150. Comprobación de la implicación: 0,600)
(f) Punto (IV ) de la regla del while: 0,600
(Casos i = n + 1: 0,250. Caso i 6= n + 1: 0,350)
(g) Punto (V ) de la regla del while: 0,075
(h) Punto (V I) de la regla del while: 0,200
(Cálculo de fórmulas: 0,050. Comprobación de la implicación: 0,150)
(i) Demostración formal de la corrección: 0,150

 Cuando no se explique por qué se cumple una implicación, se contará cero. Es decir,
indicar que una implicación sı́ se cumple sin razonar por qué se cumple cuenta 0.
 Para aprobar el ejercicio es obligatorio obtener al menos la mitad de la puntuación
tanto del apartado (e) como del apartado (f) (puntos (III) y (IV ) de la regla del while).

Tabla 3: Puntuación por apartados.

También podría gustarte