





Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
El proceso de transformación del bucle do while débil de dijkstra, incluyendo la regla de transformación y ejemplos detallados. Se explica cómo calcular la precondición más débil (wp) para diferentes casos, donde se analiza la iteración k y se obtienen las expresiones hk(r) que permiten determinar wp(do, r). Los ejemplos abarcan cálculos de wp para diferentes condiciones y variables, mostrando el desarrollo paso a paso. Este material podría ser útil para estudiantes universitarios que estudien temas relacionados con la lógica de programación, la semántica formal y los métodos formales en informática.
Tipo: Resúmenes
1 / 9
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






Regla de transformación del DO WHILE:
k≥
k
k
k- 1
Recordemos:
1 .- Calcular la precondición más débil, WP (DO, R) Donde:
DO: do i > 3 ⇒ i:= i – 3 od
R: i = 3
Solución:
0
n
0
(R) = i = 3 ∧ (⌐(i > 3 ))
0
(R) = i = 3 ∧ (i <= 3 )
0
(R) = i = 3 ∧ (i < 3 ∨ i = 3)
0
(R) = i = 3
k
k- 1
0
1
1 - 1
(R)) ∨ i = 3
1
(R) = WP (IF, i = 3 ) ∨ i = 3
1
(R) = (i > 3 ) ∧ i > 3 ⇒WP(i:= i – 3 , i = 3 ) ∨ i = 3
1
(R) = WP(i:= i – 3 , i = 3 ) ∨ i = 3
1
(R) = i - 3 = 3 ∨ i = 3
4
(R) = WP(i:= i – 3 , i = 12 ∨ i = 9 ∨ i = 6 ∨ i = 3 ) ∨ i = 3
4
(R) = i - 3 = 12 ∨ i- 3 = 9 ∨ i- 3 = 6 ∨ i- 3 = 3 ∨ i = 3
4
(R) = i = 15 ∨ i = 12 ∨ i = 9 ∨ i = 6 ∨ i = 3
Por lo tanto WP (DO, R) = H 4 (R) = i = 15 ∨ i = 12 ∨ i = 9 ∨ i = 6 ∨ i = 3
k≥
k
k
*(R) = i = 3 (k+1)
2 .- Calcular la precondición más débil, WP (DO, R) Donde:
DO: do i < n ⇒ i:= i + 1; s = s* 2 od
R: s = 2
i
Solución:
0
n
0
(R) = s = 2
i ∧ (⌐(i < n))
0
(R) = s = 2
i ∧ (i >= n)
k
k- 1
0
1
(R) = WP (IF, s = 2
i ∧ (i >= n)) ∨ s = 2
i ∧ (i >= n)
1
(R) = i < n ∧ i < n ⇒ WP(i:= i + 1; s = s* 2 , s = 2
i ∧ (i >= n)) ∨ s = 2
i ∧ (i >= n)
1
(R) = WP(i:= i + 1; s = s* 2 , s = 2
i ∧ (i >= n)) ∨ s = 2
i ∧ (i >= n)
1
(R) = WP(i:= i + 1 , WP(s = s* 2 , s = 2
i ∧ (i >= n))) ∨ s = 2
i ∧ (i >= n)
1
(R) = WP(i:= i + 1 , s * 2= 2
i ∧ (i >= n)) ∨ s = 2
i ∧ (i >= n)
1
(R) = s * 2 = 2
i+ ∧ (i + 1 >= n) ∨ s = 2
i ∧ (i >= n)
1
(R) = s * 2 = 2
i+ ∧ (i >= n- 1 ) ∨ s = 2
i ∧ (i >= n)
1
(R) = (s = 2
i ∧ (i >= n- 1 )) ∨ (s = 2
i ∧ (i >= n))
1
(R) = (s = 2
i ) ∧ (i >= n- 1 ∨ i >= n)
3 .- Calcular la precondición más débil, WP (DO, R) Donde:
DO: do y ≥ 0 ⇒ r:= r – y; q = q + 1 od
R: x = r + (y * q) ∧ y > r
Solución:
0
(R) = x = r + (y * q) ∧ y > r ∧ (⌐(y ≥ 0 ))
0
(R) = (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
0
0
1
(R) = WP (IF, (x = r + (y * q) ∧ y > r ∧ y < 0 )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = y ≥ 0 ∧ y ≥ 0 ⇒ WP(r:= r – y; q = q + 1 , (x = r + (y * q) ∧ y > r ∧ y < 0 )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = WP(r:= r – y; q = q + 1 , (x = r + (y * q) ∧ y > r ∧ y < 0 )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = WP(r:= r – y, WP( q = q + 1 , (x = r + (y * q) ∧ y > r ∧ y < 0 ))) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = WP(r:= r – y, (x = r + (y * (q+1)) ∧ y > r ∧ y < 0 )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = (x = (r - y) + (y * (q+1)) ∧ y > (r - y) ∧ y < 0 ) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = (x = r - y + y * q+ y ∧ y + y > r ∧ y < 0 ) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = (x = r + (y * q) ∧ 2y > r ∧ y < 0 ) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = (x = r + (y * q) ∧ 2y > r ∧ y < 0 ) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
1
(R) = (x = r + (y * q)∧ y < 0 ) ∧ (2y > r ∨ y > r )
2
1
0
2
(R) = WP (IF, (x = r + (y * q)∧ y < 0 ) ∧ (2y > r ∨ y > r )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = y ≥ 0 ∧ y ≥ 0 ⇒ WP(r:= r – y; q = q + 1 , (x = r + (y * q)∧ y < 0 ) ∧ (2y > r ∨ y > r )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = WP(r:= r – y; q = q + 1 , (x = r + (y * q)∧ y < 0 ) ∧ (2y > r ∨ y > r )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = WP(r:= r – y, WP( q = q + 1 , (x = r + (y * q)∧ y < 0 ) ∧ (2y > r ∨ y > r ))) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = WP(r:= r – y, (x = r + (y * (q+1))∧ y < 0 ) ∧ (2y > r ∨ y > r )) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = (x = (r-y)+ (y * (q+1))∧ y < 0 ) ∧ (2y > r-y ∨ y > r-y ) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = (x = r + (y * q)∧ y < 0 ) ∧ (2y+y > r ∨ y+y > r) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = (x = r + (y * q)∧ y < 0 ) ∧ (3y > r ∨ 2y > r) ∨ (x = r + (y * q) ∧ y > r ∧ y < 0 )
2
(R) = (x = r + (y * q)∧ y < 0 ) ∧ (3y > r ∨ 2y > r ∨ y > r )
Por lo tanto WP(DO,R) = H 2
(R) = (x = r + (y * q)∧ y < 0 ) ∧ (3y > r ∨ 2y > r ∨ y > r )