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