• No se han encontrado resultados

Depuraci´on declarativa de respuestas incorrectas mediante ´arboles de

Parte II: T´ ecnicas de Depuraci´ on Declarativa para Programas en

5.5. Depuraci´on declarativa de respuestas incorrectas mediante ´arboles de

de prueba positivos abreviados 173

de testigo de la derivaci´on P `CPPC (D) G0⇐ S. Esta noci´on tiene inter´es debido a que pretendemos extraer los CT s necesarios para la diagnosis declarativa a partir de

PPT s construidos con pasos de inferencia del c´alculo CPPC (D). El siguiente resul-

tado muestra que existen sistemas de resoluci´on de objetivos CPPC (D)-admisibles: Teorema 12 (Sistemas de Resoluci´on de Objetivos CPPC (D)-admisibles)

Los c´alculos de resoluci´on de objetivos CLNC (D) y CDNC (D) presentados en el Cap´ıtulo 4 son CPPC (D)-admisibles.

Demostraci´on 17 La demostraci´on se obtiene directamente por los teoremas de

correcci´on de los c´alculos CLNC (D) y CDNC (D) presentados en el Cap´ıtulo 4 con respecto a la l´ogica para la reescritura con restricciones CRWL(D). Basta tener en cuenta que la deducci´on en CPPC (D) comienza con la aplicaci´on de la regla

EX para eliminar las posibles variables existenciales de la respuesta computada. A

continuaci´on se aplican las reglas del c´alculo CRWL(D), que son las mismas que las del c´alculo CPPC (D), con la ´unica diferencia de que ahora indicamos expl´ıcitamente el c-hecho utilizado en la aplicaci´on de la regla DFP, que antes quedaba oculto porque

no era necesario.

2

A la vista de este resultado, resulta razonable asumir tambi´en la CPPC (D)-admisibi- lidad para aquellos sistemas de resoluci´on de objetivos que han sido implementados, como es el caso de Curry [Han06] y de T OY [ALR07], y cuyos modelos de c´omputo est´an basados en estrechamiento perezoso con restricciones.

5.5.

Depuraci´on declarativa de respuestas incorrectas

mediante ´arboles de prueba positivos abreviados

Estamos ya en condiciones de presentar el m´etodo de diagnosis declarativa de res- puestas incorrectas en el esquema CFLP(D) y de probar su correcci´on. Los resultados obtenidos pueden ser aplicados a cualquier sistema de resoluci´on de objetivos que sea

CPPC (D)-admisible. En primer lugar, probamos que la observaci´on de un s´ıntoma

de error implica la existencia de alg´un error en el programa:

Teorema 13 (S´ıntomas de Error) Asumamos que un sistema de resoluci´on de

objetivos CPPC (D)-admisible computa S como respuesta para el objetivo inicial G0

usando el programa P. Si S es incorrecta con respecto a la interpretaci´on pretendida I del usuario entonces alguna regla de programa perteneciente a P es incorrecta con respecto a I.

174 5. Depuraci´on declarativa de respuestas incorrectas Demostraci´on 18 Debido a la CPPC (D)-admisibilidad del sistema de resoluci´on

de objetivos sabemos que P `CP P C(D) G0 ⇐ S. Entonces, a partir del Teorema 11

se tiene que P |=D G0 ⇐ S, es decir, que SolD(S) ⊆ SolJ(G0) para cada J |=D P.

Puesto que S es incorrecto con respecto a la interpretaci´on pretendida del usuario

I, ha de darse el caso de que SolD(S) 6⊆ SolI(G0), debido al apartado (1) de la

Definici´on 29. Por tanto, podemos concluir que la interpretaci´on pretendida I no es un modelo de P. Entonces, por el apartado (2) de la Definici´on 29, alguna regla de

programa (f tn→ t ⇐ P 2 ∆) perteneciente a P no es v´alida en I.

2

El teorema anterior no proporciona un m´etodo pr´actico para poder encontrar una regla de programa err´onea. Como se explic´o al comienzo de este cap´ıtulo, un m´etodo de diagnosis declarativo deber´ıa tratar de encontrar la regla de programa err´onea inspeccionando un CT . Con este fin, en esta secci´on vamos a proponer el uso de ´arboles de prueba CPPC (D) abreviados como CT s. Puesto que la regla DFP es la

´

unica regla de inferencia en el c´alculo CPPC (D) que realmente depende del pro- grama, los ´arboles de prueba abreviados omitir´an los pasos de inferencia que est´en relacionados con cualquier otra regla del c´alculo CPPC (D). De manera m´as precisa, dado un PPT T , su ´arbol de prueba positivo abreviado APPT sobre D (del ingl´es,

Abbreviated Positive Proof Tree), queda definido como sigue:

La ra´ız del AT es la ra´ız de T .

Los hijos de un nodo N en AT son los descendientes m´as pr´oximos de N en T , los cuales se corresponden con c-hechos con caja introducidos por pasos DFP

de inferencia.

Un nodo en un APPT se denomina nodo cr´ıtico si y s´olo si la c-sentencia en el nodo no es v´alida en la interpretaci´on pretendida I del programa, mientras que todas las c-sentencias en los nodos hijos son v´alidas en I.

La Figura 5.4 muestra el APPT asociado al PPT de la Figura 5.3. El ´unico nodo incorrecto es el que se muestra rodeado por una caja doble, revelando as´ı que la forma err´onea de la ´ultima regla de programa para check, es decir, check [X, Y |Zs]

→ 3 ⇐ X /= Y (v´ease el Ejemplo 20) es incorrecta con respecto a la interpretaci´on

pretendida del usuario.

Nuestro ´ultimo teorema garantiza que la diagnosis declarativa con APPT s usada como CT s conduce a la detecci´on correcta de errores de programa.

Teorema 14 (Diagnosis Declarativa de Respuestas Incorrectas) Bajo las

suposiciones del Teorema 13, cualquier APPT que sirva de testigo para P `CP P C(D)

5.5 Depuraci´on declarativa de respuestas incorrectas mediante ´arboles

de prueba positivos abreviados 175

check (f rom A) == B ⇐ ∃C. (A > 0 ∧ A − 1 →! C ∧ C > 0 ∧ A /= C 2 {B 7→ 3}) check4[A, C|⊥] → 3 ⇐ A > 0 ∧ A − 1 →! C ∧ C > 0 ∧ A /= C f rom1A → [A, C|⊥] ⇐ A > 0 ∧ A − 1 →! C ∧ C > 0 ∧ A /= C f rom1C → [C|⊥] ⇐ A > 0 ∧ A − 1 →! C ∧ C > 0 ∧ A /= C Ã Ã Ã Ã Ã Ã Ã Ã Ã Ã ``````````

Figura 5.4: Un ´arbol de prueba positivo abreviado en CPPC (R)

resoluci´on de objetivos) tiene alg´un nodo cr´ıtico. M´as a´un, cada nodo cr´ıtico apunta a una regla de programa perteneciente a P que es incorrecta en la interpretaci´on pretendida del usuario.

Demostraci´on 19 Sea T un PPT que sirve de testigo a la deducci´on P `CP P C(D)

G0 ⇐ S y sea AT el correspondiente APPT . Gracias a la completitud d´ebil

de la depuraci´on declarativa (v´ease [Nai97]), AT tiene alg´un nodo cr´ıtico. De-

mostramos en primer lugar que cualquier nodo cr´ıtico N de AT se corresponde con un nodo con caja introducido en T mediante una aplicaci´on de la CPPC (D)-

inferencia DFP, el cual es tambi´en un nodo cr´ıtico en T . Sea N cualquier nodo

cr´ıtico de AT y N0

1, . . . , Np0 los hijos de N en AT , y sean ϕ, ϕ0j (1 ≤ j ≤ p) las

c-sentencias que etiquetan a N y a los N0

j. Como N es un nodo cr´ıtico, todas las ϕ0j

son v´alidas en I mientras que ϕ es inv´alida en I. Debido a la construcci´on de AT a partir de T , hay dos posibles casos para la relaci´on entre N y los N0

j en T :

Caso 1: N es la ra´ız de T y Nj0 son los descendientes independientes m´as cercanos de N en T que son nodos con caja.

Caso 2: N es un nodo con caja de T y N0

j son los descendientes independientes

m´as cercanos de N en T que son nodos con caja.

En el Caso 1, todos los pasos de inferencia que van desde ϕ01, . . . , ϕ0m a ϕ en T

podr´ıan usar una CPPC (D)-inferencia distinta de DFP. Como se ha mostrado en

el Teorema 11, todas las reglas de inferencia en CPPC (D), con la sola excepci´on de

DFP, preservan la validez en interpretaciones arbitrarias. Como todas las ϕ0j son

v´alidas en I pero ϕ no lo es, este caso es imposible. En el Caso 2, cada uno de los

hijos Ni (1 ≤ i ≤ m) de N en T est´a etiquetado mediante alguna c-sentencia ϕi, la

cual se sigue de ϕ01, . . . , ϕ0j por medio de CPPC (D)-inferencias distintas de DFP,

preservando as´ı la validez en interpretaciones arbitrarias. En consecuencia, ϕi es

176 5. Depuraci´on declarativa de respuestas incorrectas

Examinando ahora el nodo con caja N en T encontramos que:

(1) N est´a etiquetado por un c-hecho f tn → s ⇐ Π, que es inv´alido en I. Por

tanto, I 6|=D f tn→ s ⇐ Π y entonces SolD(Π) 6⊆ SolI(f tn → s).

(2) N tiene hijos etiquetados por P 2 ∆ ⇐ Π que son v´alidos en I. En conse-

cuencia, I |=D P 2 ∆ ⇐ Π y entonces SolD(Π) ⊆ SolI(P 2 ∆).

(3) N tiene un hijo etiquetado mediante r → s ⇐ Π que es v´alido en I. Por tanto,

I |=D r → s ⇐ Π y entonces SolD(Π) ⊆ SolI(r → s).

(4) (f tn→ r ⇐ P 2 ∆) ∈ [P]. Por la definici´on de [P], ha de existir una regla

de programa con restricciones (f t0n→ r0 ⇐ P0 2 ∆0) ∈ P y una sustituci´on θ

∈ SubD tal que (f t0n→ r0 ⇐ P0 2 ∆0)θ ≡ (f tn→ r ⇐ P 2 ∆) ∈ [P]⊥.

Sea η ∈ SolD(Π) una soluci´on de Π elegida arbitrariamente. Entonces, de acuerdo

con los apartados (2) y (3), η ∈ SolI(P 2 ∆) (o equivalentemente, por el apartado

(4), θη ∈ SolI(P0 2 ∆0)) y η ∈ SolI(r → s) (o equivalentemente tambi´en, por el

apartado (4), η ∈ SolI(r0θ → s)). Por la Definici´on 28, se tiene que I ``

D (P 2 ∆)η

(o equivalentemente, por el apartado (4), I ``D (P0 2 ∆0)θη) e I ``D rη → sη (o

equivalentemente tambi´en, por el apartado (4), I ``D r0θη → sη). Puesto que η es

una valoraci´on, θη ∈ SubD es una sustituci´on cerrada, sη ∈ P atD es un patr´on

cerrado y (f t0n→ r0 ⇐ P0 2 ∆0)θη es cerrado. En esta situaci´on, si suponemos que

la regla de programa con restricciones (f t0n→ r0 ⇐ P0 2 ∆0) ∈ P es v´alida en I, de

acuerdo con el apartado (2) de la Definici´on 13 en el Cap´ıtulo 3, se obtiene que I ``D

(f t0n)θη → sη (o equivalentemente, por el apartado (4) anterior, I ``D (f tn)η → sη)

y entonces η ∈ SolI(f tn → s). Se concluye as´ı que SolD(Π) ⊆ SolI(f tn → s), en

contradicci´on con el apartado (1) anterior. Por consiguiente, la regla de programa

(f t0n→ r0 ⇐ ∆0) en P es incorrecta en I.

2

5.6.

Una herramienta para el diagn´ostico declarativo de