Está en la página 1de 103

Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

CI2611 - Algoritmos y Estructuras I


Iteración

Sergio Carrillo
14-11315@usb.ve

Universidad Simón Bolívar

Mayo de 2021

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 1 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Tabla de Contenido

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 2 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 3 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Demostrar la correctitud del programa

{H : N ≥ 0}
fact, i = 1, N;

{P: fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N}
{Cota t: i}
do i > 1 → fact, i:= fact*i, i−1
od

{Q: fact = ( i | 1 ≤ i ≤ N : i)}

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 4 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 5 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Pruebas para la Iteración

i {H}S{P}, el programa entra al ciclo.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 6 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Pruebas para la Iteración

i {H}S{P}, el programa entra al ciclo.


ii {P ∧ Bi }Si {P}, el invariante es cierto en cada iteración.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 6 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Pruebas para la Iteración

i {H}S{P}, el programa entra al ciclo.


ii {P ∧ Bi }Si {P}, el invariante es cierto en cada iteración.
iii P ∧ ¬B0 ∧ ¬B1 ∧ · · · ∧ ¬Bn ⇒ Q, la postcondición es verdad al salir del ciclo.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 6 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Pruebas para la Iteración

i {H}S{P}, el programa entra al ciclo.


ii {P ∧ Bi }Si {P}, el invariante es cierto en cada iteración.
iii P ∧ ¬B0 ∧ ¬B1 ∧ · · · ∧ ¬Bn ⇒ Q, la postcondición es verdad al salir del ciclo.
iv P ∧ B0 ∨ B1 ∨ · · · ∨ Bn ⇒ t ≥ 0, la cota está acotada.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 6 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Pruebas para la Iteración

i {H}S{P}, el programa entra al ciclo.


ii {P ∧ Bi }Si {P}, el invariante es cierto en cada iteración.
iii P ∧ ¬B0 ∧ ¬B1 ∧ · · · ∧ ¬Bn ⇒ Q, la postcondición es verdad al salir del ciclo.
iv P ∧ B0 ∨ B1 ∨ · · · ∨ Bn ⇒ t ≥ 0, la cota está acotada.
v {P ∧ Bi ∧ t = c}Si {t < c}, la cota es estrictamente decreciente.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 6 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 7 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 8 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

1 = ( k | false : k) ∧ 0 ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

1 = ( k | false : k) ∧ 0 ≤ N
≡ ⟨ Rango Vacío, a = a ≡ true, Simetría ∧⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

1 = ( k | false : k) ∧ 0 ≤ N
≡ ⟨ Rango Vacío, a = a ≡ true, Simetría ∧⟩
0 ≤ N ∧ true

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

1 = ( k | false : k) ∧ 0 ≤ N
≡ ⟨ Rango Vacío, a = a ≡ true, Simetría ∧⟩
0 ≤ N ∧ true
⇐ ⟨ Neutro ∧, a ≤ b ≡ b ≥ a, p ⇒ p ⟩
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 0


N ≥ 0 ⇒ (fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= 1, N]
≡ ⟨ S.T ⟩

1 = ( k | N < k ≤ N : k) ∧ 0 ≤ N ≤ N
≡ ⟨ a < b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ a ≡ true ⟩

1 = ( k | 1 < N ≤ N : k) ∧ 0 ≤ N ∧ true
≡ ⟨ a < b ≤ a ≡ false, Neutro ∧⟩

1 = ( k | false : k) ∧ 0 ≤ N
≡ ⟨ Rango Vacío, a = a ≡ true, Simetría ∧⟩
0 ≤ N ∧ true
⇐ ⟨ Neutro ∧, a ≤ b ≡ b ≥ a, p ⇒ p ⟩
N ≥ 0 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 9 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 10 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N
⇐ ⟨ a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ b ∧ b ≤ c ⇒ a ≤ c ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N
⇐ ⟨ a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ b ∧ b ≤ c ⇒ a ≤ c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i−1 ≤ i ∧ i ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N
⇐ ⟨ a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ b ∧ b ≤ c ⇒ a ≤ c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i−1 ≤ i ∧ i ≤ N
≡ ⟨ a−1 ≤ a ≡ true, Neutro ∧⟩
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒

(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:



(fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

fact*i = ( k | i−1 < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N)
≡ ⟨ Separación Rango/Término, c ⇒ 0, a = b ≡ a.c = b.c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ≤ N
⇐ ⟨ a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c, a ≤ b ∧ b ≤ c ⇒ a ≤ c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i−1 ≤ i ∧ i ≤ N
≡ ⟨ a−1 ≤ a ≡ true, Neutro ∧⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 11 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨ p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0+1 ≤ i ∧ 0 ≤ i ∧ i ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨ p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0+1 ≤ i ∧ 0 ≤ i ∧ i ≤ N
≡ ⟨ Aritmética, a ≤ b ≡ a < b ∨ a = b ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨ p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0+1 ≤ i ∧ 0 ≤ i ∧ i ≤ N
≡ ⟨ Aritmética, a ≤ b ≡ a < b ∨ a = b ⟩

fact= ( k | i < k ≤ N : k) ∧ (1 < i ∨ i = 1) ∧ 0 ≤ i ≤ N

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨ p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0+1 ≤ i ∧ 0 ≤ i ∧ i ≤ N
≡ ⟨ Aritmética, a ≤ b ≡ a < b ∨ a = b ⟩

fact= ( k | i < k ≤ N : k) ∧ (1 < i ∨ i = 1) ∧ 0 ≤ i ≤ N
⇐ ⟨ a < b ≡ b > a, Simetría ∧, p ⇒ p ∨ q ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 1 II


fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i−1 ∧ i ≤ N
⇐ ⟨ p ∧ q ⇒ p, a+c ≤ b ≡ a ≤ b−c ⟩

fact= ( k | i < k ≤ N : k) ∧ 0+1 ≤ i ∧ 0 ≤ i ∧ i ≤ N
≡ ⟨ Aritmética, a ≤ b ≡ a < b ∨ a = b ⟩

fact= ( k | i < k ≤ N : k) ∧ (1 < i ∨ i = 1) ∧ 0 ≤ i ≤ N
⇐ ⟨ a < b ≡ b > a, Simetría ∧, p ⇒ p ∨ q ⟩

fact= ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 12 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 13 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ N ∧ i ≤ 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ N ∧ i ≤ 1
⇒ ⟨ Simetría ∧, p ∧ q ⇒ p ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ N ∧ i ≤ 1
⇒ ⟨ Simetría ∧, p ∧ q ⇒ p ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ N ∧ i ≤ 1
⇒ ⟨ Simetría ∧, p ∧ q ⇒ p ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ 1
≡ ⟨ Lema 1: 0 ≤ i ∧ i ≤ 1 ⇒ i = 0 ∨ i = 1 ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 I


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1) ⇒

fact = ( i | 1 < i ≤ N : i)

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ ¬(i > 1)
≡ ⟨¬(i > 1) ≡ i ≤ 1, a ≤ b ≤ c ≡ a ≤ b ∧ b ≤ c ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ N ∧ i ≤ 1
⇒ ⟨ Simetría ∧, p ∧ q ⇒ p ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ∧ i ≤ 1
≡ ⟨ Lema 1: 0 ≤ i ∧ i ≤ 1 ⇒ i = 0 ∨ i = 1 ⟩

fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 14 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0

fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩

fact = ( k | 0 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)
≡ ⟨ a < b ≡ a+1 ≤ b ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩

fact = ( k | 1 ≤ k ≤ N : k)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩
∏ ∏
fact = ( k | 1 ≤ k ≤ N : k) fact = ( k | 1 < k ≤ N : k)*1
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩
∏ ∏
fact = ( k | 1 ≤ k ≤ N : k) fact = ( k | 1 < k ≤ N : k)*1
≡ ⟨ Renombramiento, ¬ocurre i ⟩ ≡ ⟨ Separación Rango/Término ⟩

fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩
∏ ∏
fact = ( k | 1 ≤ k ≤ N : k) fact = ( k | 1 < k ≤ N : k)*1
≡ ⟨ Renombramiento, ¬ocurre i ⟩ ≡ ⟨ Separación Rango/Término ⟩
∏ ∏
fact = ( i | 1 ≤ i ≤ N : i) fact = ( i | 1 ≤ i ≤ N : i)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩
∏ ∏
fact = ( k | 1 ≤ k ≤ N : k) fact = ( k | 1 < k ≤ N : k)*1
≡ ⟨ Renombramiento, ¬ocurre i ⟩ ≡ ⟨ Separación Rango/Término ⟩
∏ ∏
fact = ( i | 1 ≤ i ≤ N : i) fact = ( i | 1 ≤ i ≤ N : i)
≡ ⟨ Renombramiento, ¬ocurre i ⟩
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 2 II


fact = ( k | i < k ≤ N : k) ∧ (i = 0 ∨ i = 1)

Prueba por casos de i


Caso i = 0 Caso i = 1
∏ ∏
fact = ( k | i < k ≤ N : k) fact = ( k | i < k ≤ N : k)
≡ ⟨i = 0 ⟩ ≡ ⟨i = 1 ⟩
∏ ∏
fact = ( k | 0 < k ≤ N : k) fact = ( k | 1 < k ≤ N : k)

≡ ⟨ a < b ≡ a+1 ≤ b ⟩ ≡ ⟨ Neutro ⟩
∏ ∏
fact = ( k | 1 ≤ k ≤ N : k) fact = ( k | 1 < k ≤ N : k)*1
≡ ⟨ Renombramiento, ¬ocurre i ⟩ ≡ ⟨ Separación Rango/Término ⟩
∏ ∏
fact = ( i | 1 ≤ i ≤ N : i) fact = ( i | 1 ≤ i ≤ N : i)
≡ ⟨ Renombramiento, ¬ocurre i ⟩

fact = ( i | 1 ≤ i ≤ N : i)
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 15 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨ a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨ a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩
0 ≤ i ∧ (i < 0+1 ∨ i = 1)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩
0 ≤ i ∧ (i < 0+1 ∨ i = 1)
≡ ⟨a ≤ b ≡ a < b+1, p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨ a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩
0 ≤ i ∧ (i < 0+1 ∨ i = 1)
≡ ⟨ a ≤ b ≡ a < b+1, p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) ⟩
(0 ≤ i ∧ i ≤ 0) ∨ ( 0 ≤ i ∧ i = 1)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨ a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩
0 ≤ i ∧ (i < 0+1 ∨ i = 1)
≡ ⟨ a ≤ b ≡ a < b+1, p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) ⟩
(0 ≤ i ∧ i ≤ 0) ∨ ( 0 ≤ i ∧ i = 1)
⇒ ⟨ a ≤ b ∧ b ≤ a ≡ a = b, p ∧ q ⇒ p ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Lema 1

0 ≤ i ∧ i ≤ 1⇒ i = 0 ∨ i = 1

Prueba por debilitamiento:


0 ≤ i ∧ i ≤ 1
≡ ⟨ a ≤ b ≡ a < b ∨ a = b, Aritmética ⟩
0 ≤ i ∧ (i < 0+1 ∨ i = 1)
≡ ⟨ a ≤ b ≡ a < b+1, p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) ⟩
(0 ≤ i ∧ i ≤ 0) ∨ ( 0 ≤ i ∧ i = 1)
⇒ ⟨ a ≤ b ∧ b ≤ a ≡ a = b, p ∧ q ⇒ p ⟩
i = 0 ∨ i = 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 16 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 17 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩
i ≥ 2

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩
i ≥ 2
≡ ⟨ Neutro ∧, 2 ≥ 0 ≡ true ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩
i ≥ 2
≡ ⟨ Neutro ∧, 2 ≥ 0 ≡ true ⟩
i ≥ 2 ∧ 2 ≥ 0

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩
i ≥ 2
≡ ⟨ Neutro ∧, 2 ≥ 0 ≡ true ⟩
i ≥ 2 ∧ 2 ≥ 0
⇒ ⟨a ≥ b ∧ b ≥ c ⇒ a ≥ c ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 3


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1 ⇒ i ≥ 0

Prueba por debilitamiento:



fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i > 1
⇒ ⟨ a ≥ b ≡ a ≥ b+1, p ∧ q ⇒ p ⟩
i ≥ 2
≡ ⟨ Neutro ∧, 2 ≥ 0 ≡ true ⟩
i ≥ 2 ∧ 2 ≥ 0
⇒ ⟨a ≥ b ∧ b ≥ c ⇒ a ≥ c ⟩
i ≥ 0

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 18 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones
Prueba 0: {H}S{P}
Prueba 1: {P ∧ B0 }S0 {P}
Prueba 2: P ∧ ¬B0 ⇒ Q
Prueba 3: P ∧ B0 ⇒ t ≥ 0
Prueba 4: {P ∧ B0 ∧ t = C}S0 {t < C}

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 19 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩
i−1 < C

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩
i−1 < C
≡ ⟨ a ≤ b ≡ a−1 < b, a ≤ b ≡ a < b ∨ a = b ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩
i−1 < C
≡ ⟨ a ≤ b ≡ a−1 < b, a ≤ b ≡ a < b ∨ a = b ⟩
i < C ∨ i = C

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩
i−1 < C
≡ ⟨ a ≤ b ≡ a−1 < b, a ≤ b ≡ a < b ∨ a = b ⟩
i < C ∨ i = C
⇐ ⟨ p ⇒ p ∨ q, p ∧ q ⇒ p ⟩

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Prueba 4


fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C ⇒
(i < C)[fact, i:= fact*i, i−1]

Prueba por fortalecimiento:


(i < C)[fact, i:= fact*i, i−1]
≡ ⟨ S.T ⟩
i−1 < C
≡ ⟨ a ≤ b ≡ a−1 < b, a ≤ b ≡ a < b ∨ a = b ⟩
i < C ∨ i = C
⇐ ⟨ p ⇒ p ∨ q, p ∧ q ⇒ p ⟩

fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N ∧ i = C

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 20 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

1 Ejercicio

2 Pruebas para la Iteración

3 Demostraciones

4 Programa Anotado

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 21 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Programa Anotado

{H : N ≥ 0}
fact, i = 1, N;

{P: fact = ( k | i < k ≤ N : k) ∧ 0 ≤ i ≤ N, Prueba 0}
{Cota t: i}
do i > 1 → {P ∧ i > 1} fact, i:= fact*i, i−1 {P, Prueba 1}
od

{Q: fact = ( i | 1 ≤ i ≤ N : i), Prueba 2, termina: Prueba 3 ∧ Prueba 4}

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 22 / 23
Ejercicio Pruebas para la Iteración Demostraciones Programa Anotado Bibliografía

Bibliografía

Gries, D., & Schneider, F. B. (1993). A logical approach to discrete math.


Springer Science & Business Media.
Kaldewaij, A. (1990). Programming: the derivation of algorithms. Prentice-Hall,
Inc.
Meza, O., & Ravelo, J. (2000). Introducción a la programación. Departamento de
Computación y Tecnología de la Información, Universidad Simón Bolívar,
disponible vía www.ldc.usb.ve/meza.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Sergio Carrillo Universidad Simón Bolívar


CI2611 - Algoritmos y Estructuras I 23 / 23

También podría gustarte